O Anthos Service Mesh 1.4 chegou ao fim da vida útil e não é mais compatível. Consulte Como fazer upgrade de versões anteriores.

Veja uma mais recente ou selecione outra versão:

Como instalar o Anthos Service Mesh no local

O Anthos Service Mesh é um framework compatível com Istio (em inglês) para conectar, monitorar e proteger serviços em execução no Google Kubernetes Engine (GKE) e em clusters do Anthos 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 nos clusters do Anthos no VMware. Se você tiver uma versão anterior do Anthos Service Mesh instalada, consulte Como fazer upgrade do Anthos Service Mesh em clusters do Anthos no VMware.

A instalação ativa os recursos principais do Istio compatíveis em clusters do Anthos no VMware. Observe que os componentes gerenciados do Anthos Service Mesh não são compatíveis atualmente com os clusters do Anthos no VMware.

Sobre os componentes do plano de controle

Os clusters do Anthos no VMware vêm 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.

Os clusters do Anthos no VMware usam esses componentes para permitir a entrada e proteger a comunicação entre 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 em clusters do Anthos 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 de avaliação ou uma assinatura do Anthos. Veja mais detalhes no guia de preços do Anthos.

  • 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 o SDK do Cloud (a ferramenta de linha de comando gcloud).

Se você já tem o SDK do Cloud instalado, siga estas etapas:

  1. Faça a autenticação com o SDK do Cloud:

    gcloud auth login
    
  2. Atualize os componentes:

    gcloud components update
    
  3. Instale kubectl:

    gcloud components install kubectl
    
  4. Consiga o ID do projeto em que o cluster foi criado:

    gcloud

    gcloud projects list

    Console

    1. No Console do Cloud, acesse a página Painel:

      Ir para a página "Painel"

    2. 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.

  5. Defina o ID do projeto padrão para a ferramenta de linha de comando gcloud:

    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.

  1. 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.
  2. 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 a vinculação atual de cluster-admin.

Como preparar a instalação do Anthos Service Mesh

    Linux

  1. 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
  2. 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.

  3. macOS

  4. 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
  5. 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.

  6. Windows

  7. 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
  8. 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.

  9. 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 o seguinte:

    • aplicativos de amostra em samples;
    • As seguintes ferramentas no diretório bin:
      • istioctl: use istioctl para instalar o Anthos Service Mesh.
      • asmctl: use asmctl para ajudar a validar sua configuração de segurança depois de instalar o Anthos Service Mesh. Atualmente, asmctl não é compatível com clusters do Anthos no VMware.

  10. Verifique se você está no diretório raiz da instalação do Anthos Service Mesh.
    cd istio-1.4.10-asm.18
  11. Para facilitar, adicione as ferramentas ao diretório /bin/bin do seu PATH.
    export PATH=$PWD/bin:$PATH

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 em clusters do Anthos 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

  1. 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.

  2. 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
    
  3. 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:

  1. 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
     ...
    
  2. Exponha essas portas pelo balanceador de carga.

    Por exemplo, a porta de serviço chamada http2 tem port 80 e nodePort 31380. Suponha que os endereços de nó do cluster de usuário sejam 192.168.0.10, 192.168.0.11 e 192.168.0.12, e o VIP do balanceador de carga seja 203.0.113.1.

    Configure o balanceador de carga para que o tráfego enviado para 203.0.113.1:80 seja encaminhado para 192.168.0.10:31380, 192.168.0.11:31380 ou 192.168.0.12:31380. É possível selecionar as portas de serviço que quer expor nesse VIP.

A seguir