Como fazer upgrade da Apigee híbrida para a versão 1.7

Como fazer upgrade para a versão 1.7.6.

Os procedimentos para fazer upgrade da Apigee híbrida são organizados nas seguintes seções:

  1. Preparar para fazer upgrade para a versão 1.7.
  2. Instalar o ambiente de execução híbrido versão 1.7.6.
  3. Fazer upgrade do cert-manager.
  4. Fazer upgrade do ASM.

Pré-requisito

Estas instruções de upgrade presumem que você tenha a Apigee híbrida versão 1.6.x ou uma versão anterior do patch da versão 1.7.x instaladas e queira fazer upgrade para a versão 1.7.6. Se você estiver atualizando de uma versão anterior, consulte as instruções sobre Como fazer upgrade da Apigee híbrida para a versão 1.6.

Preparar-se para fazer upgrade para a versão 1.7

Faça o backup da instalação híbrida

  1. Estas instruções usam a variável de ambiente $APIGEECTL_HOME para o diretório no seu sistema de arquivos em que o utilitário apigeectl está instalado. Se necessário, cd no diretório apigeectl e defina a variável com o seguinte comando:
    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME
    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME
    set APIGEECTL_HOME=%CD%
    echo %APIGEECTL_HOME%
  2. (Recomendado) Faça uma cópia de backup do diretório $APIGEECTL_HOME/ da versão 1.6. Por exemplo:
    tar -czvf $APIGEECTL_HOME/../apigeectl-v1.6-backup.tar.gz $APIGEECTL_HOME
  3. (Recomendado) Faça o backup do banco de dados do Cassandra seguindo as instruções em Backup e recuperação do Cassandra.

Fazer upgrade da versão do Kubernetes

Faça upgrade da plataforma do Kubernetes para as versões compatíveis com a versão híbrida 1.7. Siga a documentação da plataforma se precisar de ajuda.

Versões da Apigee híbrida

Plataformas

1.6(4) sem suporte 1,7 1,8
Anthos (Google Cloud – GKE) 1.19.x
1.20.x
1.21.x
1.20.x
1.21.x
1.22.x (≥ 1.7.2)
1.23.x (≥ 1.7.2)
1.21.x (≤ 1.8.3)
1.22.x (≤ 1.8.3)
1.23.x (≤ 1.8.4)
1.24.x (≥ 1.8.4)
1.25.x (≥ 1.8.4)
Anthos (AWS) 1.7.x
1.8.x
1.9.3+
1.10.x
1.9.x
1.10.x
1.12.x (≥ 1.7.2)
1.10.x
1.11.x
1.12.x
1.13.x
1.14.x
Anthos (Azure) 1.8.x 1.9.x
1.10.x
1.12.x (≥ 1.7.2)
1.10.x
1.11.x
1.12.x
1.13.x
1.14.x
Anthos(1) (no local - VMware) 1.7.x
1.8.x
1.9.3+
1.10.x
1.9.x sem suporte(7)
1.10.x sem suporte(7)
1.11.x sem suporte(7) (≥ 1.7.2)
1.12.x sem suporte(7) (≥ 1.7.2)
1.10.x sem suporte(7)
1.11.x sem suporte(7)
1.12.x sem suporte(7) (5)
1.13.x (5)
1.14.x (5)
1.15.x
Anthos(1) (Bare Metal) 1.7.x
1.8.2+
1.9.3+
1.10.x
1.9.x sem suporte(7)
1.10.x sem suporte(7)
1.11.x sem suporte(7) (≥ 1.7.2)
1.12.x sem suporte(7) (≥ 1.7.2)
1.10.x sem suporte(7)
1.11.x sem suporte(7)
1.12.x sem suporte(7) (5)
1.13.x (5)
1.14.x (5)
1.15.x
Anthos (contexto de várias nuvens no EKS com clusters anexados do Anthos) 1.19.x
1.20.x
1.21.x
1.21.x
1.22.x (≥ 1.7.2)
1.23.x (≥ 1.7.2)
1.22.x (≤ 1.8.3)
1.23.x (≤ 1.8.4)
1.24.x (≥ 1.8.4)
1.25.x (≥ 1.8.4)
Anthos (contexto de várias nuvens no AKS com clusters anexados do Anthos) 1.19.x
1.20.x
1.21.x
1.21.x
1.22.x (≥ 1.7.2)
1.23.x (≥ 1.7.2)
1.22.x (≤ 1.8.3)
1.23.x (≤ 1.8.4)
1.24.x (≥ 1.8.4)
1.25.x (≥ 1.8.4)
Anthos (contexto de várias nuvens no OpenShift com clusters anexados do Anthos) 4.6
4.7
4.8
4.7
4.8
4.8
4.9
4.10
Anthos (contexto de várias nuvens no Konvoy com clusters anexados do Anthos) 1.7.x N/A N/A

