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
- O Cloud Run para Anthos é um complemento do Google Kubernetes Engine. Uma avaliação gratuita está disponível até 30 de setembro de 2021.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
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:
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.
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.
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
Instale a ferramenta de linha de comando
kubectl
:gcloud components install kubectl
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:
- Cloud Run para Anthos ativado
- Versão do Kubernetes: versões do GKE disponíveis
- Nós com quartos vCPUs
- Namespace padrão:
default
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:
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
CLUSTER-NAME é o nome escolhido para o cluster.
ZONE é a zona do Compute Engine do cluster.
GKE-VERSION é a versão do GKE que você quer. Veja as versões disponíveis.
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.
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:
- Nós com quatro vCPUs Se você precisar alterar o tipo de máquina do cluster, consulte Como migrar cargas de trabalho para diferentes tipos de máquina.
- Escopos:
https://www.googleapis.com/auth/logging.write
https://www.googleapis.com/auth/monitoring.write
É 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.
Acesse a página do Google Kubernetes Engine no console do Google Cloud:
Clique no nome do cluster em que você quer ativar o Cloud Run para Anthos.
Clique em Editar.
Clique em Ativar o Cloud Run for Anthos.
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.
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
.
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:
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.
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 dedefault
, consulte namespace.Para criar um novo namespace, execute:
kubectl create namespace NAMESPACE
Substitua NAMESPACE pelo nome do namespace que você quer criar.
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:
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.
Execute o seguinte comando para acompanhar as atualizações do cluster do GKE:
kubectl -n gke-system get svc istio-ingress --watch
- Observe a anotação "cloud.google.com/load-balancer-type: Internal".
- Procure o valor de
IP
no balanceador de carga do Ingress a fim de mudar para um endereço IP particular. - Pressione
Ctrl+C
para interromper as atualizações depois de ver um endereço IP particular no campoIP
.
Para verificar a conectividade interna após as alterações:
Para implantar um serviço chamado
sample
no Cloud Run for Anthos no namespacedefault
:gcloud run deploy sample \ --image gcr.io/knative-samples/helloworld \ --namespace default
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
Armazene o endereço IP particular do gateway de entrada do Istio em uma variável de ambiente chamada
EXTERNAL_IP
e um arquivo chamadoexternal-ip.txt
:export EXTERNAL_IP=$(kubectl -n gke-system get svc istio-ingress \ -o jsonpath='{.status.loadBalancer.ingress[0].ip}' | tee external-ip.txt)
Copie o arquivo que contém o endereço IP da VM:
gcloud compute scp external-ip.txt $VM:~
Conecte-se à VM usando SSH:
gcloud compute ssh $VM
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!
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 clusteristio-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 clusteristio-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:
Abra o ConfigMap
config-istio
:kubectl get configmap config-istio --namespace knative-serving -oyaml
Verifique se o outro gateway de entrada do Istio se chama
istio-ingressgateway
e está no namespaceistio-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:
Acesse a página do Google Kubernetes Engine no console do Google Cloud:
Clique no cluster em que você quer desativar o Cloud Run para Anthos.
Clique em Editar.
No menu do Cloud Run for Anthos, selecione Desativar.
Clique em Save.
A seguir
- Visão geral da arquitetura do Cloud Run for Anthos
- Como ativar certificados HTTPS e TLS automático
- Como implantar a partir de um contêiner
- Como criar contêineres
- Solução de problemas