Atualizar o Apigee Hybrid para a versão 1.5

Se estiver a atualizar a partir da versão 1.3 ou mais antiga do Apigee hybrid, tem de atualizar primeiro para a versão 1.4 antes de atualizar para a versão 1.5.10. Consulte as instruções para atualizar o Apigee Hybrid para a versão 1.4.

Atualização para a versão 1.5.10: vista geral.

Os procedimentos para atualizar o Apigee hybrid estão organizados nas seguintes secções:

  1. Faça uma cópia de segurança da instalação híbrida.
  2. Verifique a sua versão do Kubernetes e atualize-a conforme adequado.
  3. Atualize o ASM.
  4. Instale a versão 1.5 do tempo de execução híbrido.

Pré-requisito

Atualize para a versão 1.5

  1. Estas instruções usam a variável de ambiente APIGEECTL_HOME para o diretório no seu sistema de ficheiros onde instalou o apigeectl. Se necessário, cd no diretório apigeectl e defina a variável com o seguinte comando:

    Linux

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    Mac OS

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    Windows

    set APIGEECTL_HOME=%CD%
    echo %APIGEECTL_HOME%
  2. (Recomendado) Faça uma cópia de segurança do diretório $APIGEECTL_HOME/ da versão 1.4. Por exemplo:
    tar -czvf $APIGEECTL_HOME/../apigeectl-v1.4-backup.tar.gz $APIGEECTL_HOME
  3. (Recomendado) Faça uma cópia de segurança da base de dados Cassandra seguindo as instruções em Cópia de segurança e recuperação do Cassandra
  4. Atualize a sua plataforma Kubernetes para as versões suportadas pelo híbrido 1.5. Siga a documentação da sua plataforma se precisar de ajuda.
  5. Se estiver a usar uma versão do cert-manager anterior à v1.2.0, tem de a atualizar para a v1.2.0.
    1. Verifique a versão atual do cert-manager através do seguinte comando:

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

      É devolvido algo semelhante ao seguinte:

      image: quay.io/jetstack/cert-manager-controller:v1.2.0
      image: quay.io/jetstack/cert-manager-cainjector:v1.2.0
      image: quay.io/jetstack/cert-manager-webhook:v1.2.0
    2. Remova as implementações com o seguinte comando:
      kubectl delete -n cert-manager deployment cert-manager cert-manager-cainjector cert-manager-webhook
      
    3. Atualize o cert-manager para a versão 1.2.0 com o seguinte comando:
      kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.2.0/cert-manager.yaml
      

Atualize o ASM para a versão 1.26

Faça a atualização através da documentação do ASM adequada para a sua plataforma:

As instruções para instalar e configurar o ASM 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 atualizar para a versão 1.8.x do ASM para a sua instalação híbrida é a seguinte:

  1. Prepare-se para a atualização.
  2. Instale a nova versão do ASM.
  3. Elimine as implementações, os serviços e os webhooks da versão anterior do ASM da sua instalação atual.
  4. Atualize as suas gateways e configure os novos webhooks.

Para atualizar para a versão 1.8.x do ASM para o híbrido no GKE:

  1. Reveja os requisitos em Atualize o Anthos Service Mesh, mas não faça a atualização ainda.
  2. Antes de instalar a nova versão, determine a revisão atual. Precisa destas informações para eliminar as implementações, os serviços e os webhooks da versão anterior do ASM da sua instalação atual. Use o seguinte comando para armazenar a revisão atual do istiod 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}
  3. 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:
      revision: asm-1264-1
      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 secções seguintes da documentação do ASM:
    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"
  5. Elimine o webhook de mutação e o webhook de validação:
    1. cd no diretório onde instalou o asmcli.
    2. Armazene a nova revisão atual numa variável de ambiente para usar no script para eliminar os webhooks:
      UPGRADE_REV="asm-1264-1"
    3. criar um script de shell com 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 eliminar os webhooks atuais.
  6. Siga os passos em Atualizar gateways para criar os novos webhooks e mudar o tráfego para os novos gateways.

