Como ativar o Cloud Run for Anthos no Google Cloud em clusters existentes do GKE

Aprenda a ativar o Cloud Run for Anthos em clusters existentes do GKE para gerenciar as cargas de trabalho sem estado.

Pré-requisitos

Nesta página, presume-se que você já tenha configurado o ambiente e tenha um cluster com a seguinte configuração mínima:

  • Nós com duas vCPUs
  • Escopos: https://www.googleapis.com/auth/logging.write, https://www.googleapis.com/auth/monitoring.write

Como ativar um cluster existente para o Cloud Run for Anthos

É possível usar a linha de comando gcloud ou o console para ativar o Cloud Run for Anthos para um cluster:

Console

Para ativar um cluster existente para o Cloud Run for Anthos:

  1. Acesse a página do Google Kubernetes Engine no Console do Cloud:

    Acessar o Google Kubernetes Engine

  2. Clique no cluster que você quer ativar para o Cloud Run for Anthos.

  3. Clique em Editar.

  4. Selecione Ativar o Cloud Run para Anthos no Google Cloud.

  5. Clique em Salvar. Depois que a atualização for concluída, o cluster será compatível com o Cloud Run for Anthos.

Linha de comando

Para ativar um cluster existente para o Cloud Run for Anthos:

  1. Ative o cluster usando o comando:

    gcloud container clusters update \
    CLUSTER_NAME \
    --update-addons=CloudRun=ENABLED,HttpLoadBalancing=ENABLED \
    --zone=ZONE

    Substitua:

    • CLUSTER_NAME pelo nome do seu cluster;
    • ZONE pela zona que você está usando para o cluster, por exemplo, us-central1-a.
  2. Aguarde a conclusão da ativação: após a conclusão, você verá uma mensagem semelhante a Updating your-cluster-name...done..

Como ativar implantações em um cluster particular

É possível ignorar as instruções a seguir, caso esteja usando o Cloud Run para Anthos no Google Cloud em um cluster do GKE com as seguintes versões:

  • 1.16.8-gke.7+
  • 1.15.11-gke.9+

Para implantar um serviço no Cloud Run for Anthos no Google Cloud em um cluster particular do GKE, permita conexões TCP dos servidores do plano de controle (mestre) com nós na porta 8443 e especifique manualmente a porta 8443 na lista de conexões TCP permitidas editando as regras de firewall no projeto:

  1. Visualize o bloco de CIDR do cluster do plano de controle e registre o valor no campo masterIpv4CidrBlock:

    gcloud container clusters describe CLUSTER_NAME
  2. Para visualizar e registrar o valor no campo TARGET_TAGS:

    gcloud compute firewall-rules list \
              --filter 'name~^gke-CLUSTER_NAME' \
               --format 'table(
                       name,
                       network,
                       direction,
                       sourceRanges.list():label=SRC_RANGES,
                       allowed[].map().firewall_rule().list():label=ALLOW,
                       targetTags.list():label=TARGET_TAGS
               )'
  3. Para adicionar uma regra de firewall usando os valores registrados acima:

    gcloud compute firewall-rules create FIREWALL_RULE_NAME \
         --action ALLOW \
         --direction INGRESS \
         --source-ranges masterIpv4CidrBlock \
         --rules tcp:8443 \
         --target-tags TARGET_TAGS

    Para mais informações, consulte Como criar regras de firewall.

Como ativar implantações para uma rede interna particular

A implantação de serviços em uma rede interna é útil para empresas que fornecem apps internos para a equipe e para serviços usados por clientes executados fora do Cloud Run para Anthos no cluster do Google Cloud. Essa configuração permite que outros recursos na rede se comuniquem com o serviço usando um endereço IP interno particular (RFC 1918) que não possa ser acessado pelo público.

Para criar a rede interna, configure o gateway de entrada do Istio para usar balanceamento de carga TCP/UDP interno em vez de um balanceador de carga de rede externo e público. Em seguida, implante os serviços do Cloud Run for Anthos em um endereço IP interno na rede VPC.

Antes de começar

  • Você precisa ter permissões admin no cluster.
  • Somente as versões 310.0 ou posteriores do SDK do Cloud são compatíveis. Para mais detalhes, consulte Como configurar o gcloud.

Para configurar o balanceador de carga interno:

  1. Para atualizar o gateway de entrada do Istio para usar o balanceamento de carga TCP/UDP interno criando um novo cluster ou atualizando um existente:

    • Para criar um novo cluster com um balanceador de carga interno:

      gcloud container clusters create CLUSTER_NAME \
      --addons=HttpLoadBalancing,CloudRun \
      --machine-type=n1-standard-2  \
      --num-nodes=3  \
      --enable-stackdriver-kubernetes \
      --cloud-run-config=load-balancer-type=INTERNAL
    • Para atualizar um cluster atual para usar um balanceador de carga interno:

      gcloud container clusters update CLUSTER_NAME
      --update-addons=CloudRun=ENABLED \
      --cloud-run-config=load-balancer-type=INTERNAL

    Pode levar alguns minutos para que a alteração entre em vigor.

  2. Execute o seguinte comando para acompanhar as atualizações do cluster do GKE:

    kubectl -n gke-system get svc istio-ingress --watch
    
    1. Observe a anotação "cloud.google.com/load-balancer-type: Internal".
    2. Procure o valor de IP no balanceador de carga do Ingress a fim de mudar para um endereço IP particular.
    3. Pressione Ctrl+C para interromper as atualizações depois de ver um endereço IP particular no campo IP.