Componentes

1.6 1,7 1,8
Anthos Service Mesh (ASM) 1.9.x sem suporte
1.10.x sem suporte
1.12.x sem suporte(2)
1.10.x sem suporte
1.11.x sem suporte
1.12.x sem suporte
1.13.x(3)
1.11.x sem suporte
1.12.x sem suporte
1.13.x
1.14.x sem suporte
1.15.x
JDK JDK 11 JDK 11 JDK 11
cert-manager. 1.5.4 1.7.x 1.7.x
Cassandra 3.11.10 3.11.10 3.11.10

(1) No Anthos 1.8.2 e versões mais recentes, siga as instruções nestes documentos para evitar conflito com cert-manager:

(2) Suporte disponível para a versão híbrida da Apigee 1.6.6 e mais recentes.

(3) Suporte disponível para a versão híbrida da Apigee 1.7.2 e mais recentes.

(4) As datas oficiais de EOL para as versões 1.6, 1.7 e 1.8 da Apigee híbrida foram atingidas. Os patches mensais regulares não estão mais disponíveis. Essas versões não são mais oficialmente compatíveis, exceto para clientes com exceções explícitas e oficiais para suporte contínuo. Outros clientes precisam fazer o upgrade.

(5)O Anthos em Bare Metal e VMWare requer o ASM 1.14 ou mais recente. Recomendamos que você faça upgrade para a versão v1.8 híbrida e mude para o gateway de entrada da Apigee, que não requer mais a instalação do ASM no cluster híbrido.

(6) Suporte disponível para a versão híbrida da Apigee 1.8.4 e mais recentes.

(7)O Anthos em bare metal e o VMWare 1.12 e versões anteriores não são compatíveis. Consulte a Política de suporte da versão do Anthos em bare metal e as Versões dos clusters do Anthos no VMware.

(8) Não é compatível com a versão híbrida da Apigee 1.8.4 e versões mais recentes.

(9) Suporte disponível para a versão híbrida da Apigee 1.7.6 e versões mais recentes.

(10) Não é compatível com a versão híbrida da Apigee 1.8.5 e versões mais recentes.

Sobre os clusters anexados

