Esta página descreve como executar e estabelecer ligação ao AlloyDB Omni depois de o implementar no cluster do Kubernetes.
As instruções específicas do Kubernetes nesta página pressupõem um conhecimento básico do funcionamento do Kubernetes.
Execute o AlloyDB Omni
Os procedimentos que usa para executar o AlloyDB Omni dependem de estar a executar o AlloyDB Omni num cluster do Kubernetes.
Inicie o AlloyDB Omni
Inicie um cluster de base de dados parado definindo isStopped
como false
na respetiva definição do manifesto.
Pode fazê-lo na linha de comandos com kubectl
:
kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME \
-p '{"spec":{"primarySpec":{"isStopped":false}}}' --type=merge -n DB_CLUSTER_NAMESPACE
Substitua o seguinte:
DB_CLUSTER_NAME
: o nome deste cluster de base de dados, por exemplo,my-db-cluster
.DB_CLUSTER_NAMESPACE
(Opcional): o espaço de nomes onde criou este cluster de base de dados, por exemplo,my-db-cluster-namespace
.
Verifique o estado do AlloyDB Omni
kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -n DB_CLUSTER_NAMESPACE
Substitua o seguinte:
DB_CLUSTER_NAME
: o nome do cluster da base de dados.DB_CLUSTER_NAMESPACE
(Opcional): o espaço de nomes onde criou o cluster de base de dados.
Pare o AlloyDB Omni
Para parar um cluster de base de dados, defina isStopped
como true
na respetiva definição do manifesto.
Pode fazê-lo na linha de comandos com kubectl
:
kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -p '{"spec":{"primarySpec":{"isStopped":true}}}' --type=merge -n DB_CLUSTER_NAMESPACE
Substitua o seguinte:
DB_CLUSTER_NAME
: o nome deste cluster de base de dados, por exemplo,my-db-cluster
.DB_CLUSTER_NAMESPACE
(Opcional): o espaço de nomes onde criou este cluster de base de dados, por exemplo,my-db-cluster-namespace
.
Estabeleça ligação ao AlloyDB Omni em execução no Kubernetes
O operador do Kubernetes do AlloyDB Omni permite ligações ao cluster de base de dados a partir do mesmo cluster do Kubernetes, opcionalmente, usando certificados para autenticação.
Faça a associação através da app psql
pré-instalada
Pode fazer uma ligação de teste usando um cliente psql
já instalado no pod que executa a base de dados.
Para o fazer, 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 da base de dados. É o mesmo nome do cluster da base de dados que declarou quando o criou.
Pode ignorar a definição de DB_CLUSTER_NAMESPACE
se tiver criado o cluster da base de dados no espaço de nomes predefinido.
Depois de introduzir o comando, o servidor da base de dados pede-lhe uma palavra-passe.
Introduza a palavra-passe cuja versão codificada em Base64
forneceu como um segredo do Kubernetes quando criou o cluster
da base de dados. Por exemplo, se criou o cluster de base de dados com um segredo de Q2hhbmdlTWUxMjM=
, a palavra-passe de início de sessão a usar aqui é ChangeMe123
.
O operador AlloyDB Omni estabelece ligação ao servidor como a postgres
função de utilizador e apresenta um pedido de comando postgres=#
. Agora, pode executar psql
comandos
e consultas SQL.
Para sair do modo psql
, execute o comando \q
.
Estabelecer ligação a partir de um pod separado no mesmo cluster
O pod que executa o cluster de base de dados do AlloyDB Omni permite, por predefinição, ligações a partir do mesmo cluster do Kubernetes. Como prática recomendada, recomendamos que proteja todas as ligações ao cluster da base de dados através do TLS.
Para fornecer o seu próprio certificado TLS do servidor, especifique um segredo do certificado quando configurar o cluster da base de dados. Se não especificar um segredo do certificado, o operador do AlloyDB Omni Kubernetes cria um segredo do certificado TLS para si com base num certificado assinado por uma autoridade de certificação autoassinada. Em qualquer dos casos, pode exigir que o pod do cliente da base de dados exija a validação de certificados em todas as ligações, garantindo a segurança do TLS.
Para estabelecer ligações seguras à base de dados através de TLS, execute as seguintes ações:
No manifesto que define o pod que estabelece as ligações de cliente, especifique um segredo do certificado TLS. Pode ser uma das seguintes:
Um segredo do certificado TLS que já criou no seu cluster do Kubernetes. Para mais informações sobre como trabalhar com segredos de certificados TLS no Kubernetes, consulte o artigo Segredos de TLS.
O segredo do certificado predefinido que o operador do Kubernetes do AlloyDB Omni cria para si, denominado
DB_CLUSTER_NAME-ca-cert
, se não especificar um segredo de TLS como parte do manifesto do cluster de base de dados.
Sempre que o pod do cliente se liga ao cluster da base de dados, tem de definir as seguintes variáveis de ambiente antes de estabelecer a ligação:
Defina
PGSSLMODE
como"verify-ca"
.Defina
PGSSLROOTCERT
para o caminho absoluto, no sistema de ficheiros do pod do cliente, do ficheiroca.crt
relevante.
O exemplo de manifesto seguinte mostra como configurar um pod que instala a imagem oficial do PostgreSQL, que inclui o cliente de linha de comandos psql
. O exemplo pressupõe que não especifica nenhuma configuração secreta de TLS no manifesto que define o cluster da base de dados. Por conseguinte, o operador do Kubernetes do AlloyDB Omni usa o segredo TLS predefinido, que se chama 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 o seguinte:
DB_CLUSTER_NAME
: o nome do cluster da base de dados. É o mesmo nome do cluster da base de dados que declarou quando o criou.DB_CLUSTER_NAMESPACE
(Opcional): o espaço de nomes onde criou o cluster da base de dados.
Agora, pode usar o pod para se ligar em segurança ao cluster da base de dados através dos seguintes passos:
Determine o endereço IP interno do cluster da base de dados:
kubectl get dbclusters.alloydbomni.dbadmin.goog -n DB_CLUSTER_NAMESPACE
O resultado é semelhante ao seguinte:
NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE DB_CLUSTER_NAME IP_ADDRESS Ready DBClusterReady
Tome nota de
IP_ADDRESS
e use-o no passo seguinte.Use
psql
para se ligar ao cluster a partir do pod do cliente, definindo as variáveis de ambiente que ativam e requerem a validação do 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
Substitua
IP_ADDRESS
pelo endereço IP interno que determinou no passo anterior.