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
enodepools
nobaremetal.cluster.gke.io
- Acesso total no
bootstrapservicebindings
,configmanagementfeaturespecs
,configmanagementbindings
,servicemeshfeaturespecs
,servicemeshbindings
nomanagementcenter.anthos.cloud.google.com
- Acesso de
list
emcustomresourcedefinitions
noapiextensions.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
Especifique todas as variáveis em
cluster/terraform.tfvars
. Especifiquelogin_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"
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:
Comando Parar do Terraform.
Excluir o cluster de usuários do console do Centro de gerenciamento.
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:
Inicie o Terraform para o projeto
features
do Terraform.cd features terraform init
Configure a autenticação para o cluster de administrador.
Coloque a chave privada no repositório git em
/etc/ssh-key/key
.Defina
activate_acm
eactivate_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"
Aplique as alterações
terraform apply
(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.