Para a Apigee híbrida versão 1.7.x e anteriores, é necessário usar os clusters anexados do Anthos se você quiser executar a Apigee híbrida em um contexto de várias nuvens no Elastic Kubernetes Service (EKS, Azure Kubernetes Service (AKS) ou outro provedor de serviços de terceiros compatível com Kubernetes. O anexo do cluster permite que o Google meça o uso do Anthos Service Mesh (ASM). O registro de clusters de terceiros é opcional. Só registre se você quiser conferir o cluster anexado no console do Google Cloud. Para mais informações, consulte Anexar clusters do Kubernetes de terceiros ao Google Cloud.

Para a versão híbrida da Apigee 1.8.x, os clusters anexados ao Anthos são obrigatórios se você estiver usando o Anthos Service Mesh no seu gateway de entrada. Se você estiver usando o gateway de entrada da Apigee, os clusters anexados ao Anthos serão opcionais.

Adicione o papel Agente do Cloud Trace à conta de serviço apigee-runtime:

Opcional: se você planeja usar o Cloud Trace, verifique se a conta de serviço apigee-runtime tem o papel do Google agente do Cloud Trace (roles/cloudtrace.agent). Você pode fazer isso na IU Console do Cloud > IAM e administrador > Contas de serviço ou com os seguintes comandos:

  1. Encontre o endereço de e-mail da conta de serviço apigee-runtime com o seguinte comando:
    gcloud iam service-accounts list --filter "apigee-runtime"

    Se ele corresponder ao padrão apigee-runtime@$ORG_NAME.iam.gserviceaccount.com, use esse padrão na próxima etapa

  2. Atribua o papel Agente do Cloud Trace à conta de serviço:
    gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member="serviceAccount:apigee-runtime@$PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/cloudtrace.agent"

    Em que: $PROJECT_ID é o nome do projeto do Google Cloud em que a Apigee híbrida está instalada.

Substitua as propriedades metrics:stackdriverExporter nas substituições.

A partir da versão híbrida 1.7, metrics:stackdriverExporter foi substituído por metrics:appStackdriverExporter e metrics:proxyStackdriverExporter. Substitua essas propriedades por outras equivalentes. Por exemplo, substitua:

metrics:
  ... ...
  stackdriverExporter:
    resources:
      limits:
        cpu: 500m
        memory: 1Gi
      requests:
        cpu: 128m
        memory: 512Mi

por:

metrics:
  ... ...
  appStackdriverExporter:
    resources:
      limits:
        cpu: 500m
        memory: 1Gi
      requests:
        cpu: 128m
        memory: 512Mi
  proxyStackdriverExporter:
    resources:
      limits:
        cpu: 500m
        memory: 1Gi
      requests:
        cpu: 128m
        memory: 512Mi

Consulte Referência da propriedade Configuração: métricas.

Instalar o ambiente de execução híbrido 1.7.6

  1. Armazene o número da versão mais recente em uma variável usando o seguinte comando:
    export VERSION=$(curl -s \
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/current-version.txt?ignoreCache=1)
    export VERSION=$(curl -s \
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/current-version.txt)
    for /f "tokens=*" %a in ('curl -s ^
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/current-version.txt') ^
    do set VERSION=%a
  2. Verifique se a variável foi preenchida com um número de versão usando o seguinte comando: Se você quiser usar uma versão diferente, salve-a em uma variável de ambiente.
    echo $VERSION
      1.7.6
  3. Verifique se você está no diretório base híbrido (o pai do diretório em que o arquivo executável apigeectl está localizado):
    cd $APIGEECTL_HOME/..
  4. Faça o download do pacote de lançamento do seu sistema operacional usando o seguinte comando. Selecione sua plataforma na tabela a seguir:

    Linux de 64 bits:

    curl -LO \
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/$VERSION/apigeectl_linux_64.tar.gz

    Mac 64 bits:

    curl -LO \
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/$VERSION/apigeectl_mac_64.tar.gz

    Windows 64 bit:

    curl -LO ^
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/%VERSION%/apigeectl_windows_64.zip
  5. Renomeie o diretório apigeectl/ atual para um nome de diretório de backup. Exemplo:
    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.6/
    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.6/ 
    rename %APIGEECTL_HOME% %APIGEECTL_HOME%-v1.6 
  6. Extraia o conteúdo do arquivo gzip baixado para seu diretório base híbrido. O diretório base híbrido é aquele em que o diretório renomeado apigeectl-v1.6 está localizado:

    tar xvzf filename.tar.gz -C ./
    tar xvzf filename.tar.gz -C ./
    tar xvzf filename.zip -C ./
  7. O conteúdo de tar é, por padrão, expandido em um diretório com a versão e a plataforma no nome. Por exemplo, ./apigeectl_1.7.6-d591b23_linux_64. Renomeie esse diretório para apigeectl usando o seguinte comando:

    mv directory-name-linux apigeectl
    mv directory-name-mac apigeectl
    rename directory-name-windows apigeectl
  8. Altere para o diretório apigeectl:
    cd ./apigeectl

    O apigeectl executável está neste diretório.

  9. Estas instruções usam a variável de ambiente $APIGEECTL_HOME para o diretório no seu sistema de arquivos em que o utilitário apigeectl está instalado. Se necessário, cd no diretório apigeectl e defina a variável com o seguinte comando:
    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME
    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME
    set APIGEECTL_HOME=%CD%
    echo %APIGEECTL_HOME%
  10. Verifique a versão de apigeectl com o comando version:
    ./apigeectl version
    Version: 1.7.6
  11. Mova para o diretório hybrid-base-directory/hybrid-files. O diretório hybrid-files é onde estão localizados os arquivos de configuração, como os arquivos de substituição, certificados e contas de serviço. Por exemplo:
    cd $APIGEECTL_HOME/../hybrid-files
  12. Verifique se kubectl está definido para o contexto correto usando o seguinte comando. O contexto atual precisa ser definido como o cluster em que você está fazendo upgrade da Apigee híbrida.
    kubectl config get-contexts | grep \*
  13. No diretório hybrid-files:
    1. Atualize os seguintes links simbólicos para $APIGEECTL_HOME. Com esses links, você pode executar o comando apigeectl recém-instalado no diretório hybrid-files:
      ln -nfs $APIGEECTL_HOME/tools tools
      ln -nfs $APIGEECTL_HOME/config config
      ln -nfs $APIGEECTL_HOME/templates templates
      ln -nfs $APIGEECTL_HOME/plugins plugins
    2. Para verificar se os links simbólicos foram criados corretamente, execute este comando e certifique-se de que os caminhos do link apontam para os locais corretos:
      ls -l | grep ^l
    3. Faça uma inicialização a seco para verificar se há erros:
      ${APIGEECTL_HOME}/apigeectl init -f ./overrides/OVERRIDES.yaml --dry-run=client

      Em que OVERRIDES é o nome do arquivo de substituições.

    4. Se não houver erros, inicialize o híbrido 1.7.6:
      ${APIGEECTL_HOME}/apigeectl init -f ./overrides/OVERRIDES.yaml
    5. Verifique o status da inicialização:
      ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml
    6. Verifique erros com uma simulação do comando apply:
      ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --dry-run=client
    7. Se não houver erros, aplique as substituições. Selecione e siga as instruções para ambientes de produção ou ambientes de demonstração/experimental, dependendo da sua instalação.

      Para ambientes de produção, você precisa fazer upgrade de cada componente híbrido individualmente e verificar o status do componente atualizado para o processo de confirmação do próximo componente.

      1. Verifique se você está no diretório hybrid-files.
      2. Aplique as modificações para fazer upgrade do Cassandra:
        ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --datastore
      3. Verifique a conclusão:
        ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml

        Passe para a próxima etapa somente quando os pods estiverem prontos.

      4. Aplique as modificações para fazer upgrade dos componentes de telemetria e verificar a conclusão:
        ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --telemetry
        ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml
      5. Acesse os componentes do Redis:
        ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --redis
      6. Aplique as modificações para fazer upgrade dos componentes no nível da organização (MART, Watcher e Apigee Connect) e verifique a conclusão:
        ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --org
        ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml
      7. Aplique as modificações para fazer upgrade dos seus ambientes. Você tem duas opções:
        • Ambiente por ambiente: aplique suas modificações em um ambiente por vez e verifique a conclusão. Repita esta etapa para cada ambiente:
          ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --env ENV_NAME
          ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml

          Em que ENV_NAME é o nome do ambiente que você está atualizando.

        • Todos os ambientes de uma só vez: aplique suas modificações a todos os ambientes de uma só vez e verifique a conclusão:
          ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --all-envs
          ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml

      Na maioria dos ambientes experimentais ou de demonstração, é possível aplicar as modificações a todos os componentes de uma só vez. Se o ambiente de demonstração/experimental for grande e complexo ou for muito semelhante a um ambiente de produção, use as instruções para fazer upgrade de ambientes de produção.

      1. Verifique se você está no diretório hybrid-files.
      2. ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml
      3. Verifique o status:
        ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml

Atualizar o cert-manager para a versão v1.7.2

Se você estiver executando uma versão do cert-manager anterior à v1.7.2, precisará fazer upgrade para a v1.7.2.

  1. Verifique a versão atual do cert-manager usando o seguinte comando:

    kubectl -n cert-manager get deployment -o yaml | grep 'image:'
    

    Algo semelhante ao seguinte é retornado:

    image: quay.io/jetstack/cert-manager-controller:v1.7.2
    image: quay.io/jetstack/cert-manager-cainjector:v1.7.2
    image: quay.io/jetstack/cert-manager-webhook:v1.7.2
  2. Remova as implantações usando este comando:
    $ kubectl delete -n cert-manager deployment cert-manager cert-manager-cainjector cert-manager-webhook
    
  3. Faça upgrade do cert-manager para a versão v1.7.2 usando o seguinte comando:
    $ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.7.2/cert-manager.yaml
    

Fazer upgrade do ASM para a versão 1.12

Execute o upgrade usando a documentação do ASM apropriada para sua plataforma:

As instruções para instalar e configurar o ASM variam de acordo com a plataforma. As plataformas são divididas nas seguintes categorias:

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

Esta é a sequência de upgrade para a versão 1.12.9 do ASM para a instalação híbrida:

  1. prepare-se para o upgrade;
  2. instale a nova versão do ASM;
  3. exclua as implantações, os serviços e os webhooks da versão anterior do ASM da instalação atual;
  4. faça upgrade dos gateways e configure os novos webhooks.

Para fazer upgrade para a versão 1.12.9 do ASM para híbrido no GKE:

  1. Veja os requisitos em Fazer upgrade do Anthos Service Mesh, mas ainda não faça o upgrade.
  2. Antes de instalar a nova versão, determine a revisão atual. Você precisará dessas informações para excluir as implantações, os serviços e os webhooks da versão anterior do ASM da instalação atual. Use o seguinte comando para armazenar a revisão atual do istiod em uma 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}
  3. Crie um novo arquivo overlay.yaml ou verifique se o overlay.yaml atual contém o seguinte conteúdo:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      revision: asm-1129-3
      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)%"}'
  4. Siga as instruções nas seguintes seções da documentação do ASM:
    1. faça o download do asmcli;
    2. conceda permissões de administrador de cluster;
    3. Valide o projeto e o cluster;
    4. faça upgrade com recursos opcionais. Pare antes de iniciar a seção "Fazer upgrade dos gateways";
  5. exclua o webhook de mutação e valide o webhook:
    1. cd no diretório em que você instalou asmcli;
    2. armazene a nova revisão atual em uma variável de ambiente a ser usada no script para excluir os webhooks:
      UPGRADE_REV="asm-1129-3"
    3. crie um script de shell contendo os seguintes comandos:
      #!/bin/bash
      
      set -ex
      
      PROJECT_ID="YOUR_PROJECT_ID"
      CLUSTER_NAME="YOUR_CLUSTER_NAME"
      CLUSTER_LOCATION="YOUR_CLUSTER_LOCATION"
      
      kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite
      kubectl rollout restart deployment -n istio-system
      kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway
      kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAY/istio-ingressgateway-connectors
      
      if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then
        kubectl apply -f out/asm/istio/istiod-service.yaml
        kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true
      fi
      
    4. execute o script para excluir os webhooks atuais;
  6. siga as etapas em Fazer upgrade de gateways para criar os novos webhooks e alternar o tráfego para os novos gateways.