Fora do Google Cloud

Estas instruções abrangem a atualização do ASM nos seguintes sistemas operativos:

  • Clusters do Anthos no VMware (GKE On-Prem)
  • Anthos em bare metal
  • Clusters do Anthos no AWS
  • Amazon EKS
  1. Reveja os requisitos em Atualize o Anthos Service Mesh, mas não faça a atualização ainda.
  2. 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 ASM. Use o seguinte comando para armazenar a revisão do 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}
  3. 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:
      revision: asm-1264-1
      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 secções seguintes da documentação do ASM:
    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"
  5. Elimine o webhook de mutação e o webhook de validação:
    1. cd no diretório onde instalou o asmcli.
    2. Armazene a nova revisão atual numa variável de ambiente para usar no script para eliminar os webhooks:
      UPGRADE_REV="asm-1264-1"
    3. criar um script de shell com 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 eliminar os webhooks atuais.
  6. Siga os passos em Atualizar gateways para criar os novos webhooks e mudar o tráfego para os novos gateways.

AKS / EKS

Nestas instruções, o processo de atualização da versão do Anthos Service Mesh (ASM) istio-1.26.4-asm.1 em clusters anexados do Anthos é igual ao de uma instalação nova.

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

    O comando cria um diretório de instalação no seu diretório de trabalho atual denominado istio-1.26.4-asm.1 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 istio-1.26.4-asm.1
  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/istio-1.26.4-asm.1-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/istio-1.26.4-asm.1-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.26.4-asm.1-osx.tar.gz.1.sig istio-1.26.4-asm.1.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 istio-1.26.4-asm.1-osx.tar.gz

    O comando cria um diretório de instalação no seu diretório de trabalho atual denominado istio-1.26.4-asm.1 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 istio-1.26.4-asm.1
  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/istio-1.26.4-asm.1-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/istio-1.26.4-asm.1-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.26.4-asm.1-win.zip.1.sig istio-1.26.4-asm.1.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 istio-1.26.4-asm.1-win.zip

    O comando cria um diretório de instalação no seu diretório de trabalho atual denominado istio-1.26.4-asm.1 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 istio-1.26.4-asm.1
  17. Para maior comodidade, adicione as ferramentas no diretório \bin ao seu PATH:
    set PATH=%CD%\bin:%PATH%
  18. Agora que o ASM 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

Configure o webhook de validação

Quando instala o Anthos Service Mesh, define uma etiqueta de revisão no 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-1264-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-1264-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. Instale o Anthos Service Mesh com istioctl através do perfil asm-multicloud:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1264-1"

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

    O argumento --set revision adiciona uma etiqueta de revisão no formato istio.io/rev=asm-1264-1 ao istiod. A etiqueta de revisão é usada pelo webhook do injetor de sidecar automático para associar sidecars injetados a uma revisão específica do 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 no istiod.

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

OpenShift

Nestas instruções, o processo de atualização da versão do Anthos Service Mesh (ASM) istio-1.26.4-asm.1 em clusters anexados do Anthos é igual ao de uma instalação nova.

