Nesta página, descrevemos como executar e se conectar ao AlloyDB Omni depois de implantá-lo no cluster do Kubernetes.
As instruções específicas do Kubernetes nesta página pressupõem familiaridade básica com a operação do Kubernetes.
Executar o AlloyDB Omni
Os procedimentos usados para executar o AlloyDB Omni dependem de você estar executando o AlloyDB Omni em um cluster do Kubernetes.
Iniciar o AlloyDB Omni
Inicie um cluster de banco de dados interrompido definindo isStopped como false na definição do manifesto.
É possível fazer isso na linha de comando usando kubectl:
kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME \
-p '{"spec":{"primarySpec":{"isStopped":false}}}' --type=merge -n DB_CLUSTER_NAMESPACESubstitua:
DB_CLUSTER_NAME: o nome do cluster de banco de dados, por exemplo,my-db-cluster.DB_CLUSTER_NAMESPACE(opcional): o namespace em que você criou o cluster de banco de dados, por exemplo,my-db-cluster-namespace.
Verificar o status do AlloyDB Omni
kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -n DB_CLUSTER_NAMESPACESubstitua:
DB_CLUSTER_NAME: o nome do cluster de banco de dados.DB_CLUSTER_NAMESPACE(opcional): o namespace em que você criou o cluster de banco de dados.
Interromper o AlloyDB Omni
Para interromper um cluster de banco de dados, defina isStopped como true na definição do manifesto.
É possível fazer isso na linha de comando usando kubectl:
kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -p '{"spec":{"primarySpec":{"isStopped":true}}}' --type=merge -n DB_CLUSTER_NAMESPACESubstitua:
DB_CLUSTER_NAME: o nome do cluster de banco de dados, por exemplo,my-db-cluster.DB_CLUSTER_NAMESPACE(opcional): o namespace em que você criou o cluster de banco de dados, por exemplo,my-db-cluster-namespace.
Conectar-se ao AlloyDB Omni em execução no Kubernetes
O operador do AlloyDB Omni no Kubernetes permite conexões com o cluster de banco de dados no mesmo cluster do Kubernetes, usando certificados para autenticação, se quiser.
Conectar usando o psql pré-instalado
É possível fazer uma conexão de teste usando um cliente psql já instalado no
pod que executa o banco de dados.
Para fazer isso, execute os seguintes 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
Substitua DB_CLUSTER_NAME pelo nome do cluster de banco de dados. É o mesmo nome de cluster de banco de dados que você declarou ao criá-lo.
Você pode pular a definição de DB_CLUSTER_NAMESPACE se tiver criado o cluster de banco de dados no namespace padrão.
Depois de inserir o comando, o servidor de banco de dados vai pedir uma senha.
Insira a senha cuja versão codificada em base64
você forneceu como um secret do Kubernetes ao criar o cluster
de banco de dados. Por exemplo, se você
criou o cluster de banco de dados com um secret de Q2hhbmdlTWUxMjM=, a
senha de login a ser usada aqui é ChangeMe123.
O operador do AlloyDB Omni conecta você ao servidor como a função do usuário postgres e mostra um prompt de comando postgres=#. Agora é possível executar comandos psql e consultas SQL.
Para sair do psql, execute o comando \q.
Conectar de um pod separado no mesmo cluster
Por padrão, o pod que executa o cluster de banco de dados do AlloyDB Omni permite conexões do mesmo cluster do Kubernetes. Como prática recomendada, recomendamos proteger todas as conexões com o cluster de banco de dados usando TLS.
Para fornecer seu próprio certificado TLS do servidor, especifique um secret de certificado ao configurar o cluster de banco de dados. Se você não especificar um Secret de certificado, o operador do AlloyDB Omni Kubernetes vai criar um Secret de certificado TLS para você com base em um certificado assinado por uma autoridade certificadora autoassinada. Em qualquer um dos casos, é possível exigir que o pod do cliente de banco de dados faça a validação do certificado em todas as conexões, garantindo a segurança do TLS.
Para estabelecer conexões de banco de dados seguras usando TLS, faça o seguinte:
No manifesto que define o pod que faz as conexões de cliente, especifique um segredo de certificado TLS. Pode ser um destes:
Um secret de certificado TLS que você já criou no cluster do Kubernetes. Para mais informações sobre como trabalhar com secrets de certificados TLS no Kubernetes, consulte Secrets TLS.
O secret de certificado padrão que o operador do AlloyDB Omni no Kubernetes cria para você, chamado
DB_CLUSTER_NAME-ca-cert, se você não especificar um secret TLS como parte do manifesto do cluster de banco de dados.
Sempre que o pod cliente se conectar ao cluster de banco de dados, ele precisará definir as seguintes variáveis de ambiente antes de estabelecer a conexão:
Defina
PGSSLMODEcomo"verify-ca".Defina
PGSSLROOTCERTcomo o caminho absoluto, no sistema de arquivos do pod do cliente, do arquivoca.crtrelevante.
O exemplo de manifesto a seguir mostra como configurar um pod que instala a
imagem oficial do PostgreSQL, que inclui o cliente de linha de comando psql. O exemplo pressupõe que você não especifica nenhuma configuração secreta do TLS no manifesto que define o cluster de banco de dados. Portanto, o operador do AlloyDB Omni no Kubernetes usa o secret TLS padrão, chamado 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
Substitua:
DB_CLUSTER_NAME: o nome do cluster de banco de dados. É o mesmo nome de cluster de banco de dados que você declarou ao criá-lo.DB_CLUSTER_NAMESPACE(opcional): o namespace em que você criou o cluster de banco de dados.
Agora você pode usar o pod para se conectar com segurança ao cluster de banco de dados seguindo estas etapas:
Determine o endereço IP interno do cluster de banco de dados:
kubectl get dbclusters.alloydbomni.dbadmin.goog -n DB_CLUSTER_NAMESPACEA saída será assim:
NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE DB_CLUSTER_NAME IP_ADDRESS Ready DBClusterReadyAnote
IP_ADDRESSe use na próxima etapa.Use
psqlpara se conectar ao cluster do pod do cliente, definindo as variáveis de ambiente que ativam e exigem a verificação do certificado TLS:kubectl exec -it postgres -n DB_CLUSTER_NAMESPACE -- bashPGSSLMODE="verify-ca" PGSSLROOTCERT=/DB_CLUSTER_NAME-ca-cert/ca.crt psql -h IP_ADDRESS -p 5432 -U postgres -d postgresSubstitua
IP_ADDRESSpelo endereço IP interno que você determinou na etapa anterior.