Estas instruções abrangem o upgrade do ASM em:

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

Esta é a sequência de upgrade para a versão 1.12.9 do ASM para a instalação híbrida:

  1. prepare-se para o upgrade;
  2. instale a nova versão do ASM;
  3. exclua as implantações, os serviços e os webhooks da versão anterior do ASM da instalação atual;
  4. faça upgrade dos gateways e configure os novos webhooks.
  1. Veja os requisitos em Fazer upgrade do Anthos Service Mesh, mas ainda não faça o upgrade.
  2. Antes de instalar a nova versão, determine a revisão atual. Você precisará dessas informações para excluir o Webhook de validação e desativar o webhook da instalação atual do ASM. Use o seguinte comando para armazenar a revisão atual do istiod em uma 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}
  3. Crie um novo arquivo overlay.yaml ou verifique se o overlay.yaml atual contém o seguinte conteúdo:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      revision: asm-1129-3
      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)%"}'
  4. Siga as instruções nas seguintes seções da documentação do ASM:
    1. faça o download do asmcli;
    2. conceda permissões de administrador de cluster;
    3. Valide o projeto e o cluster;
    4. faça upgrade com recursos opcionais. Pare antes de iniciar a seção "Fazer upgrade dos gateways";
  5. exclua o webhook de mutação e valide o webhook:
    1. cd no diretório em que você instalou asmcli;
    2. armazene a nova revisão atual em uma variável de ambiente a ser usada no script para excluir os webhooks:
      UPGRADE_REV="asm-1129-3"
    3. crie um script de shell contendo os seguintes comandos:
      #!/bin/bash
      
      set -ex
      
      PROJECT_ID="YOUR_PROJECT_ID"
      CLUSTER_NAME="YOUR_CLUSTER_NAME"
      CLUSTER_LOCATION="YOUR_CLUSTER_LOCATION"
      
      
      gcloud config configurations activate ${PROJECT_ID}
      gcloud container clusters get-credentials ${CLUSTER_NAME} --region ${CLUSTER_LOCATION} --project ${PROJECT_ID}
      
      
      kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite
      kubectl rollout restart deployment -n istio-system
      kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway
      kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAY/istio-ingressgateway-connectors
      
      if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then
        kubectl apply -f out/asm/istio/istiod-service.yaml
        kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true
      fi
      
    4. execute o script para excluir os webhooks atuais;
  6. siga as etapas em Fazer upgrade de gateways para criar os novos webhooks e alternar o tráfego para os novos gateways.

