Como configurar o Cloud Run for Anthos

Neste guia, mostramos como configurar um cluster do Google Kubernetes Engine (GKE) e ativar o Cloud Run for Anthos. É possível usar o console do Google Cloud ou a Google Cloud CLI para ativar o Cloud Run for Anthos em clusters do GKE padrão e particulares.

A ativação do Cloud Run for Anthos instala o Istio e o Knative Serving no cluster para conectar e gerenciar suas cargas de trabalho sem estado. Para mais informações, consulte Visão geral da arquitetura do Cloud Run para Anthos.

Antes de começar

  1. O Cloud Run para Anthos é um complemento do Google Kubernetes Engine. Uma avaliação gratuita está disponível até 30 de setembro de 2021.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

Como configurar o ambiente de linha de comando

Embora seja possível usar o console do Google Cloud ou a CLI gcloud para gerenciar o Cloud Run for Anthos, há algumas tarefas que exigem a CLI gcloud.

Para configurar as ferramentas de linha de comando gcloud e kubectl para o Cloud Run para Anthos:

  1. Instale e inicialize a Google Cloud CLI.

  2. Defina a configuração de projeto padrão da CLI gcloud como o projeto que você acabou de criar ou um existente que você queira usar:

    gcloud config set project PROJECT-ID

    Substitua PROJECT-ID pelo ID do projeto que você criou.

  3. Defina zone como a zona de sua escolha para o cluster. É possível usar qualquer zona compatível com o GKE. Exemplo:

    gcloud config set compute/zone ZONE

    Substitua ZONE pela sua zona.

  4. Ative as APIs abaixo no projeto, que são necessárias para criar um cluster, criar um contêiner e publicar um contêiner no registro do Google Kubernetes Engine:

    gcloud services enable container.googleapis.com containerregistry.googleapis.com cloudbuild.googleapis.com
  5. Instale a ferramenta de linha de comando kubectl:

    gcloud components install kubectl
  6. Atualize os componentes da CLI gcloud instalados:

    gcloud components update

Como ativar o Cloud Run for Anthos

O Cloud Run para Anthos é executado em um cluster do GKE. É possível ativar o Cloud Run para Anthos em um cluster atual ou criar um novo com o Cloud Run para Anthos ativado.

Escolha como configurar o Cloud Run para Anthos:

O Cloud Run para Anthos também pode ser ativado em clusters particulares do GKE. Para informações sobre como criar um cluster particular do GKE, consulte este artigo na documentação do GKE.

Como criar um novo cluster do GKE com o Cloud Run para Anthos ativado

Estas instruções criam um cluster com as seguintes configurações:

Estas são as configurações de cluster recomendadas para testar o Cloud Run para Anthos. Para cargas de trabalho de produção, configure o cluster do GKE de acordo com suas necessidades. Para informações sobre os diferentes tipos de clusters do GKE e as opções de configuração, consulte Tipos de clusters na documentação do GKE.

Para criar um cluster e ativar o Cloud Run para Anthos:

  1. Crie um cluster:

    gcloud container clusters create CLUSTER-NAME \
    --zone=ZONE \
    --addons=HttpLoadBalancing,CloudRun \
    --machine-type=e2-standard-4 \
    --num-nodes=4 \
    --cluster-version=GKE-VERSION \
    --enable-stackdriver-kubernetes

    O escalonamento automático de cluster não é ativado por padrão, embora o Cloud Run for Anthos escalone automaticamente o número de instâncias dentro do cluster com base na capacidade disponível.

  2. Aguarde a conclusão da criação do cluster.

Como ativar o Cloud Run para Anthos em um cluster atual

Seu cluster do GKE precisa ter a seguinte configuração mínima:

É possível usar a CLI gcloud ou o console do Google Cloud para ativar o Cloud Run para Anthos em um cluster:

Console

Para ativar o Cloud Run para Anthos em um cluster atual.

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

    Acessar o Google Kubernetes Engine

  2. Clique no nome do cluster em que você quer ativar o Cloud Run para Anthos.

  3. Clique em Editar.

  4. Clique em Ativar o Cloud Run for Anthos.

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

Linha de comando

Para ativar o Cloud Run para Anthos em um cluster atual.

  1. Ative o cluster usando o seguinte comando:

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

    Substitua:

    • CLUSTER_NAME: o nome do cluster.
    • ZONE: a zona do cluster. Por exemplo, us-central1-a.
  2. Aguarde a conclusão da ativação. Após a conclusão, a linha de comando retorna uma mensagem semelhante à seguinte:

    Updating your-cluster-name...done.

Como definir as configurações padrão para a gcloud CLI

