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.tgz
e ele está localizado no 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 ao 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-controller
da 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çodefault
no 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
default
use a restrição de contexto de segurançaanyuid
. 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 usaranyuid
, 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.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ãopostgres
, codificada como uma string base64. Por exemplo,Q2hhbmdlTWUxMjM=
paraChangeMe123
.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ê definiucpu
como2
anteriormente neste manifesto, recomendamos definirmemory
como16Gi
.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