Ejecuta y conéctate 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 implementarlo en tu clúster de Kubernetes.

En las instrucciones específicas de Kubernetes de esta página, se supone que tienes conocimientos básicos sobre el funcionamiento de Kubernetes.

Ejecuta AlloyDB Omni

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

Inicia AlloyDB Omni

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

Puedes realizar esta acción en la línea de comandos con kubectl:

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

Reemplaza lo siguiente:

  • DB_CLUSTER_NAME: Es el nombre de este clúster de base de datos, por ejemplo, my-db-cluster.
  • DB_CLUSTER_NAMESPACE (opcional): Es el espacio de nombres en el que creaste este clúster de base de datos, por ejemplo, my-db-cluster-namespace.

Verifica el estado de AlloyDB Omni

  kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -n DB_CLUSTER_NAMESPACE

Reemplaza lo siguiente:

Detén AlloyDB Omni

Para detener un clúster de base de datos, establece isStopped en true en su definición de manifiesto.

Puedes realizar esta acción en la línea de comandos con kubectl:

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

Reemplaza lo siguiente:

  • DB_CLUSTER_NAME: Es el nombre de este clúster de base de datos, por ejemplo, my-db-cluster.
  • DB_CLUSTER_NAMESPACE (opcional): Es el espacio de nombres en el que creaste este clúster de base de datos, por ejemplo, my-db-cluster-namespace.

Conéctate a AlloyDB Omni que se ejecuta en Kubernetes

El operador de Kubernetes de AlloyDB Omni permite conexiones al clúster de base de datos desde el mismo clúster de Kubernetes, de manera opcional, con certificados para la autenticación.

Conéctate con psql preinstalado

Puedes realizar 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 -n DB_CLUSTER_NAMESPACE -o jsonpath='{.items[0].metadata.name}'`
kubectl exec -ti $DBPOD -n DB_CLUSTER_NAMESPACE -c database -- psql -h localhost -U postgres

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

Puedes omitir la configuración de DB_CLUSTER_NAMESPACE si creaste el clúster de base de datos en el espacio de nombres predeterminado.

Después de ingresar el comando, el servidor de base de datos te solicitará una contraseña. Ingresa la contraseña cuya versión codificada en Base64 proporcionaste como un secreto de Kubernetes cuando creaste el clúster de base de datos. Por ejemplo, si creaste el clúster de base de datos con un secreto de Q2hhbmdlTWUxMjM=, la contraseña de acceso que se usará aquí es ChangeMe123.

El operador de AlloyDB Omni te conecta al servidor como la postgres función de usuario y muestra un postgres=# símbolo del sistema. Ahora puedes ejecutar psql comandos y consultas de SQL.

Para salir de psql, ejecuta el comando \q.

Conéctate desde un pod independiente en el 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. Como práctica recomendada, te recomendamos proteger todas las conexiones al clúster de base de datos con TLS.

Para proporcionar tu propio certificado TLS del servidor, especifica un secreto de certificado cuando configures tu clúster de base de datos. Si no especificas un secreto de certificado, el operador de Kubernetes de AlloyDB Omni crea un secreto de certificado TLS por ti, basado en un certificado firmado por una autoridad certificadora autofirmada. En cualquier caso, puedes requerir que tu Pod de cliente de base de datos requiera la validación de certificados en cada conexión, lo que garantiza la seguridad de TLS.

Para establecer conexiones seguras de base de datos con TLS, realiza las siguientes acciones:

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

    • Un secreto de certificado TLS que ya creaste 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 el operador de Kubernetes de AlloyDB Omni crea para ti, llamado DB_CLUSTER_NAME-ca-cert, si no especificas un secreto de TLS como parte del manifiesto de tu clúster de base de datos.

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

    • Establece PGSSLMODE en "verify-ca".

    • Establece PGSSLROOTCERT en la ruta de acceso absoluta, en el sistema de archivos del pod de cliente, del archivo ca.crt pertinente.

En el siguiente manifiesto de ejemplo, se 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 supone que no especificas ninguna configuración secreta de TLS en el manifiesto que define tu clúster de base de datos. Por lo tanto, el operador de Kubernetes de AlloyDB Omni usa el secreto de TLS predeterminado, que se llama dbs-al-cert-DB_CLUSTER_NAME.

apiVersion: v1
kind: Pod
metadata:
  name: postgres
  namespace: DB_CLUSTER_NAMESPACE
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

Reemplaza lo siguiente:

  • DB_CLUSTER_NAME: Es el nombre de tu clúster de base de datos. Es el mismo nombre de clúster de base de datos que declaraste cuando lo creaste.
  • DB_CLUSTER_NAMESPACE (opcional): Es el espacio de nombres en el que creaste el clúster de base de datos.

Ahora puedes usar el pod para conectarte de forma segura a tu clúster de base de datos con los siguientes pasos:

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

    kubectl get dbclusters.alloydbomni.dbadmin.goog -n DB_CLUSTER_NAMESPACE

    El resultado se ve de la manera siguiente:

    NAME              PRIMARYENDPOINT   PRIMARYPHASE   DBCLUSTERPHASE
    DB_CLUSTER_NAME   IP_ADDRESS        Ready          DBClusterReady
    

    Toma nota de IP_ADDRESS y úsala en el siguiente paso.

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

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

    Reemplaza IP_ADDRESS por la dirección IP interna que determinaste en el paso anterior.

¿Qué sigue?