Nesta página, apresentamos 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. Nesta página, presumimos que você tenha familiaridade básica com a 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 Kubernetes fornecida pelo Google.
Para configurar e controlar um cluster de banco de dados do AlloyDB Omni baseado no Kubernetes, pareie arquivos de manifesto declarativos com o utilitário kubectl, assim como qualquer outra implantação baseada no Kubernetes. Você não usa a CLI do AlloyDB Omni, que é destinada a
implantações em máquinas Linux individuais e não em clusters do 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ê usa uma dessas versões do AlloyDB Omni, talvez receba 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 ter acesso ao seguinte:
- Um cluster do Kubernetes executando o seguinte software:
- Kubernetes versão 1.21 ou mais recente.
- O serviço cert-manager.
 
- O utilitário kubectl.
- O gerenciador de pacotes helm.
- A Google Cloud CLI. Depois de instalar a
CLI gcloud, autentique sua conta do Google Cloud executando
gcloud auth login.
Cada nó no cluster do Kubernetes precisa ter o seguinte:
- Mínimo de duas CPUs x86 ou AMD64.
- Pelo menos 8 GB de RAM.
- Versão 4.18 ou mais recente do kernel do Linux.
- O grupo de controle v2 (cgroup v2) está ativado.
Instalar o operador do AlloyDB Omni
Para instalar o operador do AlloyDB Omni, siga estas etapas:
- 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%%/*}"
- Faça o download do operador do AlloyDB Omni: - gcloud storage cp gs://$GCS_BUCKET/$HELM_PATH ./ --recursive
- Instale o operador do AlloyDB Omni: - helm install alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \ --create-namespace \ --namespace alloydb-omni-system \ --atomic \ --timeout 5m- Uma 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
- Faça uma limpeza excluindo o arquivo de instalação do operador do AlloyDB Omni baixado. O nome do arquivo é - alloydbomni-operator-VERSION_NUMBER.tgze ele está localizado no diretório de trabalho atual.
Configurar o armazenamento conectado do GDC
Para instalar o operador do AlloyDB Omni no GDC connected, é necessário seguir mais 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 Symcloud Storage como a classe de armazenamento padrão, consulte Definir o Symcloud Storage 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ê usa o Red Hat OpenShift 4.12 ou uma versão mais recente, conclua as etapas a seguir 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 estas etapas.
- Adicione permissões para atualizar finalizadores de instâncias do AlloyDB Omni editando a função de cluster - system:controller:statefulset-controllerda seguinte maneira:- kubectl edit clusterrole system:controller:statefulset-controller
- No editor de texto, adicione o seguinte ao final da função de 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 ter permissões adicionais para atualizar os finalizadores de instância adicionados à função do cluster, já que o Red Hat OpenShift tem o OwnerReferencesPermissionEnforcement ativado. Sem a permissão para atualizar finalizadores de instância, o controlador StatefulSet não cria a declaração de volume permanente (PVC) 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
- Adicione permissões para atualizar finalizadores DBInstance do AlloyDB Omni editando a função de cluster - fleet-manager-role:- kubectl edit clusterrole fleet-manager-role
- No editor de texto, adicione o seguinte ao final da função de cluster: - - apiGroups: - alloydbomni.dbadmin.goog resources: - dbinstances/finalizers verbs: - update
- Adicione a restrição de contexto de segurança - anyuidà conta de serviço- defaultno projeto do Red Hat OpenShift da seguinte maneira:- oc adm policy add-scc-to-user anyuid system:serviceaccount:OPENSHIFT_PROJECT:default - Você precisa permitir que a conta de serviço - defaultuse a restrição de contexto de segurança- anyuid. Isso porque, no pod do banco de dados, o contêiner de inicialização é 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 cria o 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, as réplicas e todos os seus dados.
Depois de instalar o operador do AlloyDB Omni no cluster do Kubernetes, é possível criar um cluster de banco de dados do AlloyDB Omni no cluster do Kubernetes aplicando um manifesto semelhante a este:
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.5.5"
  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ê definiu- cpucomo- 2anteriormente neste manifesto, recomendamos definir- memorycomo- 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 especificada de memória, CPU
e armazenamento. Para estabelecer uma conexão de teste com o novo cluster de banco de dados, consulte Conectar usando o psql pré-instalado.
Para mais informações sobre manifestos do Kubernetes e como aplicá-los, consulte Gerenciar recursos.
A seguir
- Executar e se conectar ao AlloyDB Omni
- Gerenciar o AlloyDB Omni
- Gerenciar alta disponibilidade no Kubernetes