Anthos Service Mesh 1.6

Como instalar o Anthos Service Mesh no GKE no Google Cloud

Nesta página, explicaremos como fazer uma instalação limpa da versão 1.6.8 do Anthos Service Mesh em um cluster do GKE no Google Cloud. Se você tiver uma versão anterior do Anthos Service Mesh instalada, veja Como fazer upgrade do Anthos Service Mesh no GKE.

Antes de começar

Antes de instalar o Anthos Service Mesh, verifique se você tem:

Como configurar credenciais e permissões

  1. Inicialize seu projeto para prepará-lo para instalação. Entre outras coisas, este comando cria uma conta de serviço para permitir componentes de plano de controle, como o proxy sidecar, para acessar com segurança os dados e os recursos do seu projeto:

    curl --request POST \
      --header "Authorization: Bearer $(gcloud auth print-access-token)" \
      --data '' \
      "https://meshconfig.googleapis.com/v1alpha1/projects/${PROJECT_ID}:initialize"

    A resposta do comando mostra chaves vazias: {}

  1. Consiga as credenciais de autenticação para interagir com o cluster:

    gcloud container clusters get-credentials ${CLUSTER_NAME}
    
  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ê observar o erro "cluster-admin-binding" already exists, poderá ignorá-lo com segurança e continuar com o cluster-admin-binding atual.

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.6.8-asm.9-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.6.8-asm.9-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.6.8-asm.9-linux-amd64.tar.gz.1.sig istio-1.6.8-asm.9-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.6.8-asm.9-linux-amd64.tar.gz

    O comando cria um diretório de instalação no seu diretório de trabalho atual, chamado istio-1.6.8-asm.9, 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 install/kubernetes/operator/profiles.

  4. macOS

  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.6.8-asm.9-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.6.8-asm.9-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.6.8-asm.9-osx.tar.gz.1.sig istio-1.6.8-asm.9-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.6.8-asm.9-osx.tar.gz

    O comando cria um diretório de instalação no seu diretório de trabalho atual, chamado istio-1.6.8-asm.9, 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 install/kubernetes/operator/profiles.

  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.6.8-asm.9-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.6.8-asm.9-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.6.8-asm.9-win.zip.1.sig istio-1.6.8-asm.9-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.6.8-asm.9-win.zip

    O comando cria um diretório de instalação no seu diretório de trabalho atual, chamado istio-1.6.8-asm.9, 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 install/kubernetes/operator/profiles.

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

Como preparar arquivos de configuração de recursos

Ao executar o comando istioctl install, especifique -f istio-operator.yaml na linha de comando. Esse arquivo contém informações sobre o projeto e o cluster exigidos pelo Anthos Service Mesh. Faça o download de um pacote que contenha istio-operator.yaml e outros arquivos de configuração de recursos para que seja possível definir as informações do projeto e do cluster.

Para começar, escolha um pacote para fazer o download com base na autoridade de certificação (CA, na sigla em inglês) que você quer usar:

  • asm: recomendamos que você faça o download desse pacote, que ativa a CA da malha.

  • asm-citadel: se preferir, é possível ativar o Citadel (agora incorporado em istiod) como CA. Recomendamos que você use o Citadel somente se tiver uma CA personalizada.

