Gerenciar clusters de usuários usando o Terraform

Esta página é destinada a administradores da plataforma.

Nesta página, descrevemos como gerenciar clusters de usuários usando o Terraform.

Pré-requisitos

Você precisa ter uma conta com acesso ao cluster de administrador. Essa conta precisa ter permissões corretas para gerenciar os clusters de usuário. Essa conta precisa de um subconjunto do acesso do administrador da plataforma mais o acesso "lista" em customresourcedefinitions no grupo de APIs apiextensions.k8s.io. Você usará essa conta para configurar o provedor Terraform Kubernetes para que ele possa gerenciar os recursos relacionados ao cluster de usuários. A conta precisa ter as seguintes permissões específicas:

  • Acesso total nos namespaces dos clusters de usuário no cluster de administrador, por exemplo, cluster-user-cluster2
  • Acesso total no clusters e nodepools no baremetal.cluster.gke.io
  • Acesso total no bootstrapservicebindings, configmanagementfeaturespecs, configmanagementbindings, servicemeshfeaturespecs, servicemeshbindings no managementcenter.anthos.cloud.google.com
  • Acesso de list em customresourcedefinitions no apiextensions.k8s.io
  • Se você precisar instalar o Anthos Config Management e o Anthos Service Mesh, também precisará de acesso para receber o secret nos namespaces do cluster de usuário no cluster de administrador. Assim, será possível conseguir as credenciais para se conectar ao cluster de usuário.

Fazer o download de scripts do Terraform

Faça o download do arquivo tarball de scripts do Terraform na guia Suporte do Console do Anthos Management Center. Extraia scripts do arquivo.

tar xvf terraform-scripts.tar.gz

Iniciar o Terraform e configurar a autenticação

Há muitas maneiras de configurar o provedor do Kubernetes do Terraform para a autenticação na API do cluster de administrador. Escolha a maneira mais adequada para seu caso de uso documentado na Configuração do provedor. Se você não tiver permissões suficientes no cluster de administrador, entre em contato com o operador de infraestrutura.

cd cluster
terraform init

Substitua (# TODO authentication) por um dos métodos de autenticação Provider Setup.

Criar um cluster de usuário

  1. Especifique todas as variáveis em cluster/terraform.tfvars. Especifique login_user_name se ele não tiver privilégios de raiz. Exemplo:

    admin_cluster_endpoint = "https://10.200.0.100:443"
    cluster_name      = "user-cluster2"
    control_plane_nodes = [
      { "address" = "10.200.0.26" },
      { "address" = "10.200.0.21" },
      { "address" = "10.200.0.22" },
    ]
    control_plane_vip = "10.200.0.110"
    nodepool_nodes = [
      { "address" = "10.200.0.23" },
      { "address" = "10.200.0.25" },
      { "address" = "10.200.0.24" },
    ]
    address_pools = [
      {
        "addresses" = ["10.200.0.111-10.200.0.119"]
        "name"      = "pool1"
      },
    ]
    bootstrap_service            = ["test-bootstrapservice", "test-bootstrapservice-2"]
    anthos_baremetal_version     = "1.9.0"
    
  2. Aplique as alterações Depois que o comando for concluído, o cluster de usuário será criado.

    terraform apply
    

Destruir um cluster de usuário

Use o seguinte comando para destruir um cluster de usuário:

terraform destroy

Um tempo de espera é definido para controlar a destruição de recursos. É possível ajustá-lo atualizando a variável wait_duration. O motivo do tempo de espera é devido a recursos ausentes no provedor do Kubernetes (consulte esta solicitação de recurso).

Quando uma criação de cluster de usuário estiver pendente devido a alguns problemas, não use terraform destroy. Em vez disso, limpe manualmente a instalação:

  1. Comando Parar do Terraform.

  2. Excluir o cluster de usuários do console do Centro de gerenciamento.

  3. Exclua o arquivo terraform.tfstate:

Ativar o Anthos Config Management e o Anthos Service Mesh

Para ativar o Anthos Config Management e o Anthos Service Mesh, conclua as seguintes etapas:

  1. Inicie o Terraform para o projeto features do Terraform.

      cd features
      terraform init
    
  2. Configure a autenticação para o cluster de administrador.

  3. Coloque a chave privada no repositório git em /etc/ssh-key/key.

  4. Defina activate_acm e activate_asm como verdadeiros e defina todas as variáveis relacionadas. Exemplo:

    cluster_name                 = "user-cluster2"
    admin_cluster_endpoint       = "https://10.200.0.100:443"
    user_cluster_ca_certificate  = ""
    activate_acm                 = true
    version_acm                  = "1.7.1"
    enable_acm_policy_controller = true
    acm_git_repo = {
      git_repo_url    = "git@github.com:example/example.git"
      git_repo_branch = "main"
      git_policy_dir  = "."
      git_secret_type = "ssh"
    }
    activate_asm = true
    version_asm  = "1.9.6-asm.1"
    
  5. Aplique as alterações

    terraform apply
    
  6. (Opcional) Ajuste o tempo de espera do Anthos Service Mesh, se necessário. Para fazer isso, atualize a variável wait_duration.

Desativar o Anthos Config Management e o Anthos Service Mesh

Antes de excluir o Anthos Config Management, recomendamos excluir todos os recursos sincronizados pelo Anthos Config Management no cluster.

Exclua o secret git-creds e config-management-system de tfstate. O operador do Anthos Config Management é responsável por excluir recursos no cluster de usuário, depois que ConfigManagementBinding e ConfigManagementFeatureSpec forem excluídos. O Anthos Config Management não é mostrado como desinstalado na Central de gerenciamento imediatamente. pode levar de 5 a 10 minutos para o operador excluir tudo.

terraform state rm kubernetes_namespace.config-management-system
terraform state rm kubernetes_secret.git-creds
terraform destroy

Problemas conhecidos

  • No momento, não é possível atualizar um cluster. Ao lançar uma atualização, o provedor tenta excluir os finalizadores dos recursos existentes devido ao problema 1378.

  • O comando destroy no cluster de usuário e no Anthos Service Mesh depende do tempo de espera devido ao problema 1357. Talvez seja necessário ajustar o tempo de espera, dependendo do tamanho do cluster.

  • O cluster mostra que está pronto no Terraform mais rapidamente do que o que é mostrado no Centro de Gerenciamento (bloqueado pelo suporte de dados de kubernetes_manifest pelo provedor).

  • A exclusão do Anthos Config Management usando terraform destroy requer a remoção de recursos do tfstate primeiro. Consulte Desativar o Anthos Config Management e o Anthos Service Mesh para detalhes. O Anthos Config Management não é mostrado como desinstalado na Central de gerenciamento imediatamente. Pode levar de 5 a 10 minutos para o operador excluir tudo.

  • O comando terraform destroy exclui o namespace do cluster de usuário. Os administradores da plataforma não têm direitos para excluir namespaces no cluster de administrador. Portanto, o comando pode falhar.

Limitações

  • O código atual permite criar um único cluster de usuário.

  • O código atual não inclui a configuração do OIDC. Esta parte requer recursos de patch no provedor do Kubernetes no recurso kubernetes_manifest.

A seguir