Configurar o projeto e o cluster do GKE por conta própria

Ao instalar o Anthos Service Mesh usando asmcli, ele pode configurar o projeto e o cluster do GKE no Google Cloud para você se você incluir a sinalização --enable_all ou as sinalizações de ativação mais granulares. Se você preferir fazer a configuração por conta própria em vez de deixar que asmcli faça as alterações, siga as etapas nesta página.

Se você já tiver uma versão anterior do Anthos Service Mesh instalada, não será necessário fazer alterações no projeto ou no cluster antes de usar asmcli para fazer upgrade para a versão mais recente do Anthos Service Mesh.

Por padrão, asmcli não instala o istio-ingressgateway. Recomendamos que você implante e gerencie o plano de controle e os gateways separadamente. O Anthos Service Mesh é compatível com a injeção automática para implantações de gateway, o que facilita os upgrades no Anthos Service Mesh. Depois de fazer upgrade do Anthos Service Mesh, reinicie os gateways como os serviços para escolher a nova configuração do plano de controle. Para mais informações, consulte Como instalar e fazer upgrade de gateways.

Antes de começar

Crie o projeto

  1. Consiga o ID e o número do projeto em que o cluster foi criado.

    gcloud

    Execute este comando:

    gcloud projects list
    

    Console

    1. Acesse a página Painel no console do Google Cloud:

      Ir para a página "Painel"

    2. Clique na lista suspensa na parte superior da página. Na janela Selecionar a partir de exibida, selecione seu projeto.

      O ID do projeto e o número do projeto são exibidos no card Informações do projeto do painel do projeto:

  2. Crie as variáveis de ambiente a seguir:

    • Defina o pool de carga de trabalho usando o ID do projeto:

      export WORKLOAD_POOL=PROJECT_ID.svc.id.goog
      
    • Defina o código da malha usando o número do projeto:

      export MESH_ID="proj-PROJECT_NUMBER"
      
  3. Defina os papéis necessários de gerenciamento de identidade e acesso (IAM, na sigla em inglês). Se você for um proprietário do projeto, terá todas as permissões necessárias para concluir a instalação. Se você não for proprietário do projeto, precisará que o proprietário conceda os seguintes papéis específicos do IAM. No comando a seguir, substitua PROJECT_ID pelo ID do projeto da etapa anterior e GCP_EMAIL_ADDRESS pela conta usada para fazer login no Google Cloud.

    ROLES=(
    'roles/servicemanagement.admin' \
    'roles/serviceusage.serviceUsageAdmin' \
    'roles/meshconfig.admin' \
    'roles/compute.admin' \
    'roles/container.admin' \
    'roles/resourcemanager.projectIamAdmin' \
    'roles/iam.serviceAccountAdmin' \
    'roles/iam.serviceAccountKeyAdmin' \
    'roles/gkehub.admin')
    for role in "${ROLES[@]}"
    do
      gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "user:GCP_EMAIL_ADDRESS" \
        --role="$role"
    done
    

    Se você incluir a sinalização --enable_all ou --enable_gcp_iam_roles ao executar asmcli, ela definirá os papéis obrigatórios do IAM para você.

  4. Ative as APIs do Google necessárias:

    gcloud services enable \
        --project=PROJECT_ID \
        mesh.googleapis.com
    

    Além de mesh.googleapis.com, esse comando também ativa as seguintes APIs:

    API Descrição
    meshconfig.googleapis.com Redireciona os dados de configuração da malha para o Google Cloud. Além disso, permite acessar as páginas do Anthos Service Mesh no console do Google Cloud e usar a autoridade certificadora do Anthos Service Mesh (CA do Mesh).
    meshca.googleapis.com API Anthos Service Mesh Certificate Authority. Permite o uso de um provedor de certificado gerenciado, incluído no Anthos Service Mesh. Essa API é ativada mesmo que você esteja usando o Certificate Authority Service ou o CA do Istio.
    container.googleapis.com Usado para criar e gerenciar aplicativos baseados em contêiner, com a tecnologia de código aberto do Kubernetes.
    monitoring.googleapis.com Gerencia seus dados e configurações do Cloud Monitoring. Usado para armazenar a telemetria do aplicativo exibida no console do Google Cloud.
    gkehub.googleapis.com Usado para configurar o escopo da malha. Para mais informações, confira a documentação sobre gerenciamento de frotas.
    stackdriver.googleapis.com Usado pelo pacote de operações do Google Cloud para coletar sinais em todos os apps, plataformas e serviços internos e externos do Google Cloud.
    opsconfigmonitoring.googleapis.com Coleta, agrega e indexa recursos no Google Cloud, o que habilita a IU do Anthos Service Mesh.
    connectgateway.googleapis.com Permite que a infraestrutura do Google se conecte com segurança aos clusters registrados do GKE em várias nuvens e ambientes híbridos.

    A ativação das APIs pode levar um minuto ou mais para ser concluída. Quando as APIs estão ativadas, você vê uma saída semelhante a esta:

    Operation "operations/acf.601db672-88e6-4f98-8ceb-aa3b5725533c" finished
    successfully.
    

    Se você incluir a sinalização --enable_all ou --enable_apis ao executar asmcli, ela ativará as APIs necessárias para você.

