Ejecutar y conectarse a AlloyDB Omni

Selecciona una versión de la documentación:

En esta página se describe cómo ejecutar AlloyDB Omni y conectarse a él después de desplegarlo en tu clúster de Kubernetes.

Antes de empezar

Para realizar las tareas que se describen en esta página, debes instalar el operador de Kubernetes de AlloyDB Omni en tu clúster de Kubernetes.

Las instrucciones específicas de Kubernetes de esta página presuponen que tienes conocimientos básicos sobre el funcionamiento de Kubernetes.

Ejecutar AlloyDB Omni

Los procedimientos que uses para ejecutar AlloyDB Omni dependen de si lo haces en un clúster de Kubernetes.

Para controlar y monitorizar AlloyDB Omni, actualiza los manifiestos de tu clúster de Kubernetes, tal como se muestra en las siguientes secciones.

Iniciar AlloyDB Omni

Para iniciar un clúster de base de datos detenido, asigna el valor false a isStopped en su definición de manifiesto.

Puedes hacerlo en la línea de comandos con kubectl:

  kubectl patch dbclusters.alloydbomni.dbadmin.goog dbcluster-sample \
  -p '{"spec":{"primarySpec":{"isStopped":false}}}' --type=merge

Comprobar el estado de AlloyDB Omni

kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME

Sustituye DB_CLUSTER_NAME por el nombre de tu clúster de bases de datos.

Detener AlloyDB Omni

Kubernetes

Para detener un clúster de bases de datos, asigna el valor isStopped a true en su definición de manifiesto.

Puedes hacerlo en la línea de comandos con kubectl:

  kubectl patch dbclusters.alloydbomni.dbadmin.goog dbcluster-sample -p '{"spec":{"primarySpec":{"isStopped":true}}}' --type=merge

Conectarse a AlloyDB Omni que se ejecuta en Kubernetes

El operador de Kubernetes de AlloyDB Omni permite establecer conexiones con el clúster de base de datos desde el mismo clúster de Kubernetes. También se pueden usar certificados para la autenticación.

Conectarse mediante la psql preinstalada

Puedes hacer una conexión de prueba con un cliente psql que ya esté instalado en el pod que ejecuta la base de datos.

Para ello, ejecuta los siguientes comandos:

export DBPOD=`kubectl get pod --selector=alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME,alloydbomni.internal.dbadmin.goog/task-type=database -o jsonpath='{.items[0].metadata.name}'`
kubectl exec -ti $DBPOD -c database -- /bin/psql -h localhost -U postgres

Sustituye DB_CLUSTER_NAME por el nombre de tu clúster de bases de datos. Es el mismo nombre de clúster de base de datos que declaraste cuando lo creaste.

Después de introducir el comando, el servidor de la base de datos te pedirá una contraseña. Introduce la contraseña cuya versión codificada en base64 proporcionaste como secreto de Kubernetes al crear el clúster de base de datos. Por ejemplo, si has creado el clúster de base de datos con el secreto Q2hhbmdlTWUxMjM=, la contraseña de inicio de sesión que debes usar aquí es ChangeMe123.

El operador de AlloyDB Omni te conecta al servidor con el rol de usuario postgres y muestra un símbolo del sistema postgres=#. Ahora puedes ejecutar psql comandos y consultas SQL.

Para salir de psql, ejecuta el comando \q.

Conectarse desde un pod independiente del mismo clúster

El pod que ejecuta el clúster de base de datos de AlloyDB Omni permite conexiones desde el mismo clúster de Kubernetes de forma predeterminada. Te recomendamos que protejas todas las conexiones al clúster de bases de datos con TLS.

Para proporcionar tu propio certificado TLS de servidor, especifica un secreto de certificado al configurar tu clúster de base de datos. Si no especificas un secreto de certificado, el operador de Kubernetes de AlloyDB Omni creará un secreto de certificado TLS por ti, basado en un certificado firmado por una autoridad de certificación con firma automática. En ambos casos, puedes requerir que tu pod de cliente de base de datos valide el certificado en cada conexión para garantizar la seguridad de TLS.

Para establecer conexiones de bases de datos seguras mediante TLS, haz lo siguiente:

  • En el manifiesto que define el pod que realiza las conexiones de cliente, especifica un secreto de certificado TLS. Puede ser uno de los siguientes:

    • Un secreto de certificado TLS que ya has creado en tu clúster de Kubernetes. Para obtener más información sobre cómo trabajar con secretos de certificados TLS en Kubernetes, consulta Secretos de TLS.

    • El secreto de certificado predeterminado que crea el operador de Kubernetes de AlloyDB Omni por ti, llamado DB_CLUSTER_NAME-ca-cert, si no especificas un secreto de TLS como parte del manifiesto de tu clúster de bases de datos.

  • Cada vez que tu pod de cliente se conecte al clúster de bases de datos, debe definir las siguientes variables de entorno antes de establecer la conexión:

    • Asigna el valor "verify-ca" a PGSSLMODE.

    • Asigna a PGSSLROOTCERT la ruta absoluta en el sistema de archivos del pod del cliente del archivo ca.crt correspondiente.

El siguiente manifiesto de ejemplo muestra cómo configurar un pod que instala la imagen oficial de PostgreSQL, que incluye el cliente de línea de comandos psql. En el ejemplo se presupone que no se especifica ninguna configuración secreta de TLS en el manifiesto que define el clúster de la base de datos. Por lo tanto, el operador de Kubernetes de AlloyDB Omni usa el secreto TLS predeterminado, que se llama dbs-al-cert-DB_CLUSTER_NAME.

apiVersion: v1
kind: Pod
metadata:
  name: postgres
spec:
  containers:
  - image: "docker.io/library/postgres:latest"
    command:
      - "sleep"
      - "604800"
    imagePullPolicy: IfNotPresent
    name: db-client
    volumeMounts:
    - name: ca-cert
      mountPath: "/DB_CLUSTER_NAME-ca-cert"
      readOnly: true
  volumes:
  - name: ca-cert
    secret:
      secretName: dbs-al-cert-DB_CLUSTER_NAME
  restartPolicy: Always

Sustituye DB_CLUSTER_NAME por el nombre de tu clúster de bases de datos. Es el mismo nombre de clúster de base de datos que declaraste cuando lo creaste.

Ahora puedes usar el pod para conectarte de forma segura a tu clúster de base de datos siguiendo estos pasos:

  1. Determina la dirección IP interna de tu clúster de base de datos:

    kubectl get dbclusters.alloydbomni.dbadmin.goog

    La salida es similar a la siguiente:

    NAME              PRIMARYENDPOINT   PRIMARYPHASE   DBCLUSTERPHASE
    DB_CLUSTER_NAME   IP_ADDRESS        Ready          DBClusterReady
    

    Anota IP_ADDRESS y úsalo en el siguiente paso.

  2. Usa psql para conectarte a tu clúster desde el pod del cliente. Para ello, define las variables de entorno que habilitan y requieren la verificación del certificado TLS:

    kubectl exec -it postgres -- bash
    PGSSLMODE="verify-ca" PGSSLROOTCERT=/DB_CLUSTER_NAME-ca-cert/ca.crt psql -h IP_ADDRESS -p 5432 -U postgres -d postgres

    Sustituye IP_ADDRESS por la dirección IP interna que has determinado en el paso anterior.

Siguientes pasos