Esta página oferece uma vista geral do operador do Kubernetes do AlloyDB Omni, com instruções para o usar para implementar o AlloyDB Omni num cluster do Kubernetes. Esta página pressupõe uma familiaridade básica com o funcionamento do Kubernetes.
Para ver instruções sobre como instalar o AlloyDB Omni num ambiente Linux padrão, consulte o artigo Instale o AlloyDB Omni.
Vista geral
Para implementar o AlloyDB Omni num cluster do Kubernetes, instale o operador do AlloyDB Omni, uma extensão da API Kubernetes fornecida pela Google.
Configura e controla um cluster de base de dados AlloyDB Omni baseado em Kubernetes associando ficheiros de manifesto declarativos ao utilitário kubectl
, tal como qualquer outra implementação baseada em Kubernetes. Não usa a CLI do AlloyDB Omni, que se destina a implementações em máquinas Linux individuais e não em clusters do Kubernetes.
Compatibilidade do operador 1.1.0 do AlloyDB Omni
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 usar uma destas versões do AlloyDB Omni, pode 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
Precisa de acesso ao seguinte:
- Um cluster do Kubernetes que executa o seguinte software:
- Versão 1.21 ou posterior do Kubernetes.
- O serviço
cert-manager
.
- O utilitário
kubectl
. - O
helm
gestor de pacotes. - A CLI do Google Cloud. Depois de instalar a CLI gcloud, tem de autenticar a sua conta Google Cloud executando
gcloud auth login
.
Cada nó no cluster do Kubernetes tem de ter o seguinte:
- Um mínimo de duas CPUs x86 ou AMD64.
- No mínimo, 8 GB de RAM.
- Versão 4.18 ou posterior do kernel do Linux.
- Grupo de controlo v2 (cgroup v2) ativado.
Instale o operador do AlloyDB Omni
Para instalar o operador do AlloyDB Omni, siga estes passos:
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%%/*}"
Transfira o 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
A instalação bem-sucedida apresenta o seguinte resultado:
NAME: alloydbomni-operator LAST DEPLOYED: CURRENT_TIMESTAMP NAMESPACE: alloydb-omni-system STATUS: deployed REVISION: 1 TEST SUITE: None
Limpe eliminando o ficheiro de instalação do operador do AlloyDB Omni transferido. O ficheiro chama-se
alloydbomni-operator-VERSION_NUMBER.tgz
e encontra-se no diretório de trabalho atual.
Configure o armazenamento associado do GDC
Para instalar o operador AlloyDB Omni no GDC ligado, tem de seguir passos adicionais para configurar o armazenamento porque os clusters do GDC ligado não definem uma classe de armazenamento predefinida. Tem de definir uma classe de armazenamento predefinida antes de criar um cluster de base de dados do AlloyDB Omni.
Para saber como definir o Symcloud Storage como a classe de armazenamento predefinida, consulte o artigo Defina o Symcloud Storage como a classe de armazenamento predefinida.
Para mais informações sobre como alterar a predefinição de todas as outras classes de armazenamento, consulte o artigo Alterar a classe de armazenamento predefinida.
Passos de conciliação do Red Hat OpenShift
Se usar o Red Hat OpenShift 4.12 ou posterior, tem de concluir os seguintes passos depois de instalar o operador AlloyDB Omni e antes de criar um cluster de base de dados AlloyDB Omni no cluster do Kubernetes. Caso contrário, pode ignorar estes passos.
Adicione autorizações para atualizar os finalizadores da instância do AlloyDB Omni editando a função de cluster
system:controller:statefulset-controller
da seguinte forma:kubectl edit clusterrole system:controller:statefulset-controller
No editor de texto, anexe o seguinte ao final da função 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 tem de ter autorizações adicionais para atualizar os finalizadores de instâncias adicionados à função de cluster, uma vez que o Red Hat OpenShift tem a opção OwnerReferencesPermissionEnforcement ativada. Sem a autorização para atualizar os finalizadores de instâncias, o controlador StatefulSet não consegue criar a reivindicação de volume persistente (PVC) da base de dados com a seguinte mensagem de erro encontrada nos eventos StatefulSet da base de dados:
Warning FailedCreate [...] cannot set blockOwnerDeletion if an ownerReference refers to a resource you can't set finalizers on
Adicione autorizações para atualizar os finalizadores DBInstance do AlloyDB Omni editando a
fleet-manager-role
função de cluster:kubectl edit clusterrole fleet-manager-role
No editor de texto, anexe o seguinte ao final da função do 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 seu projeto do Red Hat OpenShift da seguinte forma:oc adm policy add-scc-to-user anyuid system:serviceaccount:OPENSHIFT_PROJECT:default
Tem de permitir que a conta de serviço
default
use a restrição de contexto de segurançaanyuid
, uma vez que, no pod da base de dados, o contentor init é executado como root e os outros contentores são executados com IDs de utilizador específicos. Sem autorização para usaranyuid
, o controlador StatefulSet não consegue criar o PVC da base de dados com a seguinte mensagem de erro encontrada nos eventos StatefulSet da base de dados:Warning FailedCreate [...] unable to validate against any security context constraint
Crie um cluster de base de dados
Um cluster de base 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 seus dados.
Depois de instalar o operador AlloyDB Omni no cluster do Kubernetes, pode criar um cluster de base 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.0"
primarySpec:
adminUser:
passwordRef:
name: db-pw-DB_CLUSTER_NAME
resources:
cpu: CPU_COUNT
memory: MEMORY_SIZE
disks:
- name: DataDisk
size: DISK_SIZE
Substitua o seguinte:
DB_CLUSTER_NAME
: o nome deste cluster de base de dados, por exemplo,my-db-cluster
.ENCODED_PASSWORD
: a palavra-passe de início de sessão na base de dados para a função de utilizadorpostgres
predefinida, codificada como uma string base64, por exemplo,Q2hhbmdlTWUxMjM=
paraChangeMe123
.CPU_COUNT
: o número de CPUs disponíveis para cada instância da base de dados neste cluster de base de dados.MEMORY_SIZE
: a quantidade de memória por instância da base de dados deste cluster de base de dados. Recomendamos que defina esta opção para 8 gigabytes por CPU. Por exemplo, se definircpu
como2
anteriormente neste manifesto, recomendamos que definamemory
como16Gi
.DISK_SIZE
: o tamanho do disco por instância da base de dados, por exemplo,10Gi
.
Depois de aplicar este manifesto, o cluster do Kubernetes contém um cluster de base de dados do AlloyDB Omni com a configuração de memória, CPU e armazenamento especificada. Para estabelecer uma ligação de teste com o novo cluster de base de dados, consulte o artigo Estabeleça ligação através do psql
pré-instalado.
Para mais informações sobre os manifestos do Kubernetes e como aplicá-los, consulte o artigo Gerir recursos.
O que se segue?
- Execute e ligue-se ao AlloyDB Omni
- Faça a gestão do AlloyDB Omni
- Faça a gestão da elevada disponibilidade no Kubernetes