Neste guia, explicamos como fazer uma instalação limpa da versão 1.6.14-asm.2 do Anthos Service Mesh nos clusters do Anthos na AWS.
Com o Anthos Service Mesh, o gateway de entrada do Istio vem pré-instalado. No entanto, se preferir usar um controlador de entrada, use o Anthos Service Mesh para configurar um recurso Entrada do Kubernetes. Neste guia, mostramos como instalar o Anthos Service Mesh e, opcionalmente, configurar um recurso Entrada do Kubernetes.
Antes de começar
Antes de iniciar a instalação do Anthos Service Mesh, confira se você realizou as seguintes tarefas:
- Instale um serviço de gerenciamento.
- Crie um cluster de usuário.
- Configure a rede da AWS.
- Analise os requisitos e restrições a seguir antes de iniciar a configuração.
Requisitos
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.
Veja Como nomear portas de serviço antes de implantar as cargas de trabalho.
Verifique se a versão do cluster está listada em Ambientes compatíveis.
Restrições
Um projeto do Google Cloud só pode ter uma malha associada a ele.
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
- o SDK do Cloud (a ferramenta de linha de comando
gcloud
)
Depois de instalar o SDK do Cloud:
Faça a autenticação com o SDK do Cloud:
gcloud auth login
Atualize os componentes:
gcloud components update
Instale
kubectl
:gcloud components install kubectl
Instale a versão necessária de
kpt
:curl -L https://github.com/GoogleContainerTools/kpt/releases/download/v0.39.2/kpt_linux_amd64 > kpt_0_39_2 chmod +x kpt_0_39_2 alias kpt="$(readlink -f kpt_0_39_2)"
Alterne o contexto para seu cluster de usuá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
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.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 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.6.14-asm.2
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.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 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.6.14-asm.2
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.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 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.6.14-asm.2
Como instalar o Anthos Service Mesh
Nesta seção, explicamos como instalar o Anthos Service malha no cluster de usuários, que
ativa os recursos Compatível padrão listados na página
Recursos compatíveis
do perfil asm-multicloud
. É possível optar por ativar a entrada para a sub-rede pública
ou privada.
Público
Se necessário, mude para o diretório
istio-1.6.14-asm.2
. O clienteistioctl
depende da versão. Certifique-se de usar a versão no diretórioistio-1.6.14-asm.2/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. Para mais informações, consulte Como ativar recursos opcionais.Instale o Anthos Service Mesh:
bin/istioctl install \ -f manifests/profiles/asm-multicloud.yaml \ --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.
Particular
A seguir, adicione a
anotação service.beta.kubernetes.io/aws-load-balancer-internal
a todos
os serviços criados pelo Anthos Service Mesh. Quando essa anotação estiver presente,
os clusters do Anthos na AWS criam serviços de entrada particulares.
Se necessário, mude para o diretório
istio-1.6.14-asm.2
. O clienteistioctl
depende da versão. Certifique-se de usar a versão no diretórioistio-1.6.14-asm.2/bin
.Salve o seguinte YAML em um arquivo chamado
istio-operator-internal-lb.yaml
:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: components: ingressGateways: - enabled: true k8s: serviceAnnotations: service.beta.kubernetes.io/aws-load-balancer-internal: "true" name: istio-ingressgateway
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. Para mais informações, consulte Como ativar recursos opcionais.bin/istioctl install \ -f manifests/profiles/asm-multicloud.yaml \ --set revision=asm-1614-2 \ -f istio-operator-internal-lb.yaml
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.
Como instalar sem o Prometheus e o Kiali
Por padrão, o Anthos Service Mesh 1.7 e anterior instala o Prometheus
e o
Kiali (links em inglês) dos repositórios de pacotes originais em
docker.io
e quay.io
. Se você não quiser instalar essas ferramentas ou
permitir conexões com esses repositórios, transmita
-set addonComponents.prometheus.enabled=false
e
--set addonComponents.kiali.enabled=false
para istioctl install
. Por exemplo,
use o seguinte comando para excluir o Prometheus e o Kiali da
instalação da sub-rede pública.
bin/istioctl install \
-f manifests/profiles/asm-multicloud.yaml \
--set addonComponents.prometheus.enabled=false \
--set addonComponents.kiali.enabled=false \
--revision=asm-1614-2
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
Você instalou o plano de controle do Anthos Service malha com o gateway de entrada pré-instalado. Se você só precisa da funcionalidade de entrada usando um controlador de entrada, está pronto para instalar aplicativos no cluster. Consulte Como criar um exemplo de implantação, que mostra como configurar um recurso Ingress.
Se você quiser aproveitar todos os recursos fornecidos pelo Anthos Service Mesh, continue com a próxima fase da instalação para injetar proxies secundários e reiniciar as cargas de trabalho.
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.
Antes de você implantar cargas de trabalho, configure uma injeção do proxy sidecar para o Anthos Service Mesh 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 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.
Para ativar a injeção automática de sidecar, 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 acessar o gateway de entrada
O Anthos Service Mesh fornece um gateway de entrada pré-configurado, o
istio-ingressgateway
, que pode ser usado para gerenciar o tráfego de entrada para
aplicativos em execução na malha de serviço. Para permitir o acesso de aplicativos
de fora do cluster, como de um navegador, siga estas recomendações:
É preciso ver o endereço IP externo ou o nome do host e a porta do balanceador de carga externo que o
istio-ingressgateway
está configurado para usar.O aplicativo precisa definir um recurso Gateway e VirtualService, semelhante ao
frontend-gateway.yaml
do aplicativo de amostra Online Boutique.
Para conseguir o endereço externo do istio-ingressgateway
:
Crie a variável de ambiente
INGRESS_HOST
:export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
Crie a variável de ambiente
INGRESS_PORT
:export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
Para testar, implante um aplicativo de amostra, como o Online Boutique.
Para acessar o aplicativo no navegador, use o valor de
$INGRESS_HOST:$INGRESS_PORT
no URL.
Solução de problemas
Os clusters do Anthos na AWS requer tags em sub-redes que contenham endpoints do
balanceador de carga. Os clusters do Anthos na AWS marcam automaticamente todas as sub-redes especificadas no campo
spec.Networking.ServiceLoadBalancerSubnetIDs
do recurso AWSCluster
.
Se você quiser adicionar mais sub-redes ao seu cluster de usuário ou precisar reaplicar tags a sub-redes atuais, execute as etapas a seguir.
No diretório
anthos-aws
, useanthos-gke
para alternar o contexto para o serviço de gerenciamento.cd anthos-aws anthos-gke aws management get-credentials
Consiga o código da VPC da AWS do cluster com
kubectl
e armazene-o como uma variável.export VPC_ID=$(\ env HTTP_PROXY=http://localhost:8118 \ kubectl get awscluster cluster-0 -o jsonpath='{.spec.networking.vpcID}')
Verifique o conteúdo das variáveis com
echo
. A saída é semelhante avpc-12345678abcdef0
.echo $VPC_ID
Salve o ID do cluster em uma variável de ambiente.
export CLUSTER_ID=$(\ env HTTP_PROXY=http://localhost:8118 \ kubectl get awscluster cluster-0 -o jsonpath='{.status.clusterID}')
É possível verificar a variável com
echo
:echo $CLUSTER_ID
A resposta inclui o ID do cluster.
gke-12345678
Se você instalou clusters do Anthos na AWS em uma VPC dedicada, use a ferramenta de linha de comando
aws
para recuperar o ID da sub-rede.Selecione uma destas opções:
- Público se você quiser expor serviços na sua sub-rede pública.
- Particular, se você quiser expor serviços na sub-rede privada.
Várias sub-redes, se você quiser expor serviços em várias sub-redes.
Público
export SUBNET_ID=$(aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*public*" \ --query "Subnets[*].SubnetId" \ --output text)
A saída é um objeto que contém o ID da sub-rede. Ela se parece com
subnet-1234abcdefg
. É possível verificar a variável comecho
:echo $SUBNET_ID
A resposta inclui o ID da sub-rede.
subnet-012345678abcdef
Particular
export SUBNET_ID=$(aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \ --query "Subnets[*].SubnetId" \ --output text)
A saída é um objeto que contém o ID da sub-rede. Ela se parece com
subnet-1234abcdefg
. É possível verificar a variável comecho
:echo $SUBNET_ID
A resposta inclui o ID da sub-rede.
subnet-012345678abcdef
Várias sub-redes
Se você estiver usando várias sub-redes para o AWSNodePools (por exemplo, se usar várias zonas de disponibilidade), será necessário incluir uma tag nos IDs de sub-rede individualmente.
Recupere sua lista de IDs de sub-rede com
aws ec2 describe-subnets
.Para ver uma lista de todas as sub-redes públicas, execute o seguinte comando:
aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*public*" \ --query "Subnets[*].SubnetId" \ --output text
Para ver uma lista de todas as sub-redes particulares, execute o seguinte comando:
aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \ --query "Subnets[*].SubnetId" \ --output text
A resposta inclui seus IDs de sub-rede.
subnet-012345678abcdef subnet-abcdef123456789 subnet-123456789abcdef
Marque a sub-rede com o ID do cluster. Se você tiver várias sub-redes, selecione "Várias sub-redes".
Sub-rede única
aws ec2 create-tags \ --resources $SUBNET_ID \ --tags Key=kubernetes.io/cluster/$CLUSTER_ID,Value=shared
Várias sub-redes
Para cada uma das suas sub-redes, execute o seguinte comando:
aws ec2 create-tags \ --resources subnet-ids \ --tags Key=kubernetes.io/cluster/$CLUSTER_ID,Value=shared
Substitua subnet-ids pela lista de IDs de sub-rede, separados por espaços. Por exemplo,
subnet-012345678abcdef subnet-abcdef123456789 subnet-123456789abcdef
.
A seguir
Crie um exemplo de implantação em clusters do Anthos na AWS.