Anthos Service Mesh 1.6

Como instalar o Anthos Service Mesh no GKE na AWS

Neste guia, explicamos como fazer uma instalação limpa da versão 1.6.8-asm.9 do Anthos Service Mesh em um cluster existente do GKE 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:

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

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.

Configurar o ambiente

Você precisa das seguintes ferramentas na máquina onde quer instalar o Anthos Service Mesh. Só é possível instalar o Anthos Service Mesh em um cluster de usuários, e 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 Boutique on-line, instale kpt:

    gcloud components install kpt
    
  5. Alterne o contexto para seu cluster de usuário:

    kubectl config use-context CLUSTER_NAME
  6. 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

  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 - -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 diretório de trabalho atual chamado istio-1.6.8-asm.9. O diretório istio-1.6.8-asm.9/bin contém a ferramenta de linha de comando istioctl que você usa para instalar o Anthos Service malha.

  4. Verifique se você está no diretório raiz da instalação do Anthos Service Mesh.

    cd istio-1.6.8-asm.9
  5. Por conveniência, adicione o diretório /bin ao seu PATH:

    export PATH=$PWD/bin:$PATH
  6. 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 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ública

Instale o Anthos Service Mesh:

istioctl install --set profile=asm-multicloud

Privada

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 está presente, o GKE na AWS cria serviços de entrada privada.

  1. 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"
    
  2. Instale o Anthos Service Mesh:

    istioctl install --set profile=asm-multicloud \
     -f istio-operator-internal-lb.yaml
    

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.

Antes de implantar cargas de trabalho, configure uma injeção de proxy sidecar para que o Anthos Service Mesh monitore e proteja 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 de sidecar com um comando. Por exemplo:

kubectl label namespace NAMESPACE istio-injection=enabled --overwrite

em que NAMESPACE é o nome do namespace dos serviços do aplicativo ou default se você não tiver criado um namespace explicitamente.

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:

  1. 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}')
    
  2. 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}')
    
  3. Para testar, implante um aplicativo de amostra, como o Online Boutique.

  4. Para acessar o aplicativo no navegador, use o valor de $INGRESS_HOST:$INGRESS_PORT no URL.