Usar o Anthos Service Mesh

A partir da versão 1.8 do Apigee hybrid, o Apigee hybrid usa o gateway de entrada do Apigee para fornecer um gateway de entrada para a sua instalação híbrida. Se preferir usar o Anthos Service Mesh para a entrada, siga estes passos para instalar o Anthos Service Mesh no seu cluster.

Versões suportadas do Anthos Service Mesh

Consulte o artigo Apigee Hybrid: plataformas suportadas para ver as versões do Anthos Service Mesh suportadas na versão híbrida 1.8.

Se estiver a atualizar a sua instalação híbrida, siga as instruções em Atualize o Anthos Service Mesh.

Instale o Anthos Service Mesh

Execute estes passos numa instalação nova do Apigee Hybrid apenas se não estiver a usar o gateway de entrada do Apigee.

Execute os procedimentos através da documentação do Anthos Service Mesh adequada à sua plataforma:

As instruções para instalar e configurar o Anthos Service Mesh são diferentes consoante a sua plataforma. As plataformas estão divididas nas seguintes categorias:

  • GKE: clusters do Google Kubernetes Engine em execução no Google Cloud.
  • Fora do Google Cloud: clusters do Anthos em execução em:
    • Clusters do Anthos no VMware (GKE On-Prem)
    • Anthos em bare metal
    • Clusters do Anthos no AWS
    • Amazon EKS
  • Outras plataformas Kubernetes: clusters em conformidade criados e executados em:
    • AKS
    • EKS
    • OpenShift

GKE

A sequência para instalar o Anthos Service Mesh é a seguinte:

  1. Prepare-se para a instalação.
  2. Instale a nova versão do Anthos Service Mesh.

Prepare-se para instalar o Anthos Service Mesh

  1. Reveja os requisitos em Atualize o Anthos Service Mesh, mas não faça a atualização ainda.
  2. Crie um novo ficheiro overlay.yaml ou verifique se o ficheiro overlay.yaml existente contém o seguinte conteúdo:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      components:
        ingressGateways:
        - name: istio-ingressgateway
          enabled: true
          k8s:
            nodeSelector:
              # default node selector, if different or not using node selectors, change accordingly.
              cloud.google.com/gke-nodepool: apigee-runtime
            resources:
              requests:
                cpu: 1000m
            service:
              type: LoadBalancer
              loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out.
              ports:
                - name: http-status-port
                  port: 15021
                - name: http2
                  port: 80
                  targetPort: 8080
                - name: https
                  port: 443
                  targetPort: 8443
      meshConfig:
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
  3. Siga as instruções nas secções seguintes da documentação do Anthos Service Mesh:
    1. Transferir asmcli
    2. Conceda autorizações de administrador do cluster
    3. Valide o projeto e o cluster
    4. Atualize com funcionalidades opcionais. Pare antes de iniciar a "Secção de atualização de gateways".

Fora do Google Cloud

Estas instruções abrangem a atualização do Anthos Service Mesh nos seguintes sistemas:

  • Clusters do Anthos no VMware (GKE On-Prem)
  • Anthos em bare metal
  • Clusters do Anthos no AWS
  • Amazon EKS

A sequência para instalar o Anthos Service Mesh é a seguinte:

  1. Prepare-se para a instalação.
  2. Instale a nova versão do Anthos Service Mesh.

Prepare-se para instalar o Anthos Service Mesh

  1. Reveja os requisitos em Atualize o Anthos Service Mesh, mas não faça a atualização ainda.
  2. Crie um novo ficheiro overlay.yaml ou verifique se o ficheiro overlay.yaml existente contém o seguinte conteúdo:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:  
      components:
        ingressGateways:
        - name: istio-ingressgateway
          enabled: true
          k8s:
            nodeSelector:
              # default node selector, if different or not using node selectors, change accordingly.
              cloud.google.com/gke-nodepool: apigee-runtime
            resources:
              requests:
                cpu: 1000m
            service:
              type: LoadBalancer
              loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out.
              ports:
                - name: http-status-port
                  port: 15021
                - name: http2
                  port: 80
                  targetPort: 8080
                - name: https
                  port: 443
                  targetPort: 8443
      values:
        gateways:
          istio-ingressgateway:
            runAsRoot: true
    
      meshConfig:
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
  3. Siga as instruções nas secções seguintes da documentação do Anthos Service Mesh:
    1. Transferir asmcli
    2. Conceda autorizações de administrador do cluster
    3. Valide o projeto e o cluster
    4. Atualize com funcionalidades opcionais. Pare antes de iniciar a "Secção de atualização de gateways".

AKS / EKS

