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

  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