Skip to main content

Aiven Operator for Kubernetes®

Manage Aiven infrastructure with Aiven Operator for Kubernetes® by using Custom Resource Definitions (CRD).

The Aiven Kubernetes Operator documentation includes an API reference and example usage for the resources.

Get started​

Take your first steps by configuring the Aiven Operator and deploying a PostgreSQL® database.

Prerequisites​

Deploy Aiven for PostgreSQL®​

This example creates an Aiven for PostgreSQL service using the operator's custom resource:

  1. Create a file named pg-sample.yaml and add the following:

    apiVersion: aiven.io/v1alpha1
    kind: PostgreSQL
    metadata:
    name: pg-sample
    spec:

    # Gets the token from the `aiven-token` secret
    authSecretRef:
    name: aiven-token
    key: token

    # Outputs the PostgreSQL connection information to the `pg-connection` secret
    connInfoSecretTarget:
    name: pg-connection

    project: PROJECT-NAME

    cloudName: google-europe-west1
    plan: startup-4

    maintenanceWindowDow: friday
    maintenanceWindowTime: 23:00:00

    # PostgreSQL configuration
    userConfig:
    pg_version: '16'

    Where PROJECT-NAME is the name of the Aiven project to create the service in.

  2. To apply the resource, run:

    kubectl apply -f pg-sample.yaml
  3. Verify the status of your service by running:

    kubectl get postgresqls.aiven.io pg-sample

    Once the STATE field is RUNNING, your service is ready for use.

The connection information is automatically created by the operator within a Kubernetes Secret named pg-connection. For PostgreSQL, the connection information is the service URI.

Use the service​

When the service is running, you can deploy a pod to test the connection to PostgreSQL from Kubernetes.

  1. Create a file named pod-psql.yaml with the following:

    apiVersion: v1
    kind: Pod
    metadata:
    name: psql-test-connection
    spec:
    restartPolicy: Never
    containers:
    - image: postgres:11-alpine
    name: postgres
    command: ['psql', '$(DATABASE_URI)', '-c', 'SELECT version();']

    # The pg-connection secret becomes environment variables
    envFrom:
    - secretRef:
    name: pg-connection
  2. Apply the resource to create the pod and test the connection by running:

    kubectl apply -f pod-psql.yaml
  3. To check the logs, run:

    kubectl logs psql-test-connection

Clean up​

  1. To destroy the resources, run:

    kubectl delete pod psql-test-connection
    kubectl delete postgresqls.aiven.io pg-sample
  2. To remove the operator and cert-manager, run:

    helm uninstall aiven-operator
    helm uninstall aiven-operator-crds
    kubectl delete -f https://github.com/jetstack/cert-manager/releases/latest/download/cert-manager.yaml