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

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.

Imagem de base

A partir da versão 1.5.0, as imagens do Kubernetes do operador do AlloyDB Omni são criadas com base na Universal Base Image (UBI) 9 da Red Hat. Essa transição melhora a segurança, a consistência e a conformidade das implantações.

Compatibilidade do operador do AlloyDB Omni 1.1.0 (e versões mais recentes)

O operador do AlloyDB Omni versão 1.1.0 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

Antes de instalar o AlloyDB Omni em um cluster do Kubernetes com o operador do AlloyDB Omni, verifique se você atende aos requisitos a seguir.

Escolher uma opção de download ou instalação

Ao gerenciar cargas de trabalho em um cluster genérico do Kubernetes, é possível usar o Helm ou o OLM. O Helm é um gerenciador de pacotes universal que usa gráficos do Helm para instalar qualquer carga de trabalho, incluindo operadores, em todas as variantes do Kubernetes. Em contraste, o OLM, a escolha padrão e preferencial nas plataformas OpenShift, gerencia os ciclos de vida do operador com pacotes OLM especializados.

Com base no ambiente e nas ferramentas, escolha um dos seguintes métodos de implantação:

Mídia Locais de download e guias de instalação Implantação em
Operador do AlloyDB Omni com gráfico do Helm Instalar o AlloyDB Omni no Kubernetes Ambiente de contêiner do Kubernetes próprio, por exemplo, no local, em nuvens públicas, no GKE, no Amazon EKS e no Azure AKS.

Dica:se a ferramenta de CD (entrega contínua) estiver integrada ao Helm, use essa opção.
Operador do AlloyDB Omni com pacote OLM OperatorHub.io Ambiente de contêiner do Kubernetes próprio, por exemplo, no local, em nuvens públicas, no Google Kubernetes Engine, no Amazon EKS e no Azure AKS.

Para usar um pacote OLM, instale o OLM no cluster do Kubernetes antes de instalar o operador. Leia mais sobre o OLM em olm.operatorframework.io (link em inglês).

Dica:se a ferramenta de CD (entrega contínua) já usa o OLM, escolha essa opção.
Operador do OpenShift com pacote OLM Console da Web do OpenShift Container Platform Ambiente do OpenShift

O OpenShift, uma variante do Kubernetes, usa o OLM como método padrão e integrado para empacotar e implantar operadores.

Verificar o acesso

Verifique se você tem acesso ao seguinte:

Atender aos requisitos de hardware e software

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.
  • Grupo de controle (cgroup) v2 ativado.

Instalar o operador do AlloyDB Omni

É possível instalar o operador do AlloyDB Omni usando diferentes métodos, incluindo o Helm e o Operator Lifecycle Manager (OLM).