Depois de criar o cluster, é possível definir valores padrão para a Google Cloud CLI usar. Quando você usa a linha de comando, isso remove os prompts subsequentes dos padrões definidos, como o nome ou o local do cluster.

É possível definir configurações padrão para:

  • Nome do cluster
  • Local do cluster
  • Credenciais
  • Namespace
  • Plataforma

Para definir padrões:

  1. Defina o cluster padrão e o local do cluster. Em seguida, receba as credenciais executando os seguintes comandos:

    gcloud config set run/platform gke
    gcloud config set run/cluster CLUSTER
    gcloud config set run/cluster_location ZONE
    gcloud container clusters get-credentials CLUSTER

    Substitua:

    • CLUSTER pelo nome do cluster.
    • ZONE pelo local do cluster.
  2. Por padrão, o cluster é criado com um namespace chamado default. Para saber mais sobre namespaces e por que convém criar e usar um diferente de default, consulte namespace.

    Para criar um novo namespace, execute:

    kubectl create namespace NAMESPACE

    Substitua NAMESPACE pelo nome do namespace que você quer criar.

  3. Se você criou um novo namespace na etapa anterior, defina esse namespace como o padrão usado sempre que você invocar a Google Cloud CLI. Caso contrário, o namespace default será usado. Para definir o novo namespace, execute o seguinte comando:

    gcloud config set run/namespace NAMESPACE

    Substitua NAMESPACE pelo nome do namespace que você quer que a CLI gcloud use por padrão.

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 acesso a recursos.

Para configurar os serviços fornecidos pelas APIs do Google Cloud, como as APIs Compute, Storage, Database ou Machine Learning dentro do seu Cluster do GKE, consulte Como usar a Identidade da carga de trabalho.

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 em um cluster do Google Kubernetes Engine que esteja fora do projeto atual. Para mais informações sobre a multilocação do GKE, consulte Multilocação de cluster.

Para saber como configurar a multilocação do Cloud Run for Anthos, consulte Multilocação entre projetos.

Como configurar uma rede privada e interna

A implantação de serviços em uma rede interna é útil para empresas que fornecem apps internos para a equipe. Ela também é importante para os serviços usados por clientes executados fora do cluster do Cloud Run for Anthos. 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 da Google Cloud CLI 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 run deploy sample \
    --image gcr.io/knative-samples/helloworld \
    --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:

    Hello World!
    
  7. Saia da sessão SSH:

    exit
    

Como usar uma instalação separada do Istio

As instruções a seguir mostram como conectar o Anthos Service Mesh, o complemento Istio no GKE ou uma instalação do Istio personalizada com o Cloud Run for Anthos, além dos componentes do Istio instalados por padrão no Cloud Run for Anthos.

Os componentes do Istio incluídos na instalação padrão do Cloud Run for Anthos não são compatíveis com a injeção de arquivo secundário automática. No entanto, é possível usar uma instalação extra do Istio para ativar a injeção do arquivo secundário do Istio no namespace em que seus serviços são executados.

Para usar outra instalação do Istio, é necessário verificar se o Gateway da Entrada do Istio se chama istio-ingressgateway no namespace istio-system. O Cloud Run para Anthos é compatível e processa o tráfego externo dos gateways de entrada do Istio instalados em:

  • O namespace istio-system, com o domínio local do cluster istio-ingressgateway.istio-system.svc.cluster.local, que é configurado por padrão quando você usa outra instalação do Istio.
  • O namespace gke-system, com o domínio local do cluster istio-ingress.gke-system.svc.cluster.local, que é configurado com a instalação padrão do Cloud Run para Anthos.

Importante: se você configurar e usar o AuthorizationPolicy do Istio, será necessário resolver uma vulnerabilidade conhecida com a correspondência de tipo de caminho para o controle de acesso. Para detalhes sobre como evitar a exposição à vulnerabilidade, consulte Práticas recomendadas de segurança.

Para verificar o outro gateway de entrada do Istio que o Cloud Run para Anthos usa:

  1. Abra o ConfigMap config-istio:

    kubectl get configmap config-istio --namespace knative-serving -oyaml
    
  2. Verifique se o outro gateway de entrada do Istio se chama istio-ingressgateway e está no namespace istio-system.

Como ativar HTTPS e domínios personalizados

Se você quer usar domínios HTTPS e personalizados que se aplicam ao cluster, consulte Como ativar certificados HTTPS e TLS automático e mapear domínios personalizados.

Como desativar o Cloud Run for Anthos

Para desativar o Cloud Run para Anthos no cluster:

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

    Acessar o Google Kubernetes Engine

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

  3. Clique em Editar.

  4. No menu do Cloud Run for Anthos, selecione Desativar.

  5. Clique em Save.

A seguir