Instalar o AlloyDB Omni no Kubernetes

Selecione uma versão da documentação:

Esta página oferece uma visão geral do operador do AlloyDB Omni no Kubernetes, com instruções para usá-lo na implantação do AlloyDB Omni em um cluster do Kubernetes. Esta página pressupõe um conhecimento básico da operação do Kubernetes.

Para instruções sobre como instalar o AlloyDB Omni em um ambiente Linux padrão, consulte Instalar o AlloyDB Omni.

Visão geral

Para implantar o AlloyDB Omni em um cluster do Kubernetes, instale o operador do AlloyDB Omni, uma extensão da API do Kubernetes fornecida pelo Google.

Você configura e controla um cluster de banco de dados do AlloyDB Omni baseado no Kubernetes pareando arquivos de manifesto declarativos com o utilitário kubectl, assim como qualquer outra implantação baseada no Kubernetes.

Compatibilidade do operador do AlloyDB Omni 1.1.0

A versão 1.1.0 do operador do AlloyDB Omni não é compatível com as versões 15.5.3 e 15.5.4 do AlloyDB Omni. Se você usar uma dessas versões do AlloyDB Omni, poderá receber um erro semelhante ao seguinte:

Error from server (Forbidden): error when creating "[...]/dbcluster.yaml": admission webhook "vdbcluster.alloydbomni.dbadmin.goog" denied the request: unsupported database version 15.5.3

Antes de começar

Você precisa de acesso ao seguinte:

Cada nó no cluster do Kubernetes precisa ter o seguinte:

  • Um mínimo de duas CPUs x86 ou AMD64.
  • Pelo menos 8 GB de RAM.
  • Kernel do Linux versão 4.18 ou mais recente.
  • Grupo de controle v2 (cgroup v2) ativado.

Instalar o operador do AlloyDB Omni

