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"
aPGSSLMODE
.Asigna a
PGSSLROOTCERT
la ruta absoluta en el sistema de archivos del pod del cliente del archivoca.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:
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.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.