Neste guia, explicamos como fazer uma instalação limpa da versão
1.9.8-asm.6 do Anthos Service Mesh em clusters do Anthos no VMware e em bare metal. Se
você tiver uma versão anterior do Anthos Service Mesh instalada, consulte
Como fazer upgrade do Anthos Service Mesh no local.
A instalação ativa os
recursos compatíveis no cluster. Este guia
se refere ao cluster como cluster1
, mas é possível repetir essas etapas para configurar
vários clusters.
Sobre os componentes do plano de controle
O GKE no VMware e o bare metal vêm com os seguintes componentes do Istio pré-instalados:
- A autoridade de certificação do Istio (anteriormente conhecida como Citadel) está instalada no
namespace
kube-system
. - O gateway de entrada do Istio e outros componentes do Istio são instalados no
namespace
gke-system
.
Os clusters do Anthos no VMware e em bare metal usam esses componentes para permitir 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 na documentação do GKE no VMware.
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.
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ê instala o Anthos Service Mesh tem pelo menos quatro vCPUs, 15 GB de memória e quatro nós.
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.
VMWare
Para verificar a versão do cluster, use a ferramenta de linha de comando gkectl
.
Se você não tiver gkectl
instalado, consulte
Downloads do GKE no VMware.
gkectl version
Bare Metal
Para verificar a versão do cluster, use a ferramenta de linha de comando bmctl
.
Se você não tiver o bmctl
instalado, consulte o
Guia de início rápido do GDCV para Bare Metal.
bmctl version
Como configurar o ambiente
Você precisa das seguintes ferramentas no computador em que você controla o processo de instalação. 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 Google Cloud CLI:
Faça a autenticação com a Google Cloud CLI:
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
Como definir variáveis de ambiente
Consiga o nome do contexto para o cluster usando os valores na coluna
NAME
na saída deste comando:kubectl config get-contexts
Defina as variáveis de ambiente para o nome de contexto de cluster, o que será usado por este guia em várias etapas posteriores:
export CTX_CLUSTER1=CLUSTER1_CONTEXT_NAME
Como conceder permissões de administrador ao cluster
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 --context="${CTX_CLUSTER1}" create clusterrolebinding cluster-admin-binding \ --clusterrole=cluster-admin \ --user=USER_ACCOUNT
Como fazer o download do arquivo de instalação
Linux
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.9.8-asm.6-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.9.8-asm.6-linux-amd64.tar.gz.1.sig openssl dgst -verify /dev/stdin -signature istio-1.9.8-asm.6-linux-amd64.tar.gz.1.sig istio-1.9.8-asm.6-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.9.8-asm.6-linux-amd64.tar.gz
O comando cria um diretório de instalação no seu diretório de trabalho atual, chamado
istio-1.9.8-asm.6
, que contém o seguinte:- Exemplos de aplicativos no diretório
samples
. - A ferramenta de linha de comando
istioctl
que você usa para instalar o Anthos Service Mesh está no diretóriobin
. - Os perfis de configuração do Anthos Service Mesh estão no
diretório
manifests/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.9.8-asm.6
macOS
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.9.8-asm.6-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.9.8-asm.6-osx.tar.gz.1.sig openssl dgst -sha256 -verify /dev/stdin -signature istio-1.9.8-asm.6-osx.tar.gz.1.sig istio-1.9.8-asm.6-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.9.8-asm.6-osx.tar.gz
O comando cria um diretório de instalação no seu diretório de trabalho atual, chamado
istio-1.9.8-asm.6
, que contém o seguinte:- Exemplos de aplicativos no diretório
samples
. - A ferramenta de linha de comando
istioctl
que você usa para instalar o Anthos Service Mesh está no diretóriobin
. - Os perfis de configuração do Anthos Service Mesh estão no
diretório
manifests/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.9.8-asm.6
Windows
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.9.8-asm.6-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.9.8-asm.6-win.zip.1.sig openssl dgst -verify - -signature istio-1.9.8-asm.6-win.zip.1.sig istio-1.9.8-asm.6-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.9.8-asm.6-win.zip
O comando cria um diretório de instalação no seu diretório de trabalho atual, chamado
istio-1.9.8-asm.6
, que contém o seguinte:- Exemplos de aplicativos no diretório
samples
. - A ferramenta de linha de comando
istioctl
que você usa para instalar o Anthos Service Mesh está no diretóriobin
. - Os perfis de configuração do Anthos Service Mesh estão no
diretório
manifests/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.9.8-asm.6
Como configurar a autoridade de certificação
Nesta seção, explicamos como gerar certificados e chaves que o Anthos Service Mesh no local usa para assinar as cargas de trabalho.
Para ter a melhor segurança, recomendamos manter uma CA raiz off-line e usar as CAs subordinadas para emitir certificados para cada cluster. Para mais informações, consulte Conectar certificados de CA. Nesta configuração, todas as cargas de trabalho na malha de serviço usam a mesma autoridade de certificação raiz. Cada CA do Anthos Service Mesh usa um certificado e uma chave de assinatura de CA intermediários, assinados pela CA raiz. Quando houver várias CAs em uma malha, uma hierarquia de confiança entre as CAs será estabelecida. Repita essas etapas para provisionar certificados e chaves de qualquer quantia de autoridades de certificação.
Crie um diretório para certificados e chaves:
mkdir -p certs && \ pushd certs
Gere um certificado raiz e uma chave:
make -f ../tools/certs/Makefile.selfsigned.mk root-ca
Isso gera estes arquivos:
- root-cert.pem: o certificado raiz
- root-key.pem: a chave raiz
- root-ca.conf: a configuração do openssl para gerar o certificado raiz
- root-cert.csr: o CSR do certificado raiz
Gere um certificado intermediário e uma chave:
make -f ../tools/certs/Makefile.selfsigned.mk cluster1-cacerts
Isso gera estes arquivos em um diretório chamado
cluster1
:- ca-cert.pem: os certificados intermediários
- ca-key.pem: a chave intermediária
- cert-chain.pem: a cadeia de certificados que o istiod usa
- root-cert.pem: o certificado raiz
Se você executar essas etapas usando um computador off-line, copie o diretório gerado para um computador com acesso aos clusters.
Crie um
cacerts
secreto, incluindo todos os arquivos de entradaca-cert.pem
,ca- key.pem
,root-cert.pem
ecert-chain.pem
:kubectl --context="${CTX_CLUSTER1}" create namespace istio-system kubectl --context="${CTX_CLUSTER1}" create secret generic cacerts -n istio-system \ --from-file=cluster1/ca-cert.pem \ --from-file=cluster1/ca-key.pem \ --from-file=cluster1/root-cert.pem \ --from-file=cluster1/cert-chain.pem
O Anthos Service Mesh no local detectará a presença desses certificados/chaves e os usará durante o processo de instalação nas próximas etapas.
Volte ao diretório anterior:
popd
Como instalar o Anthos Service Mesh
Crie uma variável de ambiente para o ID do projeto:
export PROJECT_ID=YOUR_PROJECT_ID
Crie uma variável de ambiente para o número do projeto:
export PROJECT_NUMBER=$(gcloud projects describe ${PROJECT_ID} --format="value(projectNumber)")
Crie uma variável de ambiente para o identificador da malha. Pode ser qualquer string, mas precisa estar em um formato consistente entre os clusters.
export MESH_ID="proj-${PROJECT_NUMBER}"
Crie a configuração do plano de controle do cluster, que instalará o Anthos Service Mesh usando 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.Estes são os elementos do exemplo a seguir:
Use o
MESH_ID
definido nas etapas anteriores.O
NETWORK_ID
pode ser qualquer string que identifique a rede de um cluster. Nessa configuração local, cada cluster está em uma rede própria. Dessa maneira, cada cluster precisa ter um valor diferente.NETWORK_ID
tem as mesmas limitações de string que um rótulo do Kubernetes descrito em Sintaxe e conjunto de caracteres.
cat <<EOF > cluster.yaml apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: profile: asm-multicloud revision: asm-198-6 values: global: meshID: ${MESH_ID} multiCluster: clusterName: CLUSTER_NAME network: NETWORK_ID EOF
Se necessário, mude para o diretório
istio-1.9.8-asm.6
. O clienteistioctl
depende da versão. Certifique-se de usar a versão no diretórioistio-1.9.8-asm.6/bin
.Execute o comando a seguir para instalar o Anthos Service Mesh. Se você quiser ativar um recurso opcional compatível, inclua
-f
e o nome de arquivo YAML na linha de comando a seguir, depois de-f cluster.yaml
. Para ver mais informações, consulte Como ativar recursos opcionais.bin/istioctl install \ --context="${CTX_CLUSTER1}" \ -f cluster.yaml
Como definir a rede padrão
Defina a rede padrão no namespace istio-system
:
kubectl --context="${CTX_CLUSTER1}" label \ namespace istio-system topology.istio.io/network=NETWORK_ID
Como 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
.cat <<EOF > istiod-service.yaml apiVersion: v1 kind: Service metadata: name: istiod namespace: istio-system labels: istio.io/rev: asm-198-6 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-198-6 EOF
Configure o webhook de validação para que ele possa localizar o serviço
istiod
com o rótulo de revisão:kubectl --context="${CTX_CLUSTER1}" 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.
Como verificar os componentes do plano de controle
Verifique se os pods do plano de controle em istio-system
estão em execução:
kubectl --context="${CTX_CLUSTER1}" 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, entregue como um contêiner separado no mesmo pod.
A instalação não será concluída até que você ative a injeção automática de proxy de arquivo secundário (injeção automática) e reinicie os pods de todas as cargas de trabalho que estavam sendo executadas no cluster antes de instalar o Anthos Service Mesh.
Para ativar a injeção automática, rotule os namespaces com o rótulo de revisão
que foi definido no istiod
quando você instalou o Anthos Service Mesh. O rótulo de revisão é
usado pelo webhook do injetor automático de arquivo secundário para associar os arquivos secundários injetados a uma
revisão istiod
específica. Depois de adicionar o rótulo, todos os pods existentes no
namespace precisarão ser reiniciados para que os arquivos secundários sejam injetados.
Antes de implantar novas cargas de trabalho em um novo namespace, configure a injeção automática para que o Anthos Service Mesh possa monitorar e proteger o tráfego.
Para ativar a injeção automática:
Use o seguinte comando para localizar o rótulo de revisão em
istiod
:kubectl --context=${CTX_CLUSTER1} \ -n istio-system get pods -l app=istiod --show-labels
A resposta será semelhante a:
NAME READY STATUS RESTARTS AGE LABELS istiod-asm-198-6-5788d57586-bljj4 1/1 Running 0 23h app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586 istiod-asm-198-6-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586
Na saída, na coluna
LABELS
, observe o valor do rótulo de revisãoistiod
, que segue o prefixoistio.io/rev=
. Neste exemplo, o valor éasm-198-6
.Aplique o rótulo de revisão e remova o rótulo
istio-injection
, se ele existir. No comando a seguir,NAMESPACE
é o nome do namespace em que você quer ativar a injeção automática, eREVISION
é o rótulo de revisão que você anotou na etapa anterior.kubectl --context=${CTX_CLUSTER1} \ label namespace NAMESPACE istio-injection- istio.io/rev=REVISION --overwrite
Você pode ignorar a mensagem
"istio-injection not found"
na saída. Isso significa que o namespace não tinha o rótuloistio-injection
anteriormente, que é esperado em novas instalações do Anthos Service Mesh ou em novas implantações. Como a injeção automática falha se um namespace tiver oistio-injection
e o rótulo de revisão, todos os comandoskubectl label
na documentação do Anthos Service Mesh incluem a remoção do rótuloistio-injection
.Se as cargas de trabalho estavam em execução no cluster antes de instalar o Anthos Service Mesh, reinicie os pods para acionar a nova injeção.
A maneira como você reinicia os pods depende do seu aplicativo e do ambiente em que o cluster está. Por exemplo, no seu ambiente de preparo, basta excluir todos os pods, o que faz com que eles sejam reiniciados. Mas no ambiente de produção, há um processo que implementa uma implantação azul-verde para que você possa reiniciar os pods com segurança para evitar a interrupção do tráfego.
É possível usar
kubectl
para executar uma reinicialização gradual:kubectl --context=${CTX_CLUSTER1} \ rollout restart deployment -n NAMESPACE
Verifique se os pods estão configurados para apontar para a nova versão de
istiod
.kubectl --context=${CTX_CLUSTER1} \ get pods -n NAMESPACE -l istio.io/rev=REVISION
A seguir
Se você planeja usar vários clusters para a malha de serviço no local, consulte Como instalar o Anthos Service Mesh no local em vários clusters e redes.
Caso contrário, a próxima etapa é Como configurar endereços IP externos.