Neste guia, explicamos como fazer uma instalação limpa da versão
1.6.14-asm.2 do Anthos Service Mesh em um cluster existente do GKE na AWS. 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 recursos compatíveis
no cluster para o perfil de configuração asm-multicloud
.
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
Confira os requisitos a seguir antes de iniciar a configuração.
Requisitos
Você precisa ter uma assinatura do Anthos. Como alternativa, uma opção de pagamento por utilização está disponível para o GKE Enterprise apenas no Google Cloud. Para mais informações, consulte o Guia de preços do GKE Enterprise.
Verifique se o cluster de usuário em que você instalará o Anthos Service Mesh tem pelo menos quatro vCPUs, 15 GB de memória e quatro réplicas.
Você precisa nomear as portas de serviço usando a sintaxe a seguir:
name: protocol[-suffix]
, em que os colchetes indicam um sufixo opcional que precisa começar com um traço. Saiba mais em Como nomear portas de serviço.Verifique se a versão do cluster está listada em Ambientes compatíveis. Para verificar a versão do cluster, use a ferramenta de linha de comando
gkectl
.gkectl version
A saída bem-sucedida será como esta:
1.4.0-gke.13 (git-b39331512)
Se você não tiver
gkectl
instalado, consulte Downloads do GKE On-Prem.
Como configurar o ambiente
Você precisa das seguintes ferramentas na máquina onde quer instalar o Anthos Service Mesh. Observe que só é possível instalar o Anthos Service malha em um cluster de usuários, não em um cluster de administrador.
- Ferramenta de linha de comando
curl
- A Google Cloud CLI.
Depois de instalar a CLI gcloud:
Faça a autenticação com a CLI da gcloud:
gcloud auth login
Atualize os componentes:
gcloud components update
Instale
kubectl
:gcloud components install kubectl
Se você quiser implantar e testar sua instalação com o aplicativo de amostra Online Boutique, instale
kpt
:gcloud components install kpt
Alterne o contexto para o cluster de usuário (se necessário):
kubectl config use-context CLUSTER_NAME
Conceda permissões de administrador de cluster à sua conta de usuário (seu endereço de e-mail de login do Google Cloud). 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=USER_ACCOUNT
Como fazer o download do arquivo de instalação
-
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.6.14-asm.2-linux-amd64.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.6.14-asm.2-linux-amd64.tar.gz.1.sig openssl dgst -verify /dev/stdin -signature istio-1.6.14-asm.2-linux-amd64.tar.gz.1.sig istio-1.6.14-asm.2-linux-amd64.tar.gz <<'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.6.14-asm.2-linux-amd64.tar.gz
O comando cria um diretório de instalação no seu diretório de trabalho atual chamado
istio-1.6.14-asm.2
, que contém:- Exemplos de aplicativos no diretório
samples
. - A ferramenta de linha de comando
istioctl
usada para instalar o Anthos Service Mesh está no diretóriobin
. - Os perfis de configuração do Anthos Service Mesh estão no
diretório
install/kubernetes/operator/profiles
.
- Exemplos de aplicativos no diretório
-
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.6.14-asm.2-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.6.14-asm.2-osx.tar.gz.1.sig openssl dgst -sha256 -verify /dev/stdin -signature istio-1.6.14-asm.2-osx.tar.gz.1.sig istio-1.6.14-asm.2-osx.tar.gz <<'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.6.14-asm.2-osx.tar.gz
O comando cria um diretório de instalação no seu diretório de trabalho atual chamado
istio-1.6.14-asm.2
, que contém:- Exemplos de aplicativos no diretório
samples
. - A ferramenta de linha de comando
istioctl
usada para instalar o Anthos Service Mesh está no diretóriobin
. - Os perfis de configuração do Anthos Service Mesh estão no
diretório
install/kubernetes/operator/profiles
.
- Exemplos de aplicativos no diretório
-
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.6.14-asm.2-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.6.14-asm.2-win.zip.1.sig openssl dgst -verify - -signature istio-1.6.14-asm.2-win.zip.1.sig istio-1.6.14-asm.2-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.6.14-asm.2-win.zip
O comando cria um diretório de instalação no seu diretório de trabalho atual chamado
istio-1.6.14-asm.2
, que contém:- Exemplos de aplicativos no diretório
samples
. - A ferramenta de linha de comando
istioctl
usada para instalar o Anthos Service Mesh está no diretóriobin
. - Os perfis de configuração do Anthos Service Mesh estão no
diretório
install/kubernetes/operator/profiles
.
- Exemplos de aplicativos no diretório
-
Verifique se você está no diretório raiz da instalação do Anthos Service Mesh.
cd istio-1.6.14-asm.2
-
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
Configurar o webhook de validação
Ao instalar o Anthos Service Mesh, você define um rótulo de revisão em istiod
. Você
precisa definir a mesma revisão no webhook de validação.
Copie o seguinte YAML para um arquivo chamado istiod-service.yaml
.
apiVersion: v1
kind: Service
metadata:
name: istiod
namespace: istio-system
labels:
istio.io/rev: asm-1614-2
app: istiod
istio: pilot
release: istio
spec:
ports:
- port: 15010
name: grpc-xds # plaintext
protocol: TCP
- port: 15012
name: https-dns # mTLS with k8s-signed cert
protocol: TCP
- port: 443
name: https-webhook # validation and injection
targetPort: 15017
protocol: TCP
- port: 15014
name: http-monitoring # prometheus stats
protocol: TCP
selector:
app: istiod
istio.io/rev: asm-1614-2
Como instalar o Anthos Service Mesh
Execute o seguinte comando para instalar o Anthos Service Mesh com o perfil
asm-multicloud
. Se você quiser ativar um recurso opcional compatível, inclua-f
e o nome de arquivo YAML na linha de comando a seguir. Para mais informações, consulte Como ativar recursos opcionais.istioctl install \ --set profile=asm-multicloud \ --set revision=asm-1614-2
O argumento
--set revision
adiciona um rótulo de revisão no formatoistio.io/rev=asm-1614-2
aistiod
. O rótulo de revisão é usado pelo webhook do injetor automático de sidecar para associar os sidecars injetados a uma revisãoistiod
específica. Para ativar a injeção automática de sidecar para um namespace, você precisa rotulá-lo com uma revisão que corresponda ao rótulo emistiod
.Configure o webhook de validação para que ele possa localizar o serviço
istiod
com o rótulo de revisão:kubectl apply -f istiod-service.yaml
Esse comando cria uma entrada de serviço que permite ao webhook de validação verificar automaticamente as configurações antes de serem aplicadas.
O TLS mútuo automático (mTLS automático) é ativado por padrão. Com o mTLS automático, um proxy sidecar do cliente detecta automaticamente se o servidor tem um sidecar. O sidecar do cliente envia mTLS para cargas de trabalho com arquivos secundários e envia tráfego de texto simples para cargas de trabalho sem sidecars.
Verificar os componentes do plano de controle
Verifique se os pods do plano de controle em istio-system
estão em execução:
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 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, que é exibido como um contêiner separado no mesmo pod.
Antes de implantar as cargas de trabalho, configure a injeção de proxy sidecar para que o Anthos Service Mesh possa monitorar e proteger o tráfego.
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 elas tenham a versão atual do Anthos Service Mesh. Antes de implantar novas cargas de trabalho, configure a injeção do proxy sidecar para que o Anthos Service Mesh possa monitorar e proteger o tráfego.
Para ativar a injeção automática de arquivo secundário, rotule seus namespaces com a mesma
revisão definida em istiod
. Execute o comando a seguir para mostrar os
rótulos em istiod
:
kubectl -n istio-system get pods -l app=istiod --show-labels
Confirme se o rótulo de revisão, istio.io/rev=asm-1614-2
, está
na saída. Este é o rótulo que você usa para ativar a injeção automática. Você pode
ativar a injeção automática com um comando, por exemplo:
kubectl label namespace NAMESPACE istio-injection- istio.io/rev=asm-1614-2 --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:
Configurar o 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.
Configurar o 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.