Para preparar os arquivos de configuração de recursos, siga estas etapas:

  1. Crie um novo diretório para os arquivos de configuração do recurso do pacote Anthos Service Mesh. Recomendamos que você use o nome do cluster como o nome do diretório.

  2. Altere para o diretório em que você quer fazer o download do pacote do Anthos Service Mesh.

  3. Faça o download do pacote que você quer usar com base na CA.

    CA da malha

    Faça o download do pacote asm, que ativa a CA da malha:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.6-asm asm
    

    Citadel

    Faça o download do pacote asm-citadel, que ativa o Citadel como a CA:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm-citadel@release-1.6-asm asm
    
  4. Defina o ID do projeto em que o cluster foi criado:

    kpt cfg set asm gcloud.core.project ${PROJECT_ID}
    
  5. Defina o número do projeto host do environ:

    kpt cfg set asm gcloud.project.environProjectNumber ${ENVIRON_PROJECT_NUMBER}
    
  6. Defina o nome do cluster:

    kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
    
  7. Defina a zona ou a região padrão:

    kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
    
  8. Defina o perfil de configuração que você planeja usar:

    • Se todos os clusters estiverem no mesmo projeto, defina o perfil asm-gcp:

      kpt cfg set asm anthos.servicemesh.profile asm-gcp
      
    • Caso a malha de serviço contenha (ou venha a conter) vários clusters que estão em projetos diferentes, defina o perfil asm-gcp-multiproject:

      kpt cfg set asm anthos.servicemesh.profile asm-gcp-multiproject
      
  9. Se você definir o perfil asm-gcp, pule para a próxima etapa. Se você definir o perfil asm-gcp-multiprojectyou e fizer o download do pacote asm, que ativa a CA da malha, será necessário configurar os aliases de domínio de confiança nos outros projetos que formam a malha de serviço de vários clusters.

    1. Encontre o ID do projeto de todos os clusters que estarão na malha de vários clusters.

    2. Em cada ID de projeto, defina os aliases de domínio de confiança. Por exemplo, se você tiver clusters em três projetos, execute o seguinte comando e substitua PROJECT_ID_1, PROJECT_ID_2 e PROJECT_ID_3 pelos IDs de projeto em todos os projetos (incluindo o projeto atual).

      kpt cfg set asm anthos.servicemesh.trustDomainAliases PROJECT_ID_1.svc.id.goog PROJECT_ID_2.svc.id.goog PROJECT_ID_3.svc.id.goog

      Ao configurar os clusters nos outros projetos, é possível usar o mesmo comando.

      Os aliases de domínio de confiança permitem que a CA da malha autentique cargas de trabalho em clusters em outros projetos. Além de definir os aliases de domínio de confiança, você precisa ativar o balanceamento de carga entre clusters.

  10. Se preferir, insira os arquivos de configuração de recursos no seu próprio sistema de controle de origem, como o Cloud Source Repositories, para rastrear as alterações nos arquivos.

Como instalar o Anthos Service Mesh

  1. Se você estiver usando o Citadel como autoridade de certificação e quiser usar uma CA personalizada, execute os seguintes comandos:

    kubectl create namespace istio-system
    kubectl create secret generic cacerts  \
      -n istio-system \
      --from-file=ca-cert.pem \
      --from-file=ca-key.pem \
      --from-file=root-cert.pem \
      --from-file=cert-chain.pem

    Para ver mais informações, consulte Como conectar certificados de CA existentes.

  2. Execute o seguinte comando para instalar o Anthos Service Mesh com o perfil de configuração que você definiu no arquivo istio-operator.yaml. Se você quiser ativar um recurso opcional compatível, inclua -f e o nome de arquivo YAML na linha de comando a seguir. Para ver mais informações, consulte Como ativar recursos opcionais.

    istioctl install \
      -f asm/cluster/istio-operator.yaml
  3. Se você tiver usado o perfil asm-gcp, execute o comando a seguir para ativar a IU do Anthos Service Mesh no Console do Cloud:

    kubectl apply -f asm/canonical-service/controller.yaml

    Se você tiver usado o perfil asm-gcp-multiproject, saiba que, no momento, os dados de telemetria não são exibidos nos painéis do Anthos Service Mesh no Console do Cloud. No entanto, ainda é possível ver registros no Cloud Logging e métricas no Cloud Monitoring de cada projeto.

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.

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-cff9f5c7d-qg4ls   1/1     Running   0          7m5s
istio-ingressgateway-cff9f5c7d-vlkzb   1/1     Running   0          7m20s
istiod-66b587859c-886gx                1/1     Running   0          7m33s
istiod-66b587859c-dfs2j                1/1     Running   0          7m33s

Como validar a instalação

Recomendamos que você use a ferramenta de análise asmctl para validar a configuração básica do projeto, do cluster e das cargas de trabalho. Se um teste asmctl falhar, asmctl recomenda soluções, se possível. O comando asmctl validate executa testes básicos que verificam:

  1. que as APIs exigidas pelo Anthos Service Mesh estão ativadas no projeto;
  2. que o Istio-Ingressgateway está configurado corretamente para chamar a CA do Mesh;
  3. a integridade geral do Istiod e do Istio-Ingressgateway.

Se você executar o comando asmctl validate com a sinalização opcional --with-testing-workloads, além dos testes básicos, o asmctl executará testes de segurança que verificam:

  1. se a comunicação TLS mútua (mTLS) está configurada corretamente;
  2. se a CA do Mesh pode emitir certificados.

