En esta página, se incluyen instrucciones específicas de Kubernetes que suponen un conocimiento básico del funcionamiento de Kubernetes.
Ejecuta AlloyDB Omni
Los procedimientos que usas para ejecutar AlloyDB Omni dependen de si lo ejecutas 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.
Cómo iniciar AlloyDB Omni
Un solo servidor
Para iniciar un contenedor de AlloyDB Omni detenido, ejecuta el comando docker container start
o el comando podman container start
:
Docker
docker container start CONTAINER_NAME
Reemplaza CONTAINER_NAME
por el nombre que le asignaste al contenedor de AlloyDB Omni cuando lo instalaste.
Podman
podman container start CONTAINER_NAME
Reemplaza CONTAINER_NAME
por el nombre que le asignaste al contenedor de AlloyDB Omni cuando lo instalaste.
Kubernetes
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
: 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
Un solo servidor
Para verificar el estado de todos los contenedores que tienes en ejecución, ejecuta el comando docker container ls
o el comando podman container ls
:
Docker
docker container ls
Podman
podman container ls
Si tu contenedor de AlloyDB Omni se está ejecutando, su nombre aparecerá en la columna NAMES
de la tabla de salida. La fila correspondiente resume el estado del contenedor.
Si el nombre de tu contenedor no aparece en la columna NAMES
, significa que tu instancia de AlloyDB Omni no se está ejecutando.
Kubernetes
kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -n DB_CLUSTER_NAMESPACE
Reemplaza lo siguiente:
DB_CLUSTER_NAME
: El nombre de tu clúster de base de datosDB_CLUSTER_NAMESPACE
(opcional): Es el espacio de nombres en el que creaste tu clúster de base de datos.
Detén AlloyDB Omni
Un solo servidor
Para detener un contenedor de AlloyDB Omni, ejecuta el comando docker container stop
o el comando podman container stop
:
Docker
docker container stop CONTAINER_NAME
Reemplaza CONTAINER_NAME
por el nombre que le asignaste al contenedor de AlloyDB Omni cuando lo instalaste.
Podman
podman container stop CONTAINER_NAME
Reemplaza CONTAINER_NAME
por el nombre que le asignaste al contenedor de AlloyDB Omni cuando lo instalaste.
Kubernetes
Para detener un clúster de base de datos, establece isStopped
en true
en la definición de su 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
: 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 un solo servidor
El contenedor de AlloyDB Omni incluye su propia copia de psql
que te permite abrir una sesión interactiva de shell de SQL con su servidor de bases 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 conectarte a un clúster de base de datos de AlloyDB Omni que se ejecuta en un clúster de Kubernetes, consulta Conéctate a AlloyDB Omni que se ejecuta en Kubernetes.
Conéctate con psql
en un contenedor
Para conectarte al servidor de la base de datos de AlloyDB Omni con su propia copia en contenedor de psql
, ejecuta el siguiente comando:
Docker
docker exec -it CONTAINER_NAME psql -U postgres
Reemplaza CONTAINER_NAME
por el nombre que le asignaste al contenedor de AlloyDB Omni cuando lo instalaste.
Podman
podman exec -it CONTAINER_NAME psql -U postgres
Reemplaza CONTAINER_NAME
por el nombre que le asignaste al contenedor de AlloyDB Omni cuando lo instalaste.
Este comando te conecta al servidor con el rol de usuario postgres
y muestra un símbolo del sistema postgres=#
. Ahora puedes ejecutar comandos de psql
y consultas de SQL.
Para salir de psql
, ejecuta el comando \q
.
Conéctate 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 la base de datos de AlloyDB Omni, expón la red del contenedor de Docker de AlloyDB Omni a tu máquina anfitrión agregando --network=host
o -p 5432:5432
a tu comando docker run
o podman run
cuando inicies AlloyDB Omni.
Para seleccionar un número de puerto personalizado, usa -p [HOST_PORT]:5432
cuando inicies AlloyDB Omni. Luego, usa cualquier cliente o biblioteca de código compatible con PostgreSQL para conectarte al puerto 5432
o al número de puerto personalizado que especificaste.
Después de conectarte al servidor de la base de datos, puedes definir, consultar y modificar tus bases de datos con consultas DML y SQL a través de los protocolos de comunicación estándar de PostgreSQL.
Dado que AlloyDB Omni se ejecuta en tu propio entorno, puedes controlar cómo te conectas a él. Esto incluye permitir o restringir el acceso a la red a este servicio según las necesidades de tu aplicación, al igual que lo harías con un servidor de PostgreSQL común.
Conéctate a AlloyDB Omni que se ejecuta en Kubernetes
El operador de Kubernetes de AlloyDB Omni permite conexiones al clúster de la base de datos desde el mismo clúster de Kubernetes, y, de manera opcional, usa certificados para la autenticación.
Conéctate con el psql
preinstalado
Puedes realizar una conexión de prueba con un cliente psql
ya 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 del 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 la 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 debes usar aquí es ChangeMe123
.
El operador de AlloyDB Omni te conecta al servidor como el rol de usuario postgres
y muestra un símbolo del sistema postgres=#
. Ahora puedes ejecutar comandos de psql
y consultas en SQL.
Para salir de psql
, ejecuta el comando \q
.
Conéctate desde un Pod independiente en el mismo clúster
De forma predeterminada, el pod que ejecuta el clúster de la base 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 Secret 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 creará 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 cliente de la base de datos requiera la validación del certificado en cada conexión, lo que garantiza la seguridad de TLS.
Para establecer conexiones seguras a la 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 del certificado TLS. Puede ser uno de los siguientes:
Un Secret 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 conecte 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 del cliente, del archivoca.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 de secreto 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 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 del clúster de la 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 la base de datos.
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 -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 úsalo en el siguiente paso.Usa
psql
para conectarte a tu clúster desde el pod del cliente y configura 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.