A preparar a instalação do Anthos Service Mesh

    Linux

  1. Transfira o ficheiro de instalação do Anthos Service Mesh para o diretório de trabalho atual:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-linux-amd64.tar.gz
  2. Transfira o ficheiro de assinatura e use o OpenSSL para validar a assinatura:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature 1.17.8-asm.4-distroless-linux-amd64.tar.gz.1.sig 1.17.8-asm.4-distroless.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  3. Extraia o conteúdo do ficheiro para qualquer localização no seu sistema de ficheiros. Por exemplo, para extrair os conteúdos para o diretório de trabalho atual:
    tar xzf 1.17.8-asm.4-distroless-linux-amd64.tar.gz

    O comando cria um diretório de instalação no seu diretório de trabalho atual denominado 1.17.8-asm.4-distroless que contém:

    • Exemplos de aplicações no diretório samples.
    • A ferramenta de linha de comandos istioctl que usa para instalar o Anthos Service Mesh está no diretório bin.
    • Os perfis de configuração do Anthos Service Mesh encontram-se no diretório manifests/profiles.
  4. Certifique-se de que está no diretório raiz da instalação do Anthos Service Mesh:
    cd 1.17.8-asm.4-distroless
  5. Para maior comodidade, adicione as ferramentas no diretório /bin ao seu PATH:
    export PATH=$PWD/bin:$PATH
  6. Mac OS

  7. Transfira o ficheiro de instalação do Anthos Service Mesh para o diretório de trabalho atual:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-osx.tar.gz
  8. Transfira o ficheiro de assinatura e use o OpenSSL para validar a assinatura:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature 1.17.8-asm.4-distroless-osx.tar.gz.1.sig 1.17.8-asm.4-distroless.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  9. Extraia o conteúdo do ficheiro para qualquer localização no seu sistema de ficheiros. Por exemplo, para extrair os conteúdos para o diretório de trabalho atual:
    tar xzf 1.17.8-asm.4-distroless-osx.tar.gz

    O comando cria um diretório de instalação no seu diretório de trabalho atual denominado 1.17.8-asm.4-distroless que contém:

    • Exemplos de aplicações no diretório samples.
    • A ferramenta de linha de comandos istioctl que usa para instalar o Anthos Service Mesh está no diretório bin.
    • Os perfis de configuração do Anthos Service Mesh encontram-se no diretório manifests/profiles.
  10. Certifique-se de que está no diretório raiz da instalação do Anthos Service Mesh:
    cd 1.17.8-asm.4-distroless
  11. Para maior comodidade, adicione as ferramentas no diretório /bin ao seu PATH:
    export PATH=$PWD/bin:$PATH
  12. Windows

  13. Transfira o ficheiro de instalação do Anthos Service Mesh para o diretório de trabalho atual:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-win.zip
  14. Transfira o ficheiro de assinatura e use o OpenSSL para validar a assinatura:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-win.zip.1.sig
    openssl dgst -verify - -signature 1.17.8-asm.4-distroless-win.zip.1.sig 1.17.8-asm.4-distroless.win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  15. Extraia o conteúdo do ficheiro para qualquer localização no seu sistema de ficheiros. Por exemplo, para extrair os conteúdos para o diretório de trabalho atual:
    tar xzf 1.17.8-asm.4-distroless-win.zip

    O comando cria um diretório de instalação no seu diretório de trabalho atual denominado 1.17.8-asm.4-distroless que contém:

    • Exemplos de aplicações no diretório samples.
    • A ferramenta de linha de comandos istioctl que usa para instalar o Anthos Service Mesh está no diretório bin.
    • Os perfis de configuração do Anthos Service Mesh encontram-se no diretório manifests\profiles.
  16. Certifique-se de que está no diretório raiz da instalação do Anthos Service Mesh:
    cd 1.17.8-asm.4-distroless
  17. Para maior comodidade, adicione as ferramentas no diretório \bin ao seu PATH:
    set PATH=%CD%\bin:%PATH%
  18. Agora que o Anthos Service Mesh Istio está instalado, verifique a versão do istioctl:
    istioctl version
  19. Crie um espaço de nomes denominado istio-system para os componentes do plano de controlo:
    kubectl create namespace istio-system