Nestas instruções, o processo de upgrade da versão istio-1.12.9-asm.3 do Anthos Service Mesh (ASM) nos clusters anexados ao Anthos é igual ao de uma nova instalação.

Como preparar a instalação do Anthos Service Mesh

  1. exclua o webhook de mutação e o valide:
    1. cd no diretório em que você instalou asmcli;
    2. armazene a nova revisão atual em uma variável de ambiente a ser usada no script para excluir os webhooks:
      UPGRADE_REV="asm-1129-3"
    3. crie um script de shell contendo os seguintes comandos:
      #!/bin/bash
      
      set -ex
      
      kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite
      kubectl rollout restart deployment -n istio-system
      kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway
      
      if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then
        kubectl apply -f out/asm/istio/istiod-service.yaml
        kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true
      fi
      
    4. execute o script para excluir os webhooks atuais;
  2. 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.12.9-asm.3-linux-amd64.tar.gz
  3. 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.12.9-asm.3-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig istio-1.12.9-asm.3.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  4. 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.12.9-asm.3-linux-amd64.tar.gz

    O comando cria um diretório de instalação no seu diretório de trabalho atual, chamado istio-1.12.9-asm.3, 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.
  5. Verifique se você está no diretório raiz da instalação do Anthos Service Mesh:
    cd istio-1.12.9-asm.3
  6. Para facilitar, adicione as ferramentas que estão no diretório /bin ao seu PATH:
    export PATH=$PWD/bin:$PATH
  7. 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.12.9-asm.3-osx.tar.gz
  8. 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.12.9-asm.3-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.12.9-asm.3-osx.tar.gz.1.sig istio-1.12.9-asm.3.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  9. 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.12.9-asm.3-osx.tar.gz

    O comando cria um diretório de instalação no seu diretório de trabalho atual, chamado istio-1.12.9-asm.3, 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.
  10. Verifique se você está no diretório raiz da instalação do Anthos Service Mesh:
    cd istio-1.12.9-asm.3
  11. Para facilitar, adicione as ferramentas que estão no diretório /bin ao seu PATH:
    export PATH=$PWD/bin:$PATH
  12. 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.12.9-asm.3-win.zip
  13. 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.12.9-asm.3-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.12.9-asm.3-win.zip.1.sig istio-1.12.9-asm.3.win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  14. 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.12.9-asm.3-win.zip

    O comando cria um diretório de instalação no seu diretório de trabalho atual, chamado istio-1.12.9-asm.3, 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.
  15. Verifique se você está no diretório raiz da instalação do Anthos Service Mesh:
    cd istio-1.12.9-asm.3
  16. Para facilitar, adicione as ferramentas que estão no diretório \bin ao seu PATH:
    set PATH=%CD%\bin:%PATH%
  17. Agora que o ASM Istio está instalado, verifique a versão de istioctl:
    istioctl version
  18. Crie um namespace chamado istio-system para os componentes do plano de controle:
    kubectl create namespace istio-system

