Você está vendo a documentação do Anthos Service Mesh 1.8. Veja uma mais recente ou selecione outra versão disponível:

Como instalar o Anthos Service Mesh no local

Neste guia, explicamos como fazer uma instalação limpa da versão 1.8.5-asm.2 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 de clusters do Anthos no VMware no Anthos Service Mesh. 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

Os clusters do Anthos no VMware vêm com os seguintes componentes do Istio pré-instalados:

  • A autoridade de certificação do Anthos Service Mesh (Citadel) é instalada 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

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 faturamento via pagamento por utilização está disponível para o Anthos, somente no Google Cloud. Para mais informações, consulte o guia de preços do Anthos.

  • 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. Se você não tiver a gkectl instalada, consulte Downloads do GKE On-Prem.

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

Depois de instalar o SDK do Cloud:

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

  1. Consiga o nome do contexto para o cluster usando os valores na coluna NAME na saída deste comando:

    kubectl config get-contexts
  2. 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

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

  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.8.5-asm.2-linux-amd64.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.8.5-asm.2-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.8.5-asm.2-linux-amd64.tar.gz.1.sig istio-1.8.5-asm.2-linux-amd64.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.8.5-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.8.5-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ório bin.
    • Os perfis de configuração do Anthos Service Mesh estão no diretório manifests/profiles.

  4. Verifique se você está no diretório raiz da instalação do Anthos Service Mesh.
    cd istio-1.8.5-asm.2
  5. macOS

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

    A saída esperada é Verified OK.

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

    O comando cria um diretório de instalação no seu diretório de trabalho atual, chamado istio-1.8.5-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ório bin.
    • Os perfis de configuração do Anthos Service Mesh estão no diretório manifests/profiles.

  9. Verifique se você está no diretório raiz da instalação do Anthos Service Mesh.
    cd istio-1.8.5-asm.2
  10. Windows

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

    A saída esperada é Verified OK.

  13. 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.8.5-asm.2-win.zip

    O comando cria um diretório de instalação no seu diretório de trabalho atual, chamado istio-1.8.5-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ório bin.
    • Os perfis de configuração do Anthos Service Mesh estão no diretório manifests/profiles.

  14. Verifique se você está no diretório raiz da instalação do Anthos Service Mesh.
    cd istio-1.8.5-asm.2

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

  1. Crie um diretório para certificados e chaves:

    mkdir -p certs && \
    pushd certs
  2. 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
  3. 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.

  4. Crie um cacerts secreto, incluindo todos os arquivos de entrada ca-cert.pem, ca- key.pem, root-cert.pem e cert-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.

  5. Volte ao diretório anterior:

    popd

Como instalar o Anthos Service Mesh

  1. Crie uma variável de ambiente para o ID do projeto:

    export PROJECT_ID=YOUR_PROJECT_ID
  2. Crie uma variável de ambiente para o número do projeto:

    export PROJECT_NUMBER=$(gcloud projects describe ${PROJECT_ID} --format="value(projectNumber)")
  3. 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}"
  4. 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.

    No exemplo a seguir, use o MESH_ID definido nas etapas anteriores.

    cat <<EOF > cluster.yaml
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      profile: asm-multicloud
      revision: asm-185-2
      values:
        global:
          meshID: MESH_ID
          multiCluster:
            clusterName: CLUSTER_NAME
          network: NETWORK_ID
    EOF
    
  5. Se necessário, mude para o diretório istio-1.8.5-asm.2. O cliente istioctl depende da versão. Certifique-se de usar a versão no diretório istio-1.8.5-asm.2/bin.

  6. Aplique a configuração ao cluster:

    bin/istioctl install --context="${CTX_CLUSTER1}" -f cluster.yaml
    

Como definir a rede padrão

  1. Defina a rede padrão no namespace istio-system:

    No exemplo a seguir, 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.

     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.

  1. 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-185-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-185-2
    EOF
    
  2. 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:

  1. Defina o contexto atual para kubectl:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --project=PROJECT_ID
    
  2. Use o seguinte comando para localizar o rótulo de revisão em istiod:

    kubectl -n istio-system get pods -l app=istiod --show-labels
    

    A resposta será semelhante a:

    NAME                                READY   STATUS    RESTARTS   AGE   LABELS
    istiod-asm-185-2-5788d57586-bljj4   1/1     Running   0          23h   app=istiod,istio.io/rev=asm-185-2,istio=istiod,pod-template-hash=5788d57586
    istiod-asm-185-2-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-185-2,istio=istiod,pod-template-hash=5788d57586

    Na saída, na coluna LABELS, observe o valor do rótulo de revisão istiod, que segue o prefixo istio.io/rev=. Neste exemplo, o valor é asm-185-2.

  3. 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, e REVISION é o rótulo de revisão que você anotou na etapa anterior.

    kubectl 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ótulo istio-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 o istio-injection e o rótulo de revisão, todos os comandos kubectl label na documentação do Anthos Service Mesh incluem a remoção do rótulo istio-injection.

  4. 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 rollout restart deployment -n NAMESPACE
    
  5. Verifique se os pods estão configurados para apontar para a nova versão de istiod.

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