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 que você tenha 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 esse 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.
O resultado será o seguinte:
NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE
DB_CLUSTER_NAME IP_ADDRESS Ready DBClusterReady
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 esse 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 de dentro do mesmo cluster do Kubernetes, usando opcionalmente certificados para autenticação.
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.
Se você criou o cluster de banco de dados no namespace padrão, pule a configuração de DB_CLUSTER_NAMESPACE.
Depois de inserir o comando, o servidor de banco de dados vai solicitar uma senha.
Digite 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 o função do usuário postgres e exibe um prompt de comando postgres=#. Agora é possível executar comandos psql e consultas SQL.
Para sair de psql, execute o comando \q.
Conectar de um pod separado no mesmo cluster
O pod que executa o cluster de banco de dados do AlloyDB Omni permite conexões do mesmo cluster do Kubernetes, por padrão. Como prática recomendada, sugerimos proteger todas as conexões com o cluster de banco de dados usando TLS.
Para fornecer seu próprio certificado TLS de 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 para Kubernetes vai criar um secret de certificado TLS para você, com base em um certificado assinado por uma autoridade de certificação autoassinada. Em ambos os casos, é possível exigir que o pod do cliente do banco de dados exija 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, execute as seguintes ações:
No manifesto que define o pod que faz as conexões do cliente, especifique uma chave secreta 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 certificado 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 de 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 especifique nenhuma configuração de secret do TLS no manifesto
que define o cluster de banco de dados. Portanto, o
operador do AlloyDB Omni no Kubernetes usa o secret de 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 é possível 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-o na próxima etapa.Use
psqlpara se conectar ao cluster pelo 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.Opcional. Personalize a porta em que o banco de dados aceita solicitações de conexão recebidas. Para substituir a porta padrão
5432, use o atributoport. Os valores precisam estar entre1024e65535.O exemplo a seguir mostra a configuração de um recurso DBCluster do AlloyDB Omni quando você personaliza a porta do banco de dados.
apiVersion: v1 kind: Secret metadata: name: db-pw-dbcluster-sample type: Opaque data: dbcluster-sample: "Q2hhbmdlTWUxMjM=" # Password is ChangeMe123 --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: dbcluster-sample spec: databaseVersion: "18.4.0" primarySpec: port: 6789 adminUser: passwordRef: name: db-pw-dbcluster-sample resources: memory: 5Gi cpu: 1 disks: - name: DataDisk size: 10Gi
A seguir