Criar um cluster híbrido do GKE em Bare Metal em VMs do Compute Engine usando o Terraform

Este documento mostra como configurar VMs no Compute Engine com o Terraform para instalar e testar o GKE em Bare Metal em modo de alta disponibilidade (HA, na sigla em inglês). Para informações sobre como usar a CLI do Google Cloud para isso, consulte Testar o GKE em Bare Metal nas VMs do Compute Engine

Você pode testar o GKE em Bare Metal rapidamente e sem precisar preparar hardwares. Os scripts do Terraform fornecidos criam uma rede de VMs no Compute Engine que podem ser utilizadas para executar o GKE em Bare Metal. Neste tutorial, usamos o modelo de implantação de cluster híbrido.

Conclua as etapas a seguir para executar um cluster de amostra:

  1. Execute o script do Terraform para configurar uma rede de VMs no Compute Engine
  2. Implante um cluster híbrido
  3. Verifique o cluster

Antes de começar

A implantação requer os recursos a seguir:

Configure a rede de VMs no Compute Engine

Nesta seção, você usará os scripts do Terraform no repositório anthos-samples. Os scripts configuram o Compute Engine com os seguintes recursos:

  • Seis VMs para implantar o cluster híbrido:
    • Uma VM de administrador usada para implantar o cluster híbrido nas outras máquinas.
    • Três VMs para os três nós do plano de controle necessários para executar o plano de controle do cluster híbrido.
    • Duas VMs para os dois nós de trabalho necessários para executar cargas de trabalho no cluster híbrido.
  • Uma rede VxLAN de sobreposição entre todos os nós para emular a conectividade L2.
  • Acesso SSH aos nós de plano de controle e trabalho pelo administrador da VM.

Infraestrutura bare metal no Google Cloud usando VMs do Compute Engine

É possível alterar o número de nós no cluster adicionando novos nomes de nó à variável instance_count do Terraform:

###################################################################################
# The recommended instance count for High Availability (HA) is 3 for Control plane
# and 2 for Worker nodes.
###################################################################################
variable "instance_count" {
  description = "Number of instances to provision per layer (Control plane and Worker nodes) of the cluster"
  type        = map(any)
  default = {
    "controlplane" : 3
    "worker" : 2
  }
}

  1. Faça o download dos scripts do Terraform para a amostra anthos-bm-gcp-terraform:

    git clone https://github.com/GoogleCloudPlatform/anthos-samples
    cd anthos-samples/anthos-bm-gcp-terraform
    
  2. Atualize o arquivo terraform.tfvars.sample para incluir variáveis específicas ao ambiente:

    project_id       = "PROJECT_ID"
    region           = "GOOGLE_CLOUD_REGION"
    zone             = "GOOGLE_CLOUD_ZONE"
    credentials_file = "PATH_TO_GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY_FILE"
    
  3. Renomeie o arquivo terraform.tfvars.sample como o nome padrão usado pelo Terraform para o arquivo de variáveis:

    mv terraform.tfvars.sample terraform.tfvars
    
  4. Inicialize o diretório de amostra como um diretório de trabalho do Terraform. Isso define as configurações necessárias de gerenciamento de estado do Terraform, semelhantes a git init:

    terraform init
    
  5. Crie um plano de execução do Terraform. Esta etapa compara o estado dos recursos, verifica os scripts e cria um plano de execução:

    terraform plan
    
  6. Aplique as alterações descritas no script do Terraform. Esta etapa executa o plano no provedor fornecido (neste caso, o Google Cloud) para alcançar o estado desejado dos recursos:

    terraform apply  # when prompted to confirm the Terraform plan, type 'Yes' and enter
    

Implante o cluster híbrido

Depois que a execução do Terraform for concluída, você poderá implantar o cluster híbrido.

  1. Use o SSH para se conectar ao host do administrador:

    gcloud compute ssh tfadmin@cluster1-abm-ws0-001 --project=PROJECT_ID --zone=GOOGLE_CLOUD_ZONE
    

    É possível ignorar todas as mensagens sobre a atualização da VM e concluir este tutorial. Se você planeja manter as VMs como um ambiente de teste, talvez queira atualizar o SO ou fazer upgrade para a próxima versão, conforme descrito na documentação do Ubuntu.

  2. Execute o seguinte bloco de código para criar o cluster híbrido cluster1 nas VMs configuradas do Compute Engine:

    sudo ./run_initialization_checks.sh && \
    sudo bmctl create config -c cluster1 && \
    sudo cp ~/cluster1.yaml bmctl-workspace/cluster1 && \
    sudo bmctl create cluster -c cluster1
    