Para verificar a conectividade interna após as alterações:

  1. Para implantar um serviço chamado sample no Cloud Run for Anthos no namespace default:

    gcloud kuberun core services create sample \
    --image gcr.io/knative-samples/simple-api \
    --namespace default
    
  2. Para criar uma máquina virtual (VM) do Compute Engine na mesma zona que o cluster do GKE:

    VM=cloudrun-gke-ilb-tutorial-vm
    
    gcloud compute instances create $VM
    
  3. Armazene o endereço IP particular do gateway de entrada do Istio em uma variável de ambiente chamada EXTERNAL_IP e um arquivo chamado external-ip.txt:

    export EXTERNAL_IP=$(kubectl -n gke-system get svc istio-ingress \
        -o jsonpath='{.status.loadBalancer.ingress[0].ip}' | tee external-ip.txt)
    
  4. Copie o arquivo que contém o endereço IP da VM:

    gcloud compute scp external-ip.txt $VM:~
    
  5. Conecte-se à VM usando SSH:

    gcloud compute ssh $VM
    
  6. Durante a sessão SSH, teste o serviço de amostra:

    curl -s -w'\n' -H Host:sample.default.example.com $(cat external-ip.txt)
    

    A saída é a seguinte:

    OK
    
  7. Saia da sessão SSH:

    exit
    

Como ativar métricas em um cluster com a identidade da carga de trabalho

Ao ativar a Identidade da carga de trabalho, o Cloud Run para Anthos não informa determinadas métricas, como contagem de solicitações de revisão ou latência de solicitação para o pacote de operações do Google Cloud, mas continua gerando relatórios de métricas de CPU e memória.

Se você quiser ativar todas as métricas, precisará definir manualmente as permissões para gravá-las no Cloud Monitoring. Para isso, conceda o papel "Gravador de métricas do Monitoring" à conta de serviço do Google (GSA, na sigla em inglês) associada ao serviço do Cloud Run for Anthos.

Conceda as permissões do papel de gravador de métricas do Monitoring à GSA do serviço:

gcloud projects add-iam-policy-binding PROJECT_ID 
--member=serviceAccount:GSA_NAME@GSA_PROJECT.iam.gserviceaccount.com
--role=roles/monitoring.metricWriter

Substitua:

  • PROJECT_ID pelo ID de um projeto de cluster que hospeda sua KSA;
  • GSA_PROJECT pelo ID do projeto de uma GSA que não está no cluster. Use qualquer GSA na organização.

Saiba mais em Como conceder, alterar e revogar o acesso a recursos.

Como ativar a injeção automática de arquivos secundários do Istio

Para ativar a injeção automática de arquivos secundários do Istio no namespace do serviço implantado, é necessário usar uma instalação separada do Istio.

Como desenvolver uma configuração multilocatária

Em casos de uso multilocatários, você precisará gerenciar e implantar os serviços do Cloud Run for Anthos no Google Cloud em um cluster do Google Kubernetes Engine que esteja fora do projeto atual. Nesta seção, ensinamos como desenvolver o Cloud Run para Anthos nos serviços do Google Cloud em uma configuração de cluster com vários locatários.

Para gerenciar e implantar os serviços do Cloud Run para Anthos no Google Cloud em um cluster do Google Kubernetes Engine fora do projeto atual:

  1. Verifique se você tem acesso de leitura ao ID do projeto do Google Cloud do cluster em que está implantando.

  2. Atualize seu arquivo kubeconfig local com credenciais para o cluster de destino do GKE:

    gcloud container clusters get-credentials NAME \
    --region=REGION \
    --project=PROJECT-ID
    • REGION é a região do Compute Engine do cluster de destino.
    • PROJECT-ID é o projeto ao qual você tem acesso de leitura.

    Para mais informações, consulte a documentação de referência do comando gcloud container clusters get-credentials.

Agora é possível executar comandos no cluster de destino do GKE especificado no arquivo kubeconfig.

Por exemplo, o comando a seguir implantará um serviço do Cloud Run for Anthos no Google Cloud usando uma imagem de contêiner especificada no Cluster do GKE com credenciais armazenadas no arquivo kubeconfig:

gcloud kuberun core services create SERVICE-NAME --image IMAGE-NAME

Como desativar o Cloud Run for Anthos em um cluster

É possível desativar o Cloud Run for Anthos de um cluster a qualquer momento, usando o console ou a linha de comando.

Console

Para desativar o Cloud Run for Anthos em um cluster:

  1. Acesse a página do Google Kubernetes Engine no Console do Cloud:

    Acessar o Google Kubernetes Engine

  2. Clique no cluster em que você quer desativar o Cloud Run for Anthos.

  3. Selecione Desativar o Cloud Run for Anthos no Google Cloud.

  4. Como opção, desative os complementos que você não usará no cluster sem o Cloud Run for Anthos. Isso pode incluir o Istio.

  5. Clique em Salvar.

Linha de comando

Para excluir um cluster, siga estas etapas:

  1. Chame o comando a seguir:

    gcloud container clusters update \
    CLUSTER_NAME \
    --update-addons=CloudRun=DISABLED \
    --zone=ZONE

    Substitua:

    • CLUSTER_NAME pelo nome do seu cluster;
    • ZONE pela zona que você está usando para o cluster, por exemplo, us-central1-a.
  2. Aguarde a conclusão da ativação: após a conclusão, você verá uma mensagem semelhante a Updating your-cluster-name...done..