Para executar os testes de segurança, o asmctl implanta cargas de trabalho no cluster em um namespace de teste, executa os testes de comunicação mTLS, gera os resultados e exclui o namespace de teste. Observe que os testes de segurança só funcionam com CA da malha. Se você estiver usando o Citadel como a CA, os testes de segurança falharão.

Para executar asmctl:

  1. Verifique se o Application Default Credentials da gcloud está configurado:

     gcloud auth application-default login
    
  2. Receba credenciais de autenticação para interagir com o cluster, caso ainda não tenha feito isso:

     gcloud container clusters get-credentials ${CLUSTER_NAME}
    
  3. Para executar os testes básicos (supondo que istio-1.6.8-asm.9/bin está em PATH):

    asmctl validate
    

    Se for bem-sucedido, o comando responderá com uma saída semelhante à seguinte:

    [asmctl version 0.4.1]
    Using Kubernetes context: example-context_us-central1-example-cluster
    To change the context, use the --context flag
    Validating enabled APIs
    OK
    Validating ingressgateway configuration
    OK
    Validating istio system
    OK
  4. Se você tiver ativado a CA da malha: para executar os testes básico e de segurança:

    asmctl validate --with-testing-workloads
    

    Se for bem-sucedido, o comando responderá com uma saída semelhante à seguinte:

    [asmctl version 0.4.1]
    Using Kubernetes context: example-context_us-central1-example-cluster
    To change the context, use the --context flag
    Validating enabled APIs
    OK
    Validating ingressgateway configuration
    OK
    Validating istio system
    OK
    
    [asmctl version 0.4.1]
    Using Kubernetes context: example-context_us-central1-example-cluster
    To change the context, use the --context flag
    Validating enabled APIs
    OK
    Validating ingressgateway configuration
    OK
    Validating istio system
    OK
    Validating sample traffic
    Launching example services...
    Sent traffic to example service http code: 200
    verified mTLS configuration
    OK
    Validating issued certs
    OK

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.

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

Para mais informações, consulte Como injetar proxies sidecar.

Como visualizar os painéis do Anthos Service Mesh

Esta seção é aplicável somente se você tiver instalado o Anthos Service Mesh com o perfil de configuração asm-gcp. Se você tiver usado o perfil asm-gcp-multiproject para instalar o Anthos Service Mesh, os dados de telemetria não estarão disponíveis nos painéis do Anthos Service Mesh no Console do Cloud.

Depois de implantar as cargas de trabalho no seu cluster com os proxies sidecar injetados, acesse as páginas do Anthos Service Mesh no Console do Cloud para ver todos os recursos de observabilidade que o Anthos Service Mesh oferece. Observe que leva cerca de um ou dois minutos para que os dados de telemetria sejam exibidos no Console do Cloud após a implantação das cargas de trabalho.

O acesso ao Anthos Service Mesh no Console do Cloud é controlado pelo Gerenciamento de identidade e acesso (IAM). Para acessar as páginas do Anthos Service Mesh, um proprietário do projeto precisa conceder aos usuários o papel de Editor ou Visualizador de projeto ou os papéis mais restritivos descritos em Como controlar o acesso ao Anthos Service Mesh no Console do Cloud.

  1. No Console do Google Cloud, acesse Anthos Service Mesh.

    Acesse o Anthos Service Mesh

  2. Selecione o projeto do Cloud na lista suspensa na barra de menus.

  3. Se você tiver mais de uma malha de serviço, selecione a malha na lista suspensa Service Mesh.

Para saber mais, consulte Como explorar o Anthos Service Mesh no Console do Cloud.

Além das páginas do Anthos Service Mesh, as métricas relacionadas aos seus serviços, como o número de solicitações recebidas por um serviço específico, são enviadas para o Cloud Monitoring, onde elas aparecem o Metrics Explorer.

Para ver métricas:

  1. No Console do Google Cloud, acesse a página Monitoring.

    Acessar o Monitoring

  2. Selecione Recursos > Metrics Explorer.

Para ver uma lista completa de métricas, consulte Métricas do Istio na documentação do Cloud Monitoring.

Como registrar o cluster

É necessário registrar o cluster com o environ do projeto para ter acesso à interface do usuário unificada no Console do Cloud. Um environ fornece uma forma unificada de visualizar e gerenciar os clusters e as cargas de trabalho deles, incluindo clusters fora do Google Cloud.

Veja informações sobre como registrar seu cluster em Como registrar clusters no environ.

A seguir