O Anthos Service Mesh é um framework compatível com Istio para conectar, monitorar e proteger serviços em execução no Google Kubernetes Engine (GKE) e no GKE no VMware. Ele permite que você crie uma rede de serviços implantados com balanceamento de carga, autenticação entre serviços, monitoramento e muito mais, sem exigir nenhuma alteração no código. O Anthos Service Mesh injeta automaticamente um proxy sidecar para cada pod do aplicativo. O proxy sidecar intercepta todo o tráfego de rede dos pods e para eles. O Anthos Service Mesh também configura um gateway de entrada para gerenciar o tráfego de entrada para a malha. É possível usar APIs de código aberto do Istio para configurar políticas aplicadas a sidecars e gateways.
Neste guia, explicamos como fazer uma instalação limpa da versão 1.4.10-asm.18 do Anthos Service Mesh no GKE no VMware. Se você tiver uma versão anterior do Anthos Service Mesh instalada, consulte Como fazer upgrade do Anthos Service Mesh no GKE no VMware.
A instalação ativa os principais recursos do Istio compatíveis no GKE no VMware. Os componentes gerenciados do Anthos Service Mesh não são compatíveis com o GKE no VMware no momento.
Sobre os componentes do plano de controle
O GKE no VMware vem com os seguintes componentes do Istio pré-instalados:
- O Citadel está instalado no namespace
kube-system
. - O Pilot e o Gateway de entrada do Istio estão instalados no namespace
gke-system
.
O GKE no VMware usa esses componentes para ativar a entrada e proteger a comunicação entre os componentes controlados pelo Google. Se você só precisa da funcionalidade de entrada, não é necessário instalar o OSS Istio ou o Anthos Service Mesh. Para mais informações sobre como configurar a entrada, consulte Como ativar a entrada.
Quando você instala o Anthos Service Mesh, os componentes dele são instalados no
namespace istio-system
. Como os componentes do Anthos Service Mesh estão em um
namespace diferente, eles não entram em conflito com os componentes
pré-instalados do Istio no GKE no VMware.
Antes de começar
Analise os requisitos e restrições a seguir antes de iniciar a configuração.
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.
Certifique-se de que o cluster de usuário em que você instala o Anthos Service Mesh tem pelo menos quatro vCPUs, 15 GB de memória e quatro réplicas.
Avalie os requisitos para pods e serviços antes de implantar as cargas de trabalho.
Verifique se a versão do cluster está listada em Ambientes compatíveis. Para verificar a versão do cluster:
gkectl version
O resultado será exibido a seguir:
1.2.0-gke.6 (git-0912663b0)
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 apenas um projeto.
Como configurar o ambiente
Na máquina local, instale e inicialize a Google Cloud CLI.
Se a gcloud CLI já estiver instalada:
Faça a autenticação com a gcloud CLI:
gcloud auth login
Atualize os componentes:
gcloud components update
Instale
kubectl
:gcloud components install kubectl
Consiga 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.
Defina o ID do projeto padrão para a Google Cloud CLI:
gcloud config set project PROJECT_ID
Como configurar credenciais e permissões
Antes de continuar, ative todas as APIs necessárias. Se tiver alguma dúvida, poderá executar o comando gcloud services enable novamente.
-
Verifique se você tem
kubectl
para o cluster de usuários em que quer instalar o Anthos Service Mesh. Observe que só é possível instalar o Anthos Service Mesh em um cluster de usuários, não em um cluster de administrador. -
Conceda permissões de administrador de cluster ao usuário atual. Você precisa dessas
permissões para criar as regras necessárias de
controle de acesso baseado
em papéis (RBAC, na sigla em inglês) para o Anthos Service Mesh:
kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole=cluster-admin \ --user="$(gcloud config get-value core/account)"
Se você vir o erro
"cluster-admin-binding" already exists
, poderá ignorá-lo com segurança e continuar com o cluster-admin-binding atual.
Como preparar a instalação do Anthos Service Mesh
-
Faça o download do arquivo de instalação do Anthos Service Mesh no diretório de trabalho
atual:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-linux.tar.gz
-
Faça o download do arquivo de assinatura e use
openssl
para verificar a assinatura:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-linux.tar.gz.1.sig openssl dgst -verify - -signature istio-1.4.10-asm.18-linux.tar.gz.1.sig istio-1.4.10-asm.18-linux.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
A saída esperada é
Verified OK
. -
Faça o download do arquivo de instalação do Anthos Service Mesh no diretório de trabalho
atual:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-osx.tar.gz
-
Faça o download do arquivo de assinatura e use
openssl
para verificar a assinatura:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-osx.tar.gz.1.sig openssl dgst -sha256 -verify /dev/stdin -signature istio-1.4.10-asm.18-osx.tar.gz.1.sig istio-1.4.10-asm.18-osx.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
A saída esperada é
Verified OK
. -
Faça o download do arquivo de instalação do Anthos Service Mesh no diretório de trabalho
atual:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-win.zip
-
Faça o download do arquivo de assinatura e use
openssl
para verificar a assinatura:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-win.zip.1.sig openssl dgst -verify - -signature istio-1.4.10-asm.18-win.zip.1.sig istio-1.4.10-asm.18-win.zip <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
A saída esperada é
Verified OK
. -
Extraia o conteúdo do arquivo em qualquer local no sistema. Por
exemplo, para extrair o conteúdo para o diretório de trabalho atual:
tar xzf istio-1.4.10-asm.18-linux.tar.gz
O comando cria um diretório de instalação no seu diretório de trabalho atual chamado
istio-1.4.10-asm.18
, que contém:- aplicativos de amostra em
samples
; - As seguintes ferramentas no diretório
bin
:istioctl
: useistioctl
para instalar o Anthos Service Mesh.asmctl
: useasmctl
para ajudar a validar sua configuração de segurança depois de instalar o Anthos Service Mesh. No momento,asmctl
não é compatível com o GKE no VMware.
- aplicativos de amostra em
-
Verifique se você está no diretório raiz da instalação do Anthos Service Mesh.
cd istio-1.4.10-asm.18
-
Para facilitar, adicione as ferramentas ao diretório
/bin
/bin do seu PATH.export PATH=$PWD/bin:$PATH
Linux
macOS
Windows
Crie o namespace istio-system
Crie um namespace chamado istio-system para os componentes do plano de controle:
kubectl create namespace istio-system
Como instalar o Anthos Service Mesh
Nesta seção, explicamos como instalar o Anthos Service Mesh e ativar os recursos padrão compatíveis listados na página Recursos compatíveis. Para informações sobre como ativar os recursos opcionais compatíveis, consulte Como ativar recursos opcionais.
Para instalar o Anthos Service Mesh:
Escolha um dos comandos a seguir para configurar o Anthos Service Mesh no
modo de autenticação TLS mútua (mTLS)
PERMISSIVE
ou no modo mTLS STRICT
.
PERMISSIVE mTLS
istioctl manifest apply --set profile=asm-onprem
STRICT mTLS
istioctl manifest apply --set profile=asm-onprem \ --set values.global.mtls.enabled=true
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
Espere para ver uma saída semelhante a esta:
NAME READY STATUS RESTARTS AGE istio-citadel-85f4d775cd-dmpj2 1/1 Running 0 18m istio-galley-5c65896ff7-m2pls 2/2 Running 0 18m istio-ingressgateway-587cd459f-q6hqt 2/2 Running 0 18m istio-pilot-9db77b99f-7wfb6 2/2 Running 0 18m istio-sidecar-injector-69c4d9f875-dt8rn 1/1 Running 0 18m promsd-55f464d964-lqs7w 2/2 Running 0 18m
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 configurar um endereço IP externo
A instalação padrão do Anthos Service Mesh presume que um endereço IP externo é
alocado automaticamente para serviços LoadBalancer
. Isso não é verdade no
GKE no VMware. Por isso, é preciso alocar manualmente um
endereço IP para o recurso de gateway de entrada do Anthos Service Mesh.
Para configurar um endereço IP externo, siga uma das seções abaixo, dependendo do modo de balanceamento de carga do cluster:
Modo de balanceamento de carga integrado
Abra a configuração do serviço
istio-ingressgateway
:kubectl edit svc -n istio-system istio-ingressgateway
A configuração do serviço
istio-ingressgateway
é aberta no editor de texto padrão do shell.No arquivo, adicione a seguinte linha no bloco de especificação (
spec
):loadBalancerIP: <your static external IP address>
Exemplo:
spec: loadBalancerIP: 203.0.113.1
Salve o arquivo.
Modo de balanceamento de carga manual
Para expor um serviço do tipo NodePort com um VIP no balanceador de carga selecionado, você
precisa descobrir os valores de nodePort
primeiro:
Veja a configuração do serviço
istio-ingressgateway
no shell:kubectl get svc -n istio-system istio-ingressgateway -o yaml
Cada uma das portas dos gateways do Anthos Service Mesh é exibida. A resposta ao comando será semelhante à seguinte:
... ports: - name: status-port nodePort: 30391 port: 15020 protocol: TCP targetPort: 15020 - name: http2 nodePort: 31380 port: 80 protocol: TCP targetPort: 80 - name: https nodePort: 31390 port: 443 protocol: TCP targetPort: 443 - name: tcp nodePort: 31400 port: 31400 protocol: TCP targetPort: 31400 - name: https-kiali nodePort: 31073 port: 15029 protocol: TCP targetPort: 15029 - name: https-prometheus nodePort: 30253 port: 15030 protocol: TCP targetPort: 15030 - name: https-grafana nodePort: 30050 port: 15031 protocol: TCP targetPort: 15031 - name: https-tracing nodePort: 31204 port: 15032 protocol: TCP targetPort: 15032 - name: tls nodePort: 30158 port: 15443 protocol: TCP targetPort: 15443 ...
Exponha essas portas pelo balanceador de carga.
Por exemplo, a porta de serviço chamada
http2
temport
80 enodePort
31380. Suponha que os endereços de nó do cluster de usuário sejam192.168.0.10
,192.168.0.11
e192.168.0.12
, e o VIP do balanceador de carga seja203.0.113.1
.Configure o balanceador de carga para que o tráfego enviado para
203.0.113.1:80
seja encaminhado para192.168.0.10:31380
,192.168.0.11:31380
ou192.168.0.12:31380
. É possível selecionar as portas de serviço que quer expor nesse VIP.