A execução do comando bmctl começa a configurar um novo cluster híbrido. Isso inclui executar verificações de simulação nos nós, criar os clusters de administrador e usuário e registrar o cluster no Google Cloud usando o Connect. A configuração toda pode levar até 15 minutos. A saída a seguir será exibida durante a criação do cluster.

    Created config: bmctl-workspace/cluster1/cluster1.yaml
    Creating bootstrap cluster... OK
    Installing dependency components... OK
    Waiting for preflight check job to finish... OK
    - Validation Category: machines and network
            - [PASSED] 10.200.0.3
            - [PASSED] 10.200.0.4
            - [PASSED] 10.200.0.5
            - [PASSED] 10.200.0.6
            - [PASSED] 10.200.0.7
            - [PASSED] gcp
            - [PASSED] node-network
    Flushing logs... OK
    Applying resources for new cluster
    Waiting for cluster to become ready OK
    Writing kubeconfig file
    kubeconfig of created cluster is at bmctl-workspace/cluster1/cluster1-kubeconfig, please run
    kubectl --kubeconfig bmctl-workspace/cluster1/cluster1-kubeconfig get nodes
    to get cluster node status.
    Please restrict access to this file as it contains authentication credentials of your cluster.
    Waiting for node pools to become ready OK
    Moving admin cluster resources to the created admin cluster
    Flushing logs... OK
    Deleting bootstrap cluster... OK

Verifique e interaja com o cluster

O arquivo kubeconfig do cluster pode ser encontrado na máquina de administração, no diretório bmctl-workspace. Para verificar a implantação, conclua as etapas a seguir.

  1. Se você se desconectou do host de administrador, use o SSH para se conectar ao host:

    # You can copy the command from the output of the Terraform execution above
    gcloud compute ssh tfadmin@cluster1-abm-ws0-001 --project=PROJECT_ID --zone=GOOGLE_CLOUD_ZONE
    
  2. Configure a variável de ambiente KUBECONFIG com o caminho para o arquivo de configuração do cluster para executar comandos kubectl no cluster.

    export CLUSTER_ID=cluster1
    export KUBECONFIG=$HOME/bmctl-workspace/$CLUSTER_ID/$CLUSTER_ID-kubeconfig
    kubectl get nodes
    

    Você verá os nós do cluster impressos, semelhantes à seguinte saída:

    NAME          STATUS   ROLES    AGE   VERSION
    cluster1-abm-cp1-001   Ready    master   17m   v1.18.6-gke.6600
    cluster1-abm-cp2-001   Ready    master   16m   v1.18.6-gke.6600
    cluster1-abm-cp3-001   Ready    master   16m   v1.18.6-gke.6600
    cluster1-abm-w1-001    Ready    <none>   14m   v1.18.6-gke.6600
    cluster1-abm-w2-001    Ready    <none>   14m   v1.18.6-gke.6600
    

Fazer login no cluster pelo Console do Google Cloud

Para observar as cargas de trabalho no Console do Google Cloud, faça login no cluster.

Para instruções e mais informações sobre como fazer login no cluster, consulte Como fazer login em um cluster pelo Console do Google Cloud.

Limpar

Há duas formas de limpar a configuração do cluster.

Console

Terraform

  • Cancele o registro do cluster antes de excluir todos os recursos criados pelo Terraform.
# Use SSH to connect to the admin host
gcloud compute ssh tfadmin@cluster1-abm-ws0-001 --project=PROJECT_ID --zone=GOOGLE_CLOUD_ZONE

# Reset the cluster
export CLUSTER_ID=cluster1
export KUBECONFIG=$HOME/bmctl-workspace/$CLUSTER_ID/$CLUSTER_ID-kubeconfig
sudo bmctl reset --cluster $CLUSTER_ID

# log out of the admin host
exit
  • Use o Terraform para excluir todos os recursos.
terraform destroy --auto-approve