Helm

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

  1. Defina as seguintes variáveis de ambiente:
    export HELM_PATH=$(curl https://storage.googleapis.com/alloydb-omni-operator/latest)
    export OPERATOR_VERSION="${HELM_PATH%%/*}"
    
  2. Faça o download do operador do AlloyDB Omni:
    curl -X GET -o "./alloydbomni-operator-${OPERATOR_VERSION}.tgz" "https://storage.googleapis.com/storage/v1/b/alloydb-omni-operator/o/$(echo ${HELM_PATH} | sed 's/\//%2F/g')?alt=media"
    
  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. Para limpar, exclua 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.

OLM

Para instalar o operador do AlloyDB Omni usando o Operator Lifecycle Manager, siga estas etapas:

  1. Acesse https://operatorhub.io/operator/alloydb-omni-operator.

  2. Clique no botão Install para mostrar as instruções.

  3. Conclua todas as etapas de instalação.

  4. Depois de instalar o operador do AlloyDB Omni, crie manualmente os recursos do cert-manager no cluster. Esse é um requisito. Use os comandos a seguir:

    kubectl create ns ${NAMESPACE:?}
    kubectl apply -f - <<EOF
    apiVersion: cert-manager.io/v1
    kind: ClusterIssuer
    metadata:
      name: alloydbomni-selfsigned-cluster-issuer
    spec:
      selfSigned: {}
    ---
    apiVersion: cert-manager.io/v1
    kind: Issuer
    metadata:
      name: fleet-selfsigned-issuer
      namespace: ${NAMESPACE:?}
    spec:
      selfSigned: {}
    ---
    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
      name: fleet-serving-cert
      namespace: ${NAMESPACE:?}
    spec:
      dnsNames:
      - fleet-webhook-service.alloydb-omni-system.svc
      - fleet-webhook-service.alloydb-omni-system.svc.cluster.local
      issuerRef:
        kind: Issuer
        name: fleet-selfsigned-issuer
      secretName: fleet-webhook-server-cert
    ---
    apiVersion: cert-manager.io/v1
    kind: Issuer
    metadata:
      name: local-selfsigned-issuer
      namespace: ${NAMESPACE:?}
    spec:
      selfSigned: {}
    ---
    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
      name: local-serving-cert
      namespace: ${NAMESPACE:?}
    spec:
      dnsNames:
      - local-webhook-service.alloydb-omni-system.svc
      - local-webhook-service.alloydb-omni-system.svc.cluster.local
      issuerRef:
        kind: Issuer
        name: local-selfsigned-issuer
      secretName: local-webhook-server-cert
    EOF

    Substitua NAMESPACE pelo namespace em que você tem o operador, por exemplo, alloydb-omni-system.

OLM

Para instalar o operador do AlloyDB Omni no ambiente do Red Hat OpenShift usando o OLM, faça login no console da Web do Red Hat OpenShift.

  1. Selecione Operators > OperatorHub.

  2. Encontre o operador do AlloyDB Omni usando o campo de pesquisa.

    Hub de operadores do AlloyDB Omni
    Figura 1: o operador do AlloyDB Omni no OperatorHub
  3. No painel do operador do AlloyDB Omni, clique em Install.

    Painel do operador do AlloyDB Omni
    Figura 2: o painel do operador do AlloyDB Omni
  4. Depois de instalar o operador do AlloyDB Omni, crie manualmente os recursos do cert-manager no cluster. Esse é um requisito. Use os comandos a seguir:

    kubectl create ns ${NAMESPACE:?}
    kubectl apply -f - <<EOF
    apiVersion: cert-manager.io/v1
    kind: ClusterIssuer
    metadata:
      name: alloydbomni-selfsigned-cluster-issuer
    spec:
      selfSigned: {}
    ---
    apiVersion: cert-manager.io/v1
    kind: Issuer
    metadata:
      name: fleet-selfsigned-issuer
      namespace: ${NAMESPACE:?}
    spec:
      selfSigned: {}
    ---
    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
      name: fleet-serving-cert
      namespace: ${NAMESPACE:?}
    spec:
      dnsNames:
      - fleet-webhook-service.alloydb-omni-system.svc
      - fleet-webhook-service.alloydb-omni-system.svc.cluster.local
      issuerRef:
        kind: Issuer
        name: fleet-selfsigned-issuer
      secretName: fleet-webhook-server-cert
    ---
    apiVersion: cert-manager.io/v1
    kind: Issuer
    metadata:
      name: local-selfsigned-issuer
      namespace: ${NAMESPACE:?}
    spec:
      selfSigned: {}
    ---
    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
      name: local-serving-cert
      namespace: ${NAMESPACE:?}
    spec:
      dnsNames:
      - local-webhook-service.alloydb-omni-system.svc
      - local-webhook-service.alloydb-omni-system.svc.cluster.local
      issuerRef:
        kind: Issuer
        name: local-selfsigned-issuer
      secretName: local-webhook-server-cert
    EOF

    Substitua NAMESPACE pelo namespace em que você tem o operador, por exemplo, alloydb-omni-system.

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

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, réplicas e todos os dados.

Para criar um cluster de banco de dados do AlloyDB Omni, siga estas etapas:

  1. Crie um namespace dedicado para o cluster de banco de dados. Isso melhora o isolamento e a segurança.

    kubectl create namespace DB_CLUSTER_NAMESPACE
    

    Substitua DB_CLUSTER_NAMESPACE pelo namespace em que você quer criar o cluster de banco de dados, por exemplo, my-db-cluster-namespace.

  2. Crie um arquivo de manifesto chamado db-cluster.yaml com o conteúdo a seguir. Esse manifesto define o Secret da senha do banco de dados e o recurso DBCluster.

    apiVersion: v1
    kind: Secret
    metadata:
      name: db-pw-DB_CLUSTER_NAME
      namespace: DB_CLUSTER_NAMESPACE
    type: Opaque
    data:
      DB_CLUSTER_NAME: "ENCODED_PASSWORD"
    ---
    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: DB_CLUSTER_NAME
      namespace: DB_CLUSTER_NAMESPACE
    spec:
      databaseVersion: "15.12.0"
      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 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.

  3. Aplique o manifesto ao cluster do Kubernetes:

    kubectl apply -f db-cluster.yaml
    

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