Crie um cluster híbrido do Google Distributed Cloud em MVs do Compute Engine através do Terraform

Este documento mostra como configurar VMs no Compute Engine com o Terraform para que possa instalar e experimentar o Google Distributed Cloud no modo de alta disponibilidade (HA). Para obter informações sobre como usar a CLI do Google Cloud para este fim, consulte o artigo Experimente o Google Distributed Cloud em VMs do Compute Engine.

Pode experimentar o Google Distributed Cloud rapidamente e sem ter de preparar hardware. Os scripts do Terraform fornecidos criam uma rede de VMs no Compute Engine que pode ser usada para executar o Google Distributed Cloud. Neste tutorial, usamos o modelo de implementação de cluster híbrido.

Conclua os passos seguintes para executar um cluster de amostra:

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

Antes de começar

A implementação requer os seguintes recursos:

Configure a rede de VMs no Compute Engine

Nesta secção, usa os scripts do Terraform do repositório anthos-samples. Os scripts configuram o Compute Engine com os seguintes recursos:

  • Seis VMs para implementar o cluster híbrido:
    • Uma VM de administrador usada para implementar o cluster híbrido nas outras máquinas.
    • Três VMs para os três nós do plano de controlo necessários para executar o plano de controlo 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 de sobreposição VxLAN entre todos os nós para emular a conetividade L2.
  • Acesso SSH aos nós control-plane e worker a partir da VM de administrador.

Infraestrutura bare metal no Google Cloud com VMs do Compute Engine

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

###################################################################################
# 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. Transfira os scripts do Terraform para o exemplo de anthos-bm-gcp-terraform:

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

    project_id       = "PROJECT_ID"
    region           = "GOOGLE_CLOUD_REGION"
    zone             = "GOOGLE_CLOUD_ZONE"
    credentials_file = "PATH_TO_GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY_FILE"
    
  3. Mude o nome do ficheiro terraform.tfvars.sample para o nome predefinido usado pelo Terraform para o ficheiro de variáveis:

    mv terraform.tfvars.sample terraform.tfvars
    
  4. Inicialize o diretório de exemplo como um diretório de trabalho do Terraform. Isto configura as configurações de gestão de estado do Terraform necessárias, semelhantes ao git init:

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

    terraform plan
    
  6. Aplicar as alterações descritas no script do Terraform. Este passo executa o plano no fornecedor indicado (neste caso Google Cloud) para alcançar o estado dos recursos segmentados:

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

Implemente o cluster híbrido

Depois de a execução do Terraform estar concluída, pode implementar o cluster híbrido.

  1. Use o SSH para se ligar ao anfitrião de administração:

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

    Pode ignorar quaisquer mensagens sobre a atualização da VM e concluir este tutorial. Se planeia manter as VMs como um ambiente de teste, recomendamos que atualize o SO ou faça a atualização para a versão seguinte, conforme descrito na documentação do Ubuntu.

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

    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 inicia a configuração de um novo cluster híbrido. Isto inclui a realização de verificações prévias nos nós, a criação dos clusters de administrador e de utilizador, bem como o registo do cluster Google Cloud através do agente Connect. A configuração completa pode demorar até 15 minutos. Vê o seguinte resultado à medida que o cluster é criado:

    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

Valide e interaja com o cluster

Pode encontrar o ficheiro kubeconfig do seu cluster na máquina de administração no diretório bmctl-workspace. Para validar a sua implementação, conclua os seguintes passos.

  1. Se se desligou do anfitrião de administração, use o SSH para se ligar ao anfitrião:

    # 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. Defina a variável de ambiente KUBECONFIG com o caminho para o ficheiro 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
    

    Deverá ver os nós do cluster impressos, semelhantes ao seguinte resultado:

    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
    

Inicie sessão no cluster a partir da Google Cloud consola

Para observar as suas cargas de trabalho na Google Cloud consola, tem de iniciar sessão no cluster.

Para ver instruções e mais informações sobre como iniciar sessão no cluster, consulte o artigo Trabalhe com clusters a partir da Google Cloud consola.

Limpar

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

Consola

Terraform

  • Anule o registo do cluster antes de eliminar 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 eliminar todos os recursos.
terraform destroy --auto-approve