Configure o projeto e o cluster do GKE

Quando instala o Cloud Service Mesh através do asmcli, pode configurar o seu projeto e o cluster do GKE on Google Cloud para si se incluir a flag --enable_all ou as flags de ativação mais detalhadas. Se preferir fazer a configuração em vez de deixar que o asmcli faça as alterações, siga os passos nesta página.

Se já tiver uma versão anterior do Cloud Service Mesh instalada, não precisa de fazer alterações ao seu projeto nem cluster antes de usar asmcli para atualizar para a versão mais recente do Cloud Service Mesh.

Por predefinição, o asmcli não instala o istio-ingressgateway. Recomendamos que implemente e faça a gestão do plano de controlo e das gateways separadamente. O Cloud Service Mesh suporta a injeção automática para implementações de gateways, o que facilita as atualizações do Cloud Service Mesh. Depois de atualizar o Cloud Service Mesh, reinicie os gateways, tal como os seus serviços, para receber a nova configuração do plano de controlo. Para mais informações, consulte o artigo Instalar e atualizar gateways.

Antes de começar

Configure o seu projeto

  1. Obtenha o ID do projeto no qual o cluster foi criado.

    gcloud

    Execute o seguinte comando:

    gcloud projects list
    

    Consola

    1. Aceda à página Painel de controlo na Google Cloud consola.

      Aceda à página Painel de controlo

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

      O ID do projeto é apresentado no cartão Informações do projeto no painel de controlo do projeto.

  2. Crie uma variável de ambiente para o Workload Identity Pool com o ID do projeto:

    export WORKLOAD_POOL=PROJECT_ID.svc.id.goog
    
  3. Defina as funções de gestão de identidade e de acesso (IAM) necessárias. Se for o proprietário do projeto, tem todas as autorizações necessárias para concluir a instalação. Se não for um proprietário do projeto, precisa de alguém que o seja para lhe conceder as seguintes funções de IAM específicas. No comando seguinte, substitua PROJECT_ID pelo ID do projeto do passo anterior e GCP_EMAIL_ADDRESS pela conta que usa para iniciar sessão 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 incluir a flag --enable_all ou --enable_gcp_iam_roles quando executar asmcli, define as funções da IAM necessárias para si.

  4. Ative as APIs Google necessárias:

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

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

    API Finalidade Pode ser desativado
    meshconfig.googleapis.com O Cloud Service Mesh usa a API Mesh Configuration para retransmitir dados de configuração da sua malha para Google Cloud. Além disso, a ativação da API Mesh Configuration permite o acesso às páginas do Cloud Service Mesh na Google Cloud consola e a utilização da autoridade de certificação do Cloud Service Mesh. Não
    meshca.googleapis.com Relacionado com a autoridade de certificação do Cloud Service Mesh usada pelo Cloud Service Mesh gerido. Não
    container.googleapis.com Necessário para criar clusters do Google Kubernetes Engine (GKE). Não
    gkehub.googleapis.com Necessário para gerir a malha como uma frota. Não
    monitoring.googleapis.com Necessário para capturar telemetria para cargas de trabalho de malha. Não
    stackdriver.googleapis.com Necessário para usar a IU dos Serviços. Não
    opsconfigmonitoring.googleapis.com Necessário para usar a IU dos serviços para clusters fora doGoogle Cloud . Não
    connectgateway.googleapis.com Necessário para que o plano de controlo do Cloud Service Mesh gerido possa aceder às cargas de trabalho da malha. Sim*
    trafficdirector.googleapis.com Ativa um plano de controlo gerido altamente disponível e escalável. Sim*
    networkservices.googleapis.com Ativa um plano de controlo gerido altamente disponível e escalável. Sim*
    networksecurity.googleapis.com Ativa um plano de controlo gerido altamente disponível e escalável. Sim*

    A ativação das APIs pode demorar um minuto ou mais. Quando as APIs estão ativadas, vê um resultado semelhante ao seguinte:

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

    Se incluir a flag --enable_all ou --enable_apis quando executar o comando asmcli, ativa as APIs necessárias.

Configure o cluster

Se incluir a flag --enable_all ou uma das flags de ativação mais detalhadas, asmcli configura o cluster por si.

  1. Defina a zona ou a região predefinida para a CLI Google Cloud. Se não definir a predefinição aqui, certifique-se de que especifica a opção --zone ou --region nos comandos gcloud container clusters nesta página.

    • Se tiver um cluster de zona única, defina a zona predefinida:

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

      gcloud config set compute/region CLUSTER_LOCATION
      
  2. Ative o Workload Identity:

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

    A ativação do Workload Identity pode demorar entre 10 e 15 minutos.

  3. Registe o cluster na frota.

  4. Inicialize o projeto para o preparar para a instalação. Entre outras coisas, este comando cria uma conta de serviço para permitir que os componentes do plano de dados, como o proxy sidecar, acedam de forma segura aos dados e aos recursos do seu projeto. No comando seguinte, substitua FLEET_PROJECT_ID pelo projeto de anfitrião 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"
    

    O comando responde com chavetas vazias: {}

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

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

O seu projeto e cluster estão agora prontos para uma nova instalação com o asmcli.

O que se segue?