A preparar a instalação do Anthos Service Mesh

    Linux

  1. 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
  2. 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/istio-1.26.4-asm.1-linux-amd64.tar.gz
  3. Transfira o ficheiro de assinatura e use o openssl para validar a assinatura:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.4-asm.1-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.26.4-asm.1-linux-amd64.tar.gz.1.sig istio-1.26.4-asm.1.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  4. 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 istio-1.26.4-asm.1-linux-amd64.tar.gz

    O comando cria um diretório de instalação no seu diretório de trabalho atual denominado istio-1.26.4-asm.1 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.
  5. Certifique-se de que está no diretório raiz da instalação do Anthos Service Mesh:
    cd istio-1.26.4-asm.1
  6. Para maior comodidade, adicione as ferramentas no diretório /bin ao seu PATH:
    export PATH=$PWD/bin:$PATH
  7. Mac OS

  8. 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
  9. 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/istio-1.26.4-asm.1-osx.tar.gz
  10. Transfira o ficheiro de assinatura e use o openssl para validar a assinatura:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.4-asm.1-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.26.4-asm.1-osx.tar.gz.1.sig istio-1.26.4-asm.1.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  11. 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 istio-1.26.4-asm.1-osx.tar.gz

    O comando cria um diretório de instalação no seu diretório de trabalho atual denominado istio-1.26.4-asm.1 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.
  12. Certifique-se de que está no diretório raiz da instalação do Anthos Service Mesh:
    cd istio-1.26.4-asm.1
  13. Para maior comodidade, adicione as ferramentas no diretório /bin ao seu PATH:
    export PATH=$PWD/bin:$PATH
  14. Windows

  15. 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
  16. 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/istio-1.26.4-asm.1-win.zip
  17. Transfira o ficheiro de assinatura e use o openssl para validar a assinatura:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.4-asm.1-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.26.4-asm.1-win.zip.1.sig istio-1.26.4-asm.1.win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  18. 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 istio-1.26.4-asm.1-win.zip

    O comando cria um diretório de instalação no seu diretório de trabalho atual denominado istio-1.26.4-asm.1 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.
  19. Certifique-se de que está no diretório raiz da instalação do Anthos Service Mesh:
    cd istio-1.26.4-asm.1
  20. Para maior comodidade, adicione as ferramentas no diretório \bin ao seu PATH:
    set PATH=%CD%\bin:%PATH%
  21. Agora que o ASM Istio está instalado, verifique a versão do istioctl:
    istioctl version
  22. 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 no 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-1264-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-1264-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. Instale o Anthos Service Mesh com istioctl através do perfil asm-multicloud:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision=istio-1.26.4-asm.1

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

    O argumento --set revision adiciona uma etiqueta de revisão no formato istio.io/rev=1.8.6-asm.1 ao istiod. A etiqueta de revisão é usada pelo webhook do injetor de sidecar automático para associar sidecars injetados a uma revisão específica do 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 no istiod.

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

Instale o runtime híbrido 1.5.10

  1. Transfira o pacote de lançamento para o seu sistema operativo:

    Mac 64 bits:

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

    Linux de 64 bits:

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

    Mac de 32 bits:

    curl -LO \
        https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_mac_32.tar.gz

    Linux de 32 bits:

    curl -LO \
        https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_linux_32.tar.gz
  2. Mude o nome do diretório apigeectl/ atual para um nome de diretório de cópia de segurança. Por exemplo:
    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.2/ 
  3. Extraia o conteúdo do ficheiro gzip transferido para o diretório de base híbrido. Por exemplo:

    tar xvzf FILENAME.tar.gz -C HYBRID_BASE_DIRECTORY
  4. cd para o diretório base.
  5. Por predefinição, o conteúdo do TAR é expandido para um diretório com a versão e a plataforma no respetivo nome. Por exemplo: ./apigeectl_1.5.0-d591b23_linux_64. Mude o nome desse diretório para apigeectl:

    mv apigeectl_1.5.0-d591b23_linux_64 apigeectl
  6. No diretório new apigeectl/, execute apigeectl init, apigeectl apply e apigeectl check-ready:
    1. Inicialize o híbrido 1.5.10:
      apigeectl init -f OVERRIDES.yaml

      Onde OVERRIDES.yaml é o ficheiro overrides.yaml editado.

    2. Verifique se foi inicializado corretamente com os seguintes comandos:
      apigeectl check-ready -f OVERRIDES.yaml
      kubectl describe apigeeds -n apigee

      O resultado deve ter um aspeto semelhante ao seguinte:

      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
      
    3. A sintaxe da flag apigeectl --dry-run depende da versão do kubectl que está a usar. Verifique a versão do kubectl:
      gcloud version
    4. Verifique se existem erros com um teste com o comando adequado à sua versão do kubectl:

      kubectl versão 1.17 e mais antigas:

      apigeectl apply -f OVERRIDES.yaml --dry-run=true

      kubectl versão 1.18 e mais recentes:

      apigeectl apply -f OVERRIDES.yaml --dry-run=client
    5. Aplique as substituições. Selecione e siga as instruções para ambientes de produção ou ambientes de demonstração/experimentais, consoante a sua instalação.

      Produção

      Para ambientes de produção, deve atualizar cada componente híbrido individualmente e verificar o estado do componente atualizado antes de avançar para o componente seguinte.

      1. Aplique as substituições para atualizar o Cassandra:
        apigeectl apply -f OVERRIDES.yaml --datastore
      2. Conclusão da verificação:
        apigeectl check-ready -f OVERRIDES.yaml

        Avance para o passo seguinte apenas quando os pods estiverem prontos.

      3. Aplique as substituições para atualizar os componentes de telemetria e verifique a conclusão:
        apigeectl apply -f OVERRIDES.yaml --telemetry
        apigeectl check-ready -f OVERRIDES.yaml
      4. Apresente os componentes do Redis:
        apigeectl apply -f OVERRIDES.yaml --redis
      5. Aplique as substituições para atualizar os componentes ao nível da organização (MART, Watcher e Apigee Connect) e verifique a conclusão:
        apigeectl apply -f OVERRIDES.yaml --org
        apigeectl check-ready -f OVERRIDES.yaml
      6. Aplique as substituições para atualizar os seus ambientes. Tem 2 opções:
        • Ambiente por ambiente: aplique as substituições a um ambiente de cada vez e verifique a conclusão. Repita este passo para cada ambiente:
          apigeectl apply -f OVERRIDES.yaml --env ENV_NAME
          apigeectl check-ready -f OVERRIDES.yaml

          Em que ENV_NAME é o nome do ambiente que está a atualizar.

        • Todos os ambientes ao mesmo tempo: aplique as substituições a todos os ambientes de uma só vez e verifique a conclusão:
          apigeectl apply -f OVERRIDES.yaml --all-envs
          apigeectl check-ready -f OVERRIDES.yaml

      Demonstração/experimental

      Na maioria dos ambientes de demonstração ou experimentais, pode aplicar as substituições a todos os componentes de uma só vez. Se o seu ambiente de demonstração/experimental for grande e complexo ou imitar de perto um ambiente de produção, é recomendável usar as instruções para atualizar ambientes de produção

      1. apigeectl apply -f OVERRIDES.yaml
      2. Verifique o estado:
        apigeectl check-ready -f OVERRIDES.yaml

Reverter uma atualização

Siga estes passos para reverter uma atualização anterior:

  1. Limpe as tarefas concluídas para o espaço de nomes de tempo de execução híbrido, em que NAMESPACE é o espaço de nomes especificado no ficheiro de substituições, se tiver especificado um espaço de nomes. Caso contrário, o espaço de nomes predefinido é apigee:
    kubectl delete job -n NAMESPACE \
      $(kubectl get job -n NAMESPACE \
      -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  2. Limpe as tarefas concluídas para o espaço de nomes 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 anterior de apigeectl. Por exemplo:
    export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
  4. No diretório raiz da instalação para a qual quer reverter, execute apigeectl apply, verifique o estado dos seus pods, elimine o componente Redis (novidade na versão híbrida 1.5.0) e, em seguida, execute apigeectl init. Certifique-se de que usa o ficheiro de substituições original para a versão para a qual quer reverter:
    • Corrida apigeectl apply:
      $APIGEECTL_HOME/apigeectl apply -f overrides/ORIGINAL_OVERRIDES.yaml
    • Verifique o estado dos seus pods:
      kubectl -n NAMESPACE get pods

      Onde NAMESPACE é o espaço de nomes híbrido do Apigee.

      Avance para o passo seguinte apenas quando o apigeedspod estiver em execução.

    • Uma vez que o Redis é um novo componente no Hybrid v1.5, execute o seguinte comando para o eliminar:

      apigeectl_1.5.0 delete --redis -f ORIGINAL_OVERRIDES.yaml
    • Corrida apigeectl init:
      $APIGEECTL_HOME/apigeectl init -f overrides/ORIGINAL_OVERRIDES.yaml