Neste guia, explicamos como fazer uma instalação limpa da versão 1.5.10-asm.2 do Anthos Service Mesh em um cluster do Google Cloud GKE usando a interface de linha de comando (CLI) do Anthos. Observe as seguintes limitações com esta versão Beta da CLI do GKE Enterprise:
- Os upgrades não são compatíveis. Se você tiver uma versão anterior do Anthos Service Mesh instalada no cluster, consulte Como fazer upgrade do Anthos Service Mesh no GKE.
- As instalações no GKE no VMware não são compatíveis. Para instalar o Anthos Service Mesh em um cluster atual do GKE no VMware, consulte Como instalar o Anthos Service Mesh no local.
A instalação ativa os seguintes recursos:
- Telemetria do Mesh.
- Segurança do Mesh, incluindo a autoridade de certificação do Anthos Service Mesh (Mesh CA).
- Os recursos Padrão compatíveis listados na página Recursos compatíveis.
Neste guia, também explicamos como registrar o cluster na frota que está no mesmo projeto do Google Cloud que o cluster. Uma frota permite organizar clusters para facilitar o gerenciamento de vários deles. Ao registrar os clusters em uma frota, é possível agrupar serviços e outras infraestruturas conforme necessário para aplicar políticas consistentes.
Antes de começar
Antes de iniciar a instalação, faça o seguinte:
- Configure o ambiente.
- Instalar a CLI do GKE Enterprise.
- Revise os seguintes requisitos e restrições.
Requisitos
Você precisa ter uma licença ou assinatura de teste do GKE Enterprise. Consulte o guia de preços do GKE Enterprise para ver mais detalhes.
Seu cluster do GKE precisa atender aos seguintes requisitos:
- No mínimo, quatro nós.
- O tipo de máquina mínimo
é
e2-standard-4
, que tem quatro vCPUs. - Use um canal de lançamento em vez de uma versão estática do GKE
Para serem incluídos na malha de serviço, as portas precisam ser nomeadas, e o nome precisa incluir o protocolo da porta na seguinte sintaxe:
name: protocol[-suffix]
, em que os colchetes indicam um sufixo opcional que precisa começar com um traço. Para mais informações, Como nomear portas de serviço.Se você estiver instalando o Anthos Service Mesh em um cluster particular, será necessário adicionar uma regra de firewall para abrir a porta 15017 caso queira usar a injeção automática de sidecar. Se não adicionar a regra de firewall e a injeção automática de sidecar estiver ativada, você receberá um erro ao implantar as cargas de trabalho. Saiba mais sobre como adicionar uma regra de firewall em Como adicionar regras de firewall para casos de uso específicos.
Se você tiver criado um perímetro de serviço na sua organização, talvez seja necessário adicionar o serviço Mesh CA ao perímetro. Saiba mais em Como adicionar o Mesh CA a um perímetro de serviço .
Restrições
Só é possível ter uma instalação do Anthos Service Mesh por projeto do Google Cloud. Não é possível ter várias implantações de malha em um único projeto
Dados do certificado
Os certificados do Mesh CA incluem os seguintes dados sobre os serviços do aplicativo:
- O ID do projeto do Google Cloud
- O namespace do GKE
- O nome da conta de serviço do GKE
Como configurar padrões de projeto e cluster
Acesse o ID do projeto em que o cluster foi criado:
gcloud
gcloud projects list
Console
No console do Google Cloud, abra a página Painel.
Clique na lista suspensa Selecionar de na parte superior da página. Na janela Selecionar de exibida, selecione seu projeto. O ID do projeto é exibido no card Informações do projeto do Painel.
Crie uma variável de ambiente para o ID do projeto:
export PROJECT_ID=
YOUR_PROJECT_ID
Defina o ID do projeto padrão para a Google Cloud CLI:
gcloud config set project ${PROJECT_ID}
Crie as variáveis de ambiente a seguir:
Defina o nome do cluster:
export CLUSTER_NAME=YOUR_CLUSTER_NAME
Defina
CLUSTER_LOCATION
como a zona ou a região do cluster:export CLUSTER_LOCATION=YOUR_ZONE_OR_REGION
Defina a zona ou a região padrão da Google Cloud CLI.
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}
Como preparar arquivos de configuração de recursos
Use a CLI do GKE Enterprise e o kustomize
para exportar e corrigir arquivos do
recurso Config Connector que
você usará para atualizar um cluster com as opções exigidas pelo
Anthos Service Mesh. O recurso Config Connector é a representação do Kubernetes dos
recursos do Google Cloud.
Exportar arquivos de configuração de recurso
Use o comando gcloud beta anthos export
para gerar arquivos de configuração de
recursos para um cluster atual.
Crie um diretório para os recursos do Anthos Service Mesh. Por conveniência, as etapas a seguir se referem ao diretório que você cria como ASM_RESOURCES.
Altere para o diretório ASM_RESOURCES:
Faça o download do pacote
asm-patch
para o diretório de trabalho atual:kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm-patch@release-1.5-asm .
O comando cria um subdiretório chamado
asm-patch/
.Adicione um nome de diretório em uma variável de ambiente chamada
BASE_DIR
. Ao executar o comandogcloud beta anthos export
em um cluster atual, a CLI do GKE Enterprise cria um diretório com o nome especificado emBASE_DIR
e envia os arquivos de recursos do Config Connector para o diretório.export BASE_DIR=YOUR_BASE_DIR
Se você for configurar mais de um cluster, recomendamos que use o nome do cluster como o nome do diretório. Por exemplo, se você estiver preparando arquivos de configuração de recursos para dois clusters, depois de executar o comando
gcloud beta anthos export
paracluster-1
ecluster-2
, a estrutura de diretórios será semelhante ao seguinte:No diagrama,
cluster-1
ecluster-2
são diretórios que contêm os arquivos de configuração de recursos do Config Connector para os clusters denominadoscluster-1
ecluster-2
.Exporte os arquivos de configuração de recursos do Config Connector:
gcloud beta anthos export ${CLUSTER_NAME} --output-directory ${BASE_DIR}
O comando
export
preenche o ID do projeto e a zona/região do cluster nos arquivos de configuração de recursos para que o cluster corresponda às configurações atuaisgcloud config
. Se você quiser exportar arquivos de configuração de recursos para um cluster que não corresponda às suas configurações atuaisgcloud config
, especifique as seguintes opções de linha de comando:-p PROJECT_ID
-l YOUR_ZONE_OR_REGION
Confira
gcloud beta anthos export --help
para saber mais.
Corrigir os arquivos de configuração de recursos
Use os setters kpt
e kustomize
do GKE Enterprise para atualizar
os arquivos de configuração de recursos.
Liste os setters de configuração disponíveis no pacote
asm-patch
:kpt cfg list-setters asm-patch/
O resultado será assim:
NAME VALUE SET BY DESCRIPTION COUNT base-dir base 1 gcloud.compute.location your_zone_or_region 1 gcloud.container.cluster your_cluster_name 3 gcloud.core.project your_project_id kpt 11 gcloud.project.projectNumber your_project_number kpt 1
Defina o caminho relativo entre os diretórios
${BASE_DIR}
easm-patch
:kpt cfg set asm-patch/ base-dir ../${BASE_DIR}
Defina o nome do cluster:
kpt cfg set asm-patch/ gcloud.container.cluster ${CLUSTER_NAME}
Se você não tiver definido os padrões
gcloud config
ou se quiser alterar os valores, execute os seguintes setters:kpt cfg set asm-patch/ gcloud.compute.location ${CLUSTER_LOCATION}
kpt cfg set asm-patch/ gcloud.core.project ${PROJECT_ID}
Aplique os patches do Anthos Service Mesh aos arquivos de configuração de recursos do cluster:
pushd ${BASE_DIR} && kustomize create --autodetect \ --namespace ${PROJECT_ID} && popd
pushd asm-patch && kustomize build -o ../${BASE_DIR}/all.yaml && popd
Validar as configurações finais dos recursos:
kpt fn source ${BASE_DIR} | kpt fn run --image gcr.io/kustomize-functions/validate-asm:v0.1.0
Se houver algum erro, corrija-o e valide as configurações de recursos novamente.
Se preferir, insira os arquivos de configuração de recursos no seu próprio sistema de controle de origem, como o Cloud Source Repositories, para rastrear as alterações nos arquivos.
Como atualizar o cluster e instalar o Anthos Service Mesh
A CLI do GKE Enterprise atualiza o cluster com as seguintes opções, que são exigidas pelo Anthos Service Mesh:
Adicionar um rótulo
mesh_id
ao cluster no formatoproj-PROJECT_NUMBER
, em quePROJECT_NUMBER
é o número do projeto em que o cluster foi criado. O rótulomesh_id
é necessário para que as métricas sejam exibidas no painel do Anthos Service Mesh no Console do Google Cloud. Se o cluster tiver rótulos atuais, a CLI do GKE Enterprise os preserva.Ativar a Identidade da carga de trabalho.
Ativar o Kubernetes Engine Monitoring.
Registrar o cluster em uma visão geral do canal de lançamento.
Execute o seguinte comando para atualizar o cluster e instalar o Anthos Service Mesh:
gcloud beta anthos apply ${BASE_DIR}
O comando atualiza o cluster com as opções necessárias e implanta o Anthos Service Mesh. Esse processo leva cerca de 30 minutos para ser concluído.
Como verificar os componentes do plano de controle
Verifique se os pods do plano de controle em istio-system
estão ativos:
kubectl get pod -n istio-system
A saída esperada será assim:
NAME READY STATUS RESTARTS AGE istio-ingressgateway-74cc894bfd-786rg 1/1 Running 0 7m19s istiod-78cdbbbdb-d7tps 1/1 Running 0 7m36s promsd-576b8db4d6-lqf64 2/2 Running 1 7m19s
Como registrar o cluster
É necessário registrar o cluster com a frota do projeto para ter acesso à interface do usuário unificada no Console do Google Cloud. Uma frota fornece uma forma unificada de visualizar e gerenciar os clusters e as cargas de trabalho deles, incluindo clusters fora do Google Cloud.
Criar uma conta de serviço e um arquivo de chave do Google Cloud
Um arquivo JSON contendo credenciais de conta de serviço é necessário para registrar um cluster. Para seguir o princípio de privilégio mínimo, recomendamos que você crie uma conta de serviço distinta para cada cluster registrado.
Para criar uma conta de serviço e um arquivo de chave:
Selecione um nome para a conta de serviço e crie uma variável de ambiente para ela:
export SERVICE_ACCOUNT_NAME=SERVICE_ACCOUNT_NAME
Crie a conta de serviço:
gcloud iam service-accounts create ${SERVICE_ACCOUNT_NAME}
Liste todas as contas de serviço de um projeto para confirmar se a conta de serviço foi criada:
gcloud iam service-accounts list
Vincule o papel do IAM gkehub.connect à conta de serviço:
gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/gkehub.connect"
Crie uma variável de ambiente para o caminho de arquivo local em que você quer salvar o arquivo JSON. Recomendamos que você nomeie o arquivo usando o nome da conta de serviço e o ID do projeto, como:
/tmp/creds/${SERVICE_ACCOUNT_NAME}-${PROJECT_ID}.json
export SERVICE_ACCOUNT_KEY_PATH=LOCAL_KEY_PATH
Faça o download do arquivo JSON da chave privada da conta de serviço.
gcloud iam service-accounts keys create ${SERVICE_ACCOUNT_KEY_PATH} \ --iam-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
Registre o cluster
No comando a seguir, substitua MEMBERSHIP_NAME
por um nome que represente de maneira exclusiva o cluster que está sendo registrado no Hub.
gcloud container hub memberships register MEMBERSHIP_NAME \ --gke-cluster=${CLUSTER_LOCATION}/${CLUSTER_NAME} \ --service-account-key-file=${SERVICE_ACCOUNT_KEY_PATH}
O comando responde com uma saída semelhante a esta:
kubeconfig entry generated for CLUSTER_NAME. Waiting for membership to be created...done. Created a new membership [projects/PROJECT_ID/locations/global/memberships/MEMBERSHIP_NAME] for the cluster [MEMBERSHIP_NAME] Generating the Connect Agent manifest... Deploying the Connect Agent on cluster [MEMBERSHIP_NAME] in namespace [gke-connect]... Deployed the Connect Agent on cluster [MEMBERSHIP_NAME] in namespace [gke-connect]. Finished registering the cluster [MEMBERSHIP_NAME] with the Hub.
Esta chave de conta de serviço é armazenada como um secret chamado creds-gcp
no
namespace gke-connect
.
Para mais informações sobre o registro de clusters, consulte Como registrar um cluster na documentação do Connect.
Como injetar proxies sidecar
O Anthos Service Mesh usa proxies sidecar para aumentar a segurança, a confiabilidade e a observabilidade da rede. Com o Anthos Service Mesh, essas funções são abstraídas do contêiner principal do aplicativo e implementadas em um proxy comum fora do processo, entregue como um contêiner separado no mesmo pod.
Todas as cargas de trabalho em execução no cluster antes da instalação do Anthos Service Mesh precisam ter o proxy sidecar injetado ou atualizado para que tenham a versão atual do Anthos Service Mesh. Antes de implantar novas cargas de trabalho, configure a injeção de proxy sidecar para que o Anthos Service Mesh possa monitorar e proteger o tráfego.É possível ativar a injeção automática do sidecar com um comando, por exemplo:
kubectl label namespace NAMESPACE istio-injection=enabled --overwrite
em que NAMESPACE
é o nome do
namespace
para os serviços do seu aplicativo ou default
se você não tiver criado explicitamente
um namespace.
Saiba mais em Como injetar proxies sidecar.
Como visualizar as páginas do Anthos Service Mesh
Depois de implantar as cargas de trabalho no seu cluster com os proxies sidecar injetados, acesse as páginas do Anthos Service Mesh no Console do Google Cloud para ver todos os recursos de observabilidade que o Anthos Service Mesh oferece. Observe que leva cerca de um ou dois minutos para que os dados de telemetria sejam exibidos no console do Google Cloud após a implantação das cargas de trabalho.
O acesso ao Anthos Service Mesh no console do Google Cloud é controlado pelo Gerenciamento de identidade e acesso (IAM). Para acessar as páginas do Anthos Service Mesh, um proprietário do projeto precisa conceder aos usuários o papel de Editor ou Visualizador de projeto ou os papéis mais restritivos descritos em Como controlar o acesso ao Anthos Service Mesh no console do Google Cloud.
No console do Google Cloud, acesse Anthos Service Mesh.
Selecione o projeto do Google Cloud na lista suspensa na barra de menus.
Se você tiver mais de uma malha de serviço, selecione a malha na lista suspensa Service Mesh.
Para saber mais, consulte Como explorar o Anthos Service Mesh no console do Google Cloud.
Além das páginas do Anthos Service Mesh, as métricas relacionadas aos seus serviços, como o número de solicitações recebidas por um serviço específico, são enviadas para o Cloud Monitoring, onde elas aparecem o Metrics Explorer.
Para ver métricas:
No Console do Google Cloud, acesse a página Monitoring.
Selecione Recursos > Metrics Explorer.
Veja uma lista completa de métricas em Métricas do Istio na documentação do Cloud Monitoring.
Como instalar uma amostra usando kpt
Se preferir, use kpt
para instalar a amostra do Hipster no cluster.
Faça o download da amostra:
kpt pkg get \ https://github.com/GoogleCloudPlatform/microservices-demo.git/release \ hipster-demo
Ative a injeção automática de sidecar:
kubectl label namespace default istio-injection=enabled
Implante a amostra no cluster:
kubectl apply -f hipster-demo
Encontre o endereço IP externo do aplicativo:
kubectl get service frontend-external
Acesse o aplicativo no navegador para confirmar a instalação:
http://EXTERNAL_IP/
Agora que você tem uma amostra em execução, é possível explorar os recursos de observabilidade do Anthos Service Mesh no console do Google Cloud. Pode levar até 10 minutos para o gráfico de topologia exibir os serviços na malha.
Quando terminar de explorar, remova a amostra Hipster:
kubectl delete -f hipster-demo
A seguir
Saiba mais sobre os recursos de configuração usados pela CLI do GKE Enterprise: