Como instalar o Anthos Service Mesh no local

Neste guia, explicamos como fazer uma instalação limpa da versão 1.5.10-asm.2 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 recursos compatíveis no GKE no VMware.

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.

  • Para serem incluídos na malha de serviço, as portas precisam ser nomeadas, e o nome precisa incluir o protocolo da porta na seguinte sintaxe: 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
    

    O resultado será exibido a seguir:

    1.2.0-gke.6 (git-0912663b0)
    

    Se você não tiver gkectl instalado, consulte Downloads do GKE On-Prem.

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:

  1. Faça a autenticação com a gcloud CLI:

    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 Google Cloud, abra 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 Google Cloud CLI:

    gcloud config set project PROJECT_ID

Como configurar credenciais e permissões

  1. Verifique se você tem o kubectl para os clusters de usuário do GKE no VMware em que você 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 o cluster-admin-binding atual.

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.5.10-asm.2-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.5.10-asm.2-linux.tar.gz.1.sig
    openssl dgst -verify - -signature istio-1.5.10-asm.2-linux.tar.gz.1.sig istio-1.5.10-asm.2-linux.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    A saída esperada é Verified OK.

  3. 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.5.10-asm.2-linux.tar.gz

    O comando cria um diretório de instalação no seu diretório de trabalho atual chamado istio-1.5.10-asm.2, que contém:

    • 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. No momento, asmctl não é compatível com o GKE no VMware.

  4. Mac OS

  5. 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.5.10-asm.2-osx.tar.gz
  6. 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.5.10-asm.2-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.5.10-asm.2-osx.tar.gz.1.sig istio-1.5.10-asm.2-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    A saída esperada é Verified OK.

  7. 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.5.10-asm.2-osx.tar.gz

    O comando cria um diretório de instalação no seu diretório de trabalho atual chamado istio-1.5.10-asm.2, que contém:

    • 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. No momento, asmctl não é compatível com o GKE no VMware.

  8. Windows

  9. 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.5.10-asm.2-win.zip
  10. 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.5.10-asm.2-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.5.10-asm.2-win.zip.1.sig istio-1.5.10-asm.2-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    A saída esperada é Verified OK.

  11. 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.5.10-asm.2-win.zip

    O comando cria um diretório de instalação no seu diretório de trabalho atual chamado istio-1.5.10-asm.2, que contém:

    • 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. No momento, asmctl não é compatível com o GKE no VMware.

  12. Verifique se você está no diretório raiz da instalação do Anthos Service Mesh.
    cd istio-1.5.10-asm.2
  13. 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

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.

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

  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