Para instalar o operador do AlloyDB Omni, siga estas etapas:

  1. Defina várias variáveis de ambiente:

    export GCS_BUCKET=alloydb-omni-operator
    export HELM_PATH=$(gcloud storage cat gs://$GCS_BUCKET/latest)
    export OPERATOR_VERSION="${HELM_PATH%%/*}"
  2. Faça o download do operador do AlloyDB Omni:

    gcloud storage cp gs://$GCS_BUCKET/$HELM_PATH ./ --recursive
  3. Instale o operador do AlloyDB Omni:

    helm install alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \
    --create-namespace \
    --namespace alloydb-omni-system \
    --atomic \
    --timeout 5m

    A instalação bem-sucedida mostra a seguinte saída:

    NAME: alloydbomni-operator
    LAST DEPLOYED: CURRENT_TIMESTAMP
    NAMESPACE: alloydb-omni-system
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    
  4. Faça uma limpeza excluindo o arquivo de instalação do operador do AlloyDB Omni baixado. O arquivo é chamado alloydbomni-operator-VERSION_NUMBER.tgz e está localizado em seu diretório de trabalho atual.

Configurar o armazenamento conectado do GDC

Para instalar o operador do AlloyDB Omni no GDC conectado, siga outras etapas para configurar o armazenamento, porque os clusters conectados do GDC não definem uma classe de armazenamento padrão. É necessário definir uma classe de armazenamento padrão antes de criar um cluster de banco de dados do AlloyDB Omni.

Para saber como definir o armazenamento do Symcloud como a classe de armazenamento padrão, consulte Definir o armazenamento do Symcloud como a classe de armazenamento padrão.

Para mais informações sobre como mudar o padrão de todas as outras classes de armazenamento, consulte Alterar o StorageClass padrão.

Etapas de reconciliação do Red Hat OpenShift

Se você usar o Red Hat OpenShift 4.12 ou mais recente, siga as etapas abaixo depois de instalar o operador do AlloyDB Omni e antes de criar um cluster de banco de dados do AlloyDB Omni no cluster do Kubernetes. Caso contrário, pule essas etapas.

  1. Adicione permissões para atualizar os finalizadores da instância do AlloyDB Omni editando o papel do cluster system:controller:statefulset-controller da seguinte maneira:

    kubectl edit clusterrole system:controller:statefulset-controller
  2. No editor de texto, anexe o seguinte ao final do papel do cluster:

    - apiGroups:
      - alloydbomni.internal.dbadmin.goog
      resources:
      - instances/finalizers
      verbs:
      - update
    - apiGroups:
      - alloydbomni.internal.dbadmin.goog
      resources:
      - backuprepositories/finalizers
      verbs:
      - update
    

    O controlador StatefulSet precisa de permissões adicionais para atualizar os finalizadores de instância adicionados ao papel do cluster, já que o Red Hat OpenShift tem o OwnerReferencesPermissionEnforcement ativado. Sem a permissão para atualizar os finalizadores de instância, o controlador StatefulSet não consegue criar a declaração de volume persistente (PVC, na sigla em inglês) do banco de dados com a seguinte mensagem de erro encontrada nos eventos do StatefulSet do banco de dados:

    Warning  FailedCreate  [...] cannot set blockOwnerDeletion if an ownerReference refers to a resource you can't set finalizers on
    
  3. Adicione permissões para atualizar os finalizadores do DBInstance do AlloyDB Omni editando o papel do cluster fleet-manager-role:

    kubectl edit clusterrole fleet-manager-role
  4. No editor de texto, anexe o seguinte ao final do papel do cluster:

    - apiGroups:
      - alloydbomni.dbadmin.goog
      resources:
      - dbinstances/finalizers
      verbs:
      - update
    
  5. Adicione a restrição de contexto de segurança anyuid à conta de serviço default no projeto do Red Hat OpenShift da seguinte maneira:

    oc adm policy add-scc-to-user anyuid system:serviceaccount:OPENSHIFT_PROJECT:default
    

    É necessário permitir que a conta de serviço default use a restrição de contexto de segurança anyuid, já que, no pod do banco de dados, o contêiner init é executado como raiz e os outros contêineres são executados com IDs de usuário específicos. Sem permissão para usar anyuid, o controlador StatefulSet não consegue criar a PVC do banco de dados com a seguinte mensagem de erro encontrada nos eventos do StatefulSet do banco de dados:

    Warning  FailedCreate  [...]    unable to validate against any security context constraint
    

Criar um cluster de banco de dados

Um cluster de banco de dados do AlloyDB Omni contém todos os recursos de armazenamento e computação necessários para executar um servidor do AlloyDB Omni, incluindo o servidor principal, todas as réplicas e todos os dados.

Depois de instalar o operador do AlloyDB Omni no cluster do Kubernetes, você poderá criar um cluster de banco de dados do AlloyDB Omni no cluster do Kubernetes aplicando um manifesto semelhante ao seguinte:

apiVersion: v1
kind: Secret
metadata:
  name: db-pw-DB_CLUSTER_NAME
type: Opaque
data:
  DB_CLUSTER_NAME: "ENCODED_PASSWORD"
---
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: DB_CLUSTER_NAME
spec:
  databaseVersion: "15.7.1"
  primarySpec:
    adminUser:
      passwordRef:
        name: db-pw-DB_CLUSTER_NAME
    resources:
      cpu: CPU_COUNT
      memory: MEMORY_SIZE
      disks:
      - name: DataDisk
        size: DISK_SIZE

Substitua:

  • DB_CLUSTER_NAME: o nome do cluster de banco de dados, por exemplo, my-db-cluster.

  • ENCODED_PASSWORD: a senha de login do banco de dados para a função de usuário padrão postgres, codificada como uma string base64. Por exemplo, Q2hhbmdlTWUxMjM= para ChangeMe123.

  • CPU_COUNT: o número de CPUs disponíveis para cada instância de banco de dados no cluster.

  • MEMORY_SIZE: a quantidade de memória por instância de banco de dados deste cluster de banco de dados. Recomendamos definir isso como 8 gigabytes por CPU. Por exemplo, se você definir cpu como 2 anteriormente neste manifesto, recomendamos definir memory como 16Gi.

  • DISK_SIZE: o tamanho do disco por instância de banco de dados, por exemplo, 10Gi.

Depois de aplicar esse manifesto, o cluster do Kubernetes vai conter um cluster de banco de dados do AlloyDB Omni com a configuração de memória, CPU e armazenamento especificada. Para estabelecer uma conexão de teste com o novo cluster de banco de dados, consulte Conectar usando o psql.

Para mais informações sobre manifestos do Kubernetes e como aplicá-los, consulte Gerenciar recursos.

A seguir