Configurar o cluster

Se você incluir a sinalização --enable_all ou uma das sinalizações de ativação mais granulares, asmcli configurará o cluster para você.

  1. Defina a zona ou a região padrão da Google Cloud CLI. Se você não definir o padrão aqui, especifique a opção --zone ou --region nos comandos gcloud container clusters desta página.

    • Se você tiver um cluster de zona única, defina a zona padrão:

      gcloud config set compute/zone CLUSTER_LOCATION
      
    • Se você tiver um cluster regional, defina a região padrão:

      gcloud config set compute/region CLUSTER_LOCATION
      
  2. Defina o mesh_idrótulo no cluster. Se o cluster tiver rótulos existentes que você quer manter, inclua-os ao adicionar o rótulo mesh_id.

    1. Para ver se o cluster tem rótulos existentes:

      gcloud container clusters describe CLUSTER_NAME \
          --project PROJECT_ID
      

      Procure o campo resourceLabels na saída. Cada rótulo é armazenado em uma linha separada no campo resourceLabels. Por exemplo:

      resourceLabels:
        csm: ''
        env: dev
        release: stable

      Para facilitar, é possível adicionar os rótulos a uma variável de ambiente. No exemplo a seguir, substitua YOUR_EXISTING_LABELS por uma lista separada por vírgulas dos rótulos existentes no seu cluster no formato KEY=VALUE. Por exemplo: env=dev,release=stable

      export EXISTING_LABELS="YOUR_EXISTING_LABELS"
      
    2. Defina o rótulo mesh_id:

      • Se o cluster tiver rótulos que você quer manter, atualize o cluster com o mesh_id e os rótulos existentes:

        gcloud container clusters update CLUSTER_NAME \
            --project PROJECT_ID \
            --update-labels=mesh_id=${MESH_ID},${EXISTING_LABELS}
        
      • Se o cluster não tiver rótulos existentes, atualize o cluster com apenas com o rótulo mesh_id:

        gcloud container clusters update CLUSTER_NAME \
            --project=PROJECT_ID \
            --update-labels=mesh_id=${MESH_ID}
        
  3. Ative a Identidade da carga de trabalho:

    gcloud container clusters update CLUSTER_NAME \
        --project=PROJECT_ID \
        --workload-pool=${WORKLOAD_POOL}
    

    A ativação da Identidade da carga de trabalho pode levar de 10 a 15 minutos.

  4. Registre o cluster na frota.

  5. Inicialize seu projeto para prepará-lo para instalação. Entre outras coisas, este comando cria uma conta de serviço para permitir componentes de plano de dados, como o proxy sidecar, para acessar com segurança os dados e os recursos do seu projeto. No comando a seguir, substitua FLEET_PROJECT_ID pelo projeto host da frota:

    curl --request POST  \
     --header "Authorization: Bearer $(gcloud auth print-access-token)" \
     --header "Content-Type: application/json" \
     --data '{"workloadIdentityPools":["FLEET_PROJECT_ID.hub.id.goog","FLEET_PROJECT_ID.svc.id.goog","PROJECT_ID.svc.id.goog"]}' \
     "https://meshconfig.googleapis.com/v1alpha1/projects/PROJECT_ID:initialize"
    

    A resposta do comando mostra chaves vazias: {}

  6. Ative o Cloud Monitoring e o Cloud Logging no GKE:

    gcloud container clusters update CLUSTER_NAME \
        --project=PROJECT_ID \
        --enable-stackdriver-kubernetes
    

O projeto e o cluster estão prontos para uma nova instalação usando asmcli.

A seguir