Como instalar o Anthos Service Mesh

  1. Edite seu arquivo 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:
      - enabled: true
        name: istio-ingressgateway
        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-1129-3" \
        --filename overlayfile.yaml

    A saída será semelhante a esta:

    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-1129-3-798ffb964-2ls88       1/1     Running   0          3m21s
    istiod-asm-1129-3-798ffb964-fnj8c       1/1     Running   1          3m21s

    O argumento --set revision adiciona um rótulo de revisão no formato istio.io/rev=asm-1129-3 a istiod. O rótulo de revisão é usado pelo webhook do injetor automático de sidecar para associar os sidecars injetados a uma revisão istiod específica. Para ativar a injeção automática de sidecar para um namespace, você precisa rotulá-lo com uma revisão que corresponda ao rótulo em istiod.

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

    A saída será semelhante a esta:

    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-1129-3       ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

Nestas instruções, o processo de upgrade da versão istio-1.12.9-asm.3 do Anthos Service Mesh (ASM) nos clusters anexados ao Anthos é igual ao de uma nova instalação.

Como preparar a instalação do Anthos Service Mesh

  1. exclua o webhook de mutação e o valide:
    1. cd no diretório em que você instalou asmcli;
    2. armazene a nova revisão atual em uma variável de ambiente a ser usada no script para excluir os webhooks:
      UPGRADE_REV="asm-1129-3"
    3. crie um script de shell contendo os seguintes comandos:
      #!/bin/bash
      
      set -ex
      
      kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite
      kubectl rollout restart deployment -n istio-system
      kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway
      kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAY/istio-ingressgateway-connectors
      
      if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then
        kubectl apply -f out/asm/istio/istiod-service.yaml
        kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true
      fi
      
    4. execute o script para excluir os webhooks atuais;
  2. Conceda a restrição de contexto de segurança anyuid (SCC) ao istio-system com o seguinte comando da CLI do OpenShift (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  3. 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.12.9-asm.3-linux-amd64.tar.gz
  4. 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.12.9-asm.3-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig istio-1.12.9-asm.3.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  5. 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.12.9-asm.3-linux-amd64.tar.gz

    O comando cria um diretório de instalação no seu diretório de trabalho atual, chamado istio-1.12.9-asm.3, 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.
  6. Verifique se você está no diretório raiz da instalação do Anthos Service Mesh:
    cd istio-1.12.9-asm.3
  7. Para facilitar, adicione as ferramentas que estão no diretório /bin ao seu PATH:
    export PATH=$PWD/bin:$PATH
  8. Conceda a restrição de contexto de segurança anyuid (SCC) ao istio-system com o seguinte comando da CLI do OpenShift (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  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.12.9-asm.3-osx.tar.gz
  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.12.9-asm.3-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.12.9-asm.3-osx.tar.gz.1.sig istio-1.12.9-asm.3.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  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.12.9-asm.3-osx.tar.gz

    O comando cria um diretório de instalação no seu diretório de trabalho atual, chamado istio-1.12.9-asm.3, 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.
  12. Verifique se você está no diretório raiz da instalação do Anthos Service Mesh:
    cd istio-1.12.9-asm.3
  13. Para facilitar, adicione as ferramentas que estão no diretório /bin ao seu PATH:
    export PATH=$PWD/bin:$PATH
  14. Conceda a restrição de contexto de segurança anyuid (SCC) ao istio-system com o seguinte comando da CLI do OpenShift (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  15. 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.12.9-asm.3-win.zip
  16. 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.12.9-asm.3-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.12.9-asm.3-win.zip.1.sig istio-1.12.9-asm.3.win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  17. 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.12.9-asm.3-win.zip

    O comando cria um diretório de instalação no seu diretório de trabalho atual, chamado istio-1.12.9-asm.3, 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.
  18. Verifique se você está no diretório raiz da instalação do Anthos Service Mesh:
    cd istio-1.12.9-asm.3
  19. Para facilitar, adicione as ferramentas que estão no diretório \bin ao seu PATH:
    set PATH=%CD%\bin:%PATH%
  20. Agora que o ASM Istio está instalado, verifique a versão de istioctl:
    istioctl version
  21. Crie um namespace chamado istio-system para os componentes do plano de controle:
    kubectl create namespace istio-system

Como instalar o Anthos Service Mesh

  1. Edite seu arquivo 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:
      - enabled: true
        name: istio-ingressgateway
        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-1129-3" \
        --filename overlayfile.yaml

    A saída será semelhante a esta:

    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-1129-3-798ffb964-2ls88       1/1     Running   0          3m21s
    istiod-asm-1129-3-798ffb964-fnj8c       1/1     Running   1          3m21s

    O argumento --set revision adiciona um rótulo de revisão no formato istio.io/rev=1.6.11-asm.1 a istiod. O rótulo de revisão é usado pelo webhook do injetor automático de sidecar para associar os sidecars injetados a uma revisão istiod específica. Para ativar a injeção automática de sidecar para um namespace, você precisa rotulá-lo com uma revisão que corresponda ao rótulo em istiod.

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

    A saída será semelhante a esta:

    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-1129-3       ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

Como reverter um upgrade

Siga estas etapas para reverter um upgrade anterior:

  1. Limpe os jobs concluídos do namespace do ambiente de execução híbrido, em que NAMESPACE é o namespace especificado no arquivo de modificações, se você especificou um namespace. Caso contrário, o namespace padrão é apigee:
    kubectl delete job -n NAMESPACE \
      $(kubectl get job -n NAMESPACE \
      -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  2. Limpe jobs concluídos do namespace apigee-system:
    kubectl delete job -n apigee-system \
      $(kubectl get job -n apigee-system \
      -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  3. Altere a variável APIGEECTL_HOME para apontar para o diretório que contém a versão original de apigeectl. Por exemplo:
    export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
  4. No diretório raiz da instalação para a qual você quer reverter, execute ${APIGEECTL_HOME}/apigeectl apply, verifique o status dos pods e execute ${APIGEECTL_HOME}/apigeectl init. Use o arquivo de modificações original da versão para a qual você quer reverter:
    1. No diretório hybrid-files, execute ${APIGEECTL_HOME}/apigeectl apply:
      ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/ORIGINAL_OVERRIDES.yaml

      Em que ORIGINAL_OVERRIDES é o arquivo de substituições da instalação híbrida da versão anterior, por exemplo, overrides1.6.yaml.

    2. Verifique o status dos seus pods.
      kubectl -n NAMESPACE get pods

      Em que NAMESPACE é seu namespace da Apigee híbrida.

    3. Verifique o status de apigeeds:
      kubectl describe apigeeds -n apigee

      A saída será semelhante a esta:

      Status:
        Cassandra Data Replication:
        Cassandra Pod Ips:
          10.8.2.204
        Cassandra Ready Replicas:  1
        Components:
          Cassandra:
            Last Successfully Released Version:
              Revision:  v1-f8aa9a82b9f69613
              Version:   v1
            Replicas:
              Available:  1
              Ready:      1
              Total:      1
              Updated:    1
            State:        running
        Scaling:
          In Progress:         false
          Operation:
          Requested Replicas:  0
        State:                 running

      Siga para a próxima etapa somente quando o pod apigeeds estiver em execução.

    4. Execute apigeectl init:
      ${APIGEECTL_HOME}/apigeectl init -f ./overrides/ORIGINAL_OVERRIDES.yaml