En esta página, se describe cómo ejecutar AlloyDB Omni y conectarse a él después de instalarlo en tu propia máquina o implementarlo en tu clúster de Kubernetes.
Antes de comenzar
Servidor único
La mayoría de los comandos de esta página usan la CLI de AlloyDB Omni.
Para instalar esta herramienta de línea de comandos en tu máquina, consulta Cómo instalar la CLI de AlloyDB Omni.
Kubernetes
Debes instalar el operador de Kubernetes de AlloyDB Omni en tu clúster de Kubernetes para realizar las tareas que se describen en esta página.
En las instrucciones específicas de Kubernetes de esta página, se da por sentado que conoces el funcionamiento básico de Kubernetes.
Ejecuta AlloyDB Omni
Los procedimientos que usas para ejecutar AlloyDB Omni dependen de si lo haces en un contenedor en un solo servidor o en un clúster de Kubernetes. En esta sección, se dividen las instrucciones entre estos estilos de implementación.
Servidor único
Cuando se instala AlloyDB Omni, se configura un servicio del sistema llamado alloydb-dataplane
que se inicia cada vez que se inicia la máquina.
Para el control y la supervisión básicos de AlloyDB Omni, usa el comando sudo alloydb
, como se muestra en las siguientes secciones.
Kubernetes
Para controlar y supervisar AlloyDB Omni, actualiza los manifiestos de tu clúster de Kubernetes, como se muestra en las siguientes secciones.
Inicia AlloyDB Omni
Servidor único
sudo alloydb database-server start
Para realizar una conexión de prueba, consulta Cómo conectarse con el psql
en contenedor.
Kubernetes
Para iniciar un clúster de base de datos detenido, establece isStopped
en false
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
Verifica el estado de AlloyDB Omni
Servidor único
sudo alloydb database-server status
Kubernetes
kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME
Reemplaza DB_CLUSTER_NAME
por el nombre del clúster de tu base de datos.
Detén AlloyDB Omni
Servidor único
sudo alloydb database-server stop
Kubernetes
Para detener un clúster de bases de datos, establece isStopped
en 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
Inhabilita el inicio
Ejecutar el siguiente comando evita que AlloyDB Omni se inicie automáticamente cuando se inicia la máquina.
Servidor único
sudo systemctl disable alloydb-dataplane
Kubernetes
Esta tarea no se aplica cuando se usa el operador de Kubernetes de AlloyDB Omni.
Cómo volver a habilitar el inicio
Servidor único
sudo systemctl enable alloydb-dataplane
Kubernetes
Esta tarea no se aplica cuando se usa el operador de Kubernetes de AlloyDB Omni.
Cómo conectarse a AlloyDB Omni que se ejecuta en un solo servidor
El contenedor de AlloyDB Omni incluye su propia copia de psql
que te permite abrir una sesión interactiva de SQL Shell con su servidor de base de datos.
También puedes conectarte a AlloyDB Omni desde fuera del contenedor con el software compatible con PostgreSQL que elijas.
Para obtener información sobre cómo conectarse a un clúster de bases de datos de AlloyDB Omni que se ejecuta en un clúster de Kubernetes, consulta Cómo conectarse a AlloyDB Omni que se ejecuta en Kubernetes.
Conéctate con el psql
en contenedor
Para conectarte al servidor de bases de datos de AlloyDB Omni con su propia copia de psql
en contenedor, ejecuta el siguiente comando:
Servidor único
docker exec -it pg-service psql -h localhost -U postgres
Este comando te conecta al servidor como el rol de usuario postgres
y muestra un mensaje de comando postgres=#
. Ahora puedes ejecutar comandos psql
y consultas SQL.
Para salir de psql
, ejecuta el comando \q
.
Cómo conectarse con tus propias aplicaciones
Cualquier aplicación que funcione con PostgreSQL también puede funcionar con AlloyDB Omni, sin necesidad de realizar modificaciones.
Para conectarte al servidor de base de datos de AlloyDB Omni, usa cualquier cliente o biblioteca de código compatible con PostgreSQL para conectarte al puerto 5432
(el puerto de servidor de base de datos de PostgreSQL predeterminado) de la máquina que ejecuta AlloyDB Omni.
Esto funciona porque el contenedor de AlloyDB Omni expone su propio puerto 5432
al mismo puerto de la máquina en la que se ejecuta.
Después de conectarte al servidor de bases de datos, puedes definir, consultar y modificar tus bases de datos con consultas DML y SQL mediante protocolos de comunicación estándar de PostgreSQL.
Como AlloyDB Omni se ejecuta en tu propio entorno, puedes controlar cómo te conectas a él. Esto incluye permitir o restringir el acceso de red a este servicio según las necesidades de tu aplicación, tal como lo harías con un servidor PostgreSQL normal.
Cómo conectarse a AlloyDB Omni que se ejecuta en Kubernetes
El operador de Kubernetes de AlloyDB Omni permite conexiones al clúster de bases de datos desde el mismo clúster de Kubernetes, de manera opcional, con certificados para la autenticación.
Conéctate con el psql
preinstalado
Puedes establecer 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
Reemplaza DB_CLUSTER_NAME
por el nombre del clúster de tu base de datos. Es el mismo nombre de clúster de base de datos que declaraste cuando lo creaste.
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 secreto de Kubernetes cuando creaste el clúster de bases de datos. Por ejemplo, si creaste el clúster de bases de datos con un secreto de Q2hhbmdlTWUxMjM=
, la contraseña de acceso que se debe usar aquí es ChangeMe123
.
El operador Omni de AlloyDB te conecta al servidor como el rol de usuario postgres
y muestra un símbolo del sistema postgres=#
. Ahora puedes ejecutar comandos psql
y consultas SQL.
Para salir de psql
, ejecuta el comando \q
.
Cómo conectarse desde un pod independiente en el mismo clúster
De forma predeterminada, el pod que ejecuta el clúster de bases de datos de AlloyDB Omni permite conexiones desde el mismo clúster de Kubernetes. Como práctica recomendada, te recomendamos que protejas todas las conexiones al clúster de bases de datos con TLS.
Para proporcionar tu propio certificado TLS del servidor, especifica un secreto de certificado cuando configures el clúster de bases de datos. Si no especificas un secreto de certificado, el operador de Kubernetes de AlloyDB Omni creará uno para ti, basado en un certificado firmado por una autoridad certificadora autofirmada. En cualquier caso, puedes exigir 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 de bases de datos seguras con TLS, realiza las siguientes acciones:
En el manifiesto que define el pod que establece 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 bases de datos.
Cada vez que tu pod cliente se conecta al clúster de bases 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 cliente, del archivoca.crt
relevante.
En el siguiente manifiesto de ejemplo, se muestra cómo configurar un pod que instale 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 bases 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
Reemplaza DB_CLUSTER_NAME
por el nombre del clúster de tu base 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 al clúster de bases de datos siguiendo estos pasos:
Determina la dirección IP interna de tu clúster de bases de datos:
kubectl get dbclusters.alloydbomni.dbadmin.goog
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 úsalo en el siguiente paso.Usa
psql
para conectarte a tu clúster desde el pod cliente y establece 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
Reemplaza
IP_ADDRESS
por la dirección IP interna que determinaste en el paso anterior.