Instalar o Anthos Service Mesh

  1. Edite o ficheiro overlay.yaml ou crie um novo com o seguinte conteúdo:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        accessLogFile: /dev/stdout
        enableTracing: true
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
      components:
        ingressGateways:
        - name: istio-ingressgateway
          enabled: true
          k8s:
            service:
              type: LoadBalancer
              ports:
              - name: status-port
                port: 15021
                targetPort: 15021
              - name: http2
                port: 80
                targetPort: 8080
              - name: https
                port: 443
                targetPort: 8443
    
  2. Instale o Anthos Service Mesh com istioctl usando o perfil asm-multicloud:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1178-1" \
        --filename overlay.yaml

    O resultado deve ter um aspeto semelhante ao seguinte:

    kubectl get pods -n istio-system
    NAME                                   READY   STATUS    RESTARTS   AGE
    istio-ingressgateway-88b6fd976-flgp2   1/1     Running   0          3m13s
    istio-ingressgateway-88b6fd976-p5dl9   1/1     Running   0          2m57s
    istiod-asm-1178-1-798ffb964-2ls88       1/1     Running   0          3m21s
    istiod-asm-1178-1-798ffb964-fnj8c       1/1     Running   1          3m21s

    O argumento --set revision adiciona uma etiqueta de revisão no formato istio.io/rev=asm-1178-1 a istiod. A etiqueta de revisão é usada pelo webhook do injetor de contentores auxiliares automático para associar contentores auxiliares injetados a uma revisão específica.istiod Para ativar a injeção automática de sidecar para um espaço de nomes, tem de etiquetá-lo com uma revisão que corresponda à etiqueta em istiod.

  3. Confirme se a instalação foi concluída:
    kubectl get svc -n istio-system

    O resultado deve ter um aspeto semelhante ao seguinte:

    NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                                                                      AGE
    istio-ingressgateway   LoadBalancer   172.200.48.52    34.74.177.168   15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP   3m35s
    istiod                 ClusterIP      172.200.18.133   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        4m46s
    istiod-asm-1178-1       ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

OpenShift

A preparar a instalação do Anthos Service Mesh

  1. Antes de instalar a nova versão, determine a revisão atual. Precisa destas informações para eliminar o webhook de validação e o webhook de mutação da sua instalação atual do Anthos Service Mesh. Use o seguinte comando para armazenar a revisão istiod atual numa variável de ambiente:
    export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}')
    echo $DELETE_REV

    O resultado deve ter um aspeto semelhante a 1.16

  2. Linux

  3. Conceda a restrição de contexto de segurança (SCC) anyuid ao istio-system com o seguinte comando da CLI do OpenShift (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  4. Transfira o ficheiro de instalação do Anthos Service Mesh para o diretório de trabalho atual:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-linux-amd64.tar.gz
  5. Transfira o ficheiro de assinatura e use o OpenSSL para validar a assinatura:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature 1.17.8-asm.4-distroless-linux-amd64.tar.gz.1.sig 1.17.8-asm.4-distroless.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  6. Extraia o conteúdo do ficheiro para qualquer localização no seu sistema de ficheiros. Por exemplo, para extrair os conteúdos para o diretório de trabalho atual:
    tar xzf 1.17.8-asm.4-distroless-linux-amd64.tar.gz

    O comando cria um diretório de instalação no seu diretório de trabalho atual denominado 1.17.8-asm.4-distroless que contém:

    • Exemplos de aplicações no diretório samples.
    • A ferramenta de linha de comandos istioctl que usa para instalar o Anthos Service Mesh está no diretório bin.
    • Os perfis de configuração do Anthos Service Mesh encontram-se no diretório manifests/profiles.
  7. Certifique-se de que está no diretório raiz da instalação do Anthos Service Mesh:
    cd 1.17.8-asm.4-distroless
  8. Para maior comodidade, adicione as ferramentas no diretório /bin ao seu PATH:
    export PATH=$PWD/bin:$PATH
  9. Mac OS

  10. Conceda a restrição de contexto de segurança (SCC) anyuid ao istio-system com o seguinte comando da CLI do OpenShift (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  11. Transfira o ficheiro de instalação do Anthos Service Mesh para o diretório de trabalho atual:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-osx.tar.gz
  12. Transfira o ficheiro de assinatura e use o OpenSSL para validar a assinatura:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature 1.17.8-asm.4-distroless-osx.tar.gz.1.sig 1.17.8-asm.4-distroless.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  13. Extraia o conteúdo do ficheiro para qualquer localização no seu sistema de ficheiros. Por exemplo, para extrair os conteúdos para o diretório de trabalho atual:
    tar xzf 1.17.8-asm.4-distroless-osx.tar.gz

    O comando cria um diretório de instalação no seu diretório de trabalho atual denominado 1.17.8-asm.4-distroless que contém:

    • Exemplos de aplicações no diretório samples.
    • A ferramenta de linha de comandos istioctl que usa para instalar o Anthos Service Mesh está no diretório bin.
    • Os perfis de configuração do Anthos Service Mesh encontram-se no diretório manifests/profiles.
  14. Certifique-se de que está no diretório raiz da instalação do Anthos Service Mesh:
    cd 1.17.8-asm.4-distroless
  15. Para maior comodidade, adicione as ferramentas no diretório /bin ao seu PATH:
    export PATH=$PWD/bin:$PATH
  16. Windows

  17. Conceda a restrição de contexto de segurança (SCC) anyuid ao istio-system com o seguinte comando da CLI do OpenShift (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  18. Transfira o ficheiro de instalação do Anthos Service Mesh para o diretório de trabalho atual:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-win.zip
  19. Transfira o ficheiro de assinatura e use o OpenSSL para validar a assinatura:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-win.zip.1.sig
    openssl dgst -verify - -signature 1.17.8-asm.4-distroless-win.zip.1.sig 1.17.8-asm.4-distroless.win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  20. Extraia o conteúdo do ficheiro para qualquer localização no seu sistema de ficheiros. Por exemplo, para extrair os conteúdos para o diretório de trabalho atual:
    tar xzf 1.17.8-asm.4-distroless-win.zip

    O comando cria um diretório de instalação no seu diretório de trabalho atual denominado 1.17.8-asm.4-distroless que contém:

    • Exemplos de aplicações no diretório samples.
    • A ferramenta de linha de comandos istioctl que usa para instalar o Anthos Service Mesh está no diretório bin.
    • Os perfis de configuração do Anthos Service Mesh encontram-se no diretório manifests\profiles.
  21. Certifique-se de que está no diretório raiz da instalação do Anthos Service Mesh:
    cd 1.17.8-asm.4-distroless
  22. Para maior comodidade, adicione as ferramentas no diretório \bin ao seu PATH:
    set PATH=%CD%\bin:%PATH%
  23. Agora que o Anthos Service Mesh Istio está instalado, verifique a versão do istioctl:
    istioctl version
  24. Crie um espaço de nomes denominado istio-system para os componentes do plano de controlo:
    kubectl create namespace istio-system

Configure o webhook de validação

Quando instala o Anthos Service Mesh, define uma etiqueta de revisão em istiod. Tem de definir a mesma revisão no webhook de validação.

  1. Crie um ficheiro denominado istiod-service.yaml com o seguinte conteúdo:
    apiVersion: v1
    kind: Service
    metadata:
      name: istiod
      namespace: istio-system
      labels:
        istio.io/rev: asm-1178-1
        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-1178-1
      meshConfig:
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
  2. Use kubectl para aplicar a configuração do webhook de validação:
    kubectl apply -f istiod-service.yaml
  3. Verifique se a configuração foi aplicada:
    kubectl get svc -n istio-system

    A resposta deve ser semelhante à seguinte:

    NAME     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                 AGE
    istiod   ClusterIP   172.200.18.133   <none>        15010/TCP,15012/TCP,443/TCP,15014/TCP   22s

Instalar o Anthos Service Mesh

  1. Edite o ficheiro overlay.yaml ou crie um novo com o seguinte conteúdo:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        accessLogFile: /dev/stdout
        enableTracing: true
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
      components:
        ingressGateways:
          - name: istio-ingressgateway
            enabled: true
            k8s:
              service:
                type: LoadBalancer
                ports:
                - name: status-port
                  port: 15021
                  targetPort: 15021
                - name: http2
                  port: 80
                  targetPort: 8080
                - name: https
                  port: 443
                  targetPort: 8443
    
  2. Instale o Anthos Service Mesh com istioctl usando o perfil asm-multicloud:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1178-1" \
        --filename overlayfile.yaml

    O resultado deve ter um aspeto semelhante ao seguinte:

    kubectl get pods -n istio-system
    NAME                                   READY   STATUS    RESTARTS   AGE
    istio-ingressgateway-88b6fd976-flgp2   1/1     Running   0          3m13s
    istio-ingressgateway-88b6fd976-p5dl9   1/1     Running   0          2m57s
    istiod-asm-1178-1-798ffb964-2ls88       1/1     Running   0          3m21s
    istiod-asm-1178-1-798ffb964-fnj8c       1/1     Running   1          3m21s

    O argumento --set revision adiciona uma etiqueta de revisão no formato istio.io/rev=1.6.11-asm.1 a istiod. A etiqueta de revisão é usada pelo webhook do injetor de contentores auxiliares automático para associar contentores auxiliares injetados a uma revisão específica.istiod Para ativar a injeção automática de sidecar para um espaço de nomes, tem de etiquetá-lo com uma revisão que corresponda à etiqueta em istiod.

  3. Confirme se a instalação foi concluída:
    kubectl get svc -n istio-system

    O resultado deve ter um aspeto semelhante ao seguinte:

    NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                                                                      AGE
    istio-ingressgateway   LoadBalancer   172.200.48.52    34.74.177.168   15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP   3m35s
    istiod                 ClusterIP      172.200.18.133   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        4m46s
    istiod-asm-1178-1       ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s