Executar e se conectar ao AlloyDB Omni

Selecione uma versão da documentação:

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_NAMESPACE

Substitua:

  • 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_NAMESPACE

Substitua:

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_NAMESPACE

Substitua:

*   `DB_CLUSTER_NAME`: the name of this database cluster—for example, `my-db-cluster`.
*   `DB_CLUSTER_NAMESPACE` (Optional): the namespace where you created this database cluster—for example, `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 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 de certificação 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 PGSSLMODE como "verify-ca".

    • Defina PGSSLROOTCERT como o caminho absoluto, no sistema de arquivos do pod do cliente, do arquivo ca.crt relevante.

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 secreta de 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:

  1. Determine o endereço IP interno do cluster de banco de dados:

    kubectl get dbclusters.alloydbomni.dbadmin.goog -n DB_CLUSTER_NAMESPACE

    A saída será assim:

    NAME              PRIMARYENDPOINT   PRIMARYPHASE   DBCLUSTERPHASE
    DB_CLUSTER_NAME   IP_ADDRESS        Ready          DBClusterReady
    

    Anote IP_ADDRESS e use na próxima etapa.

  2. Use psql para 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 -- 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 você determinou na etapa anterior.

A seguir