Crie uma VPC e um cluster com o Terraform

Visão geral

O Terraform é uma ferramenta de código aberto para configurar ambientes em nuvem, como a AWS, e instalar software neles, como o Kubernetes. É possível configurar o ambiente da AWS e criar seus clusters nele com as instruções de instalação do GKE na AWS ou com o Terraform.

Nesta página, descrevemos como usar o Terraform para configurar o ambiente da AWS e instalar um cluster usando uma configuração de amostra armazenada no GitHub. Para usar esses scripts, é preciso ter uma familiaridade básica com o Terraform. Especificamente, é preciso editar os arquivos de configuração do Terraform para adicionar suas próprias informações de usuário e projeto e fazer as mudanças necessárias na configuração padrão do cluster.

Para configurar seu ambiente da AWS e criar clusters sem usar o Terraform, consulte a Visão geral dos pré-requisitos da AWS e as instruções para criar um cluster.

O que os scripts fazem

Esse script configura o Terraform para criar uma VPC da AWS e implantar um cluster nela. A VPC resultante atende a todos os pré-requisitos do GKE na AWS e tem a mesma topologia de rede que a VPC criada pelas instruções de criação da VPC manual do Google.

O cluster que o conjunto de scripts cria tem as seguintes características:

  • Três nós do plano de controle (um em cada uma das três zonas de disponibilidade configuradas). Esses nós são do tipo t3.large.
  • Um pool de nós com dois nós do tipo t3.large. Esse pool de nós é implantado na região us-east-1 da AWS e pode ser escalonado automaticamente para cinco nós.

Como alterar o cluster e a VPC padrão

É possível alterar as características da VPC e do cluster criados pelos scripts do Terraform editando os arquivos apropriados do Terraform.

  • Ajuste as zonas de região e disponibilidade editando o arquivo variables.tf.
  • Altere o tipo de instância da AWS.
  • Altere as características da VPC, incluindo as sub-redes, zonas de disponibilidade e balanceador de carga, editando os arquivos na subpasta modules/vpc.

Para ver uma lista de regiões da AWS controladas em uma determinada região do Google Cloud e nas versões associadas do Kubernetes, execute o seguinte comando:

gcloud container aws get-server-config --location `GOOGLE_CLOUD_REGION`

Substitua GOOGLE_CLOUD_REGION pelo nome da região do Google Cloud pela qual você quer que o GKE na AWS controle seu cluster.

Pré-requisitos

  1. Instale a Google Cloud CLI seguindo as instruções de instalação da Google Cloud CLI. Se você já tiver instalado, siga essas instruções para verificar se está executando a versão 412.0.0 ou mais recente.

  2. Instale a CLI da AWS de acordo com as instruções de instalação da CLI da AWS.

  3. Crie suas chaves de acesso da AWS.

  4. Configure seu ambiente da AWS local com o seguinte comando:

    aws configure
    

Preparar o Terraform

  1. Configure a autenticação da Google Cloud CLI executando os seguintes comandos:

    gcloud config set project GOOGLE_PROJECT_ID
    gcloud auth application-default login --no-launch-browser
    
  2. Ative as APIs necessárias no seu projeto do Google Cloud:

    gcloud --project="GOOGLE_PROJECT_ID" services enable \
      gkemulticloud.googleapis.com \
      gkeconnect.googleapis.com \
      connectgateway.googleapis.com \
      cloudresourcemanager.googleapis.com \
      anthos.googleapis.com \
      logging.googleapis.com \
      monitoring.googleapis.com \
      opsconfigmonitoring.googleapis.com
    

    Substitua o GOOGLE_PROJECT_ID pelo ID do projeto do Google.

  3. Faça uma cópia local do repositório e mude para a pasta AWS:

    git clone https://github.com/GoogleCloudPlatform/anthos-samples.git
    cd anthos-samples/anthos-multi-cloud/AWS
    

Implantar o GKE na AWS

  1. Edite as seguintes linhas no arquivo terraform.tfvars para substituir os valores padrão:

    gcp_project_id = GOOGLE_PROJECT_ID
    admin_users = ["GCP_ACCOUNT_EMAIL"]
    

    Substitua:

    • GOOGLE_PROJECT_ID: o ID do projeto do Google. É possível encontrá-lo no lado esquerdo da página do painel do Console do Google Cloud.

    • ACCOUNT_EMAILS: uma lista separada por vírgulas de endereços de e-mail que podem fazer login nos clusters depois de criados, por exemplo, "admin@example.com","operator@example.com". Pelo menos um endereço precisa ter uma conta do Google Cloud. Para adicionar outros provedores de identidade ao cluster, consulte Gerenciar identidade com o serviço de identidade do GKE.

  2. Inicialize e crie o plano do Terraform:

    terraform init
    

    O Terraform instala todas as bibliotecas necessárias, como o provedor do Google Cloud.

  3. Aplique o plano do Terraform para criar a nuvem privada virtual e o cluster da AWS:

    terraform apply
    

    Siga as instruções para começar a criar um cluster.

A instalação leva cerca de 12 minutos. Quando o Terraform conclui a criação da nuvem privada virtual e do cluster da AWS, ele imprime informações no cluster e cria um arquivo chamado var.sh. É possível usar os valores nesse arquivo se você criar pools de nós adicionais.

Para verificar se o cluster foi criado com êxito, verifique se ele aparece na página do Kubernetes Engine do Console do Google Cloud no seu projeto do Google Cloud.

Conectar-se ao seu cluster

Para verificar a conectividade com o cluster e buscar os detalhes, execute o seguinte comando:

   gcloud container fleet memberships get-credentials CLUSTER_NAME
   kubectl get nodes

Substitua CLUSTER_NAME pelo nome do cluster. É possível encontrar o nome do cluster no arquivo de saída var.sh do Terraform.

A saída inclui uma lista de nós no cluster e seu status.

Excluir o cluster e a nuvem privada virtual da AWS

Antes de excluir o cluster e a nuvem privada virtual da AWS, remova todos estes recursos:

  • Todos os balanceadores de carga ativos da AWS na nuvem privada virtual da AWS
  • Todos os pools de nós adicionais no cluster que não foram criados com o Terraform
  • Todos os clusters adicionais na nuvem privada virtual da AWS não criados com o Terraform

Para remover o cluster e a nuvem privada virtual da AWS criados com o Terraform, execute o seguinte comando:

terraform destroy

O Terraform drena cargas de trabalho dos seus nós, exclui o pool de nós principal e o cluster e exclui a nuvem privada virtual da AWS.

Autorizar o Cloud Logging e o Cloud Monitoring

Se você quiser ativar o Cloud Logging e o Cloud Monitoring, adicione uma política de permissão ao seu projeto do Google Cloud depois de criar um cluster.

Adicione uma política de permissão com a CLI do Google Cloud:

gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:PROJECT_ID.svc.id.goog[gke-system/gke-telemetry-agent]" \
--role=roles/gkemulticloud.telemetryWriter

Substitua PROJECT_ID pela ID do seu projeto.

Próximas etapas

Para mais informações sobre o Terraform GKE em scripts da AWS, consulte