Actualiza Apigee Hybrid a la versión 1.5

Actualiza a la versión de la descripción general 1.5.10.

Los procedimientos para actualizar Apigee Hybrid se organizan en las siguientes secciones:

  1. Haz una copia de seguridad de tu instalación híbrida.
  2. Verifica tu versión de Kubernetes y actualízala según corresponda.
  3. Actualiza ASM.
  4. Instala la versión 1.5 del entorno de ejecución híbrido.

Requisitos

Actualizar a la versión 1.5

  1. En estas instrucciones, se usa la variable de entorno APIGEECTL_HOME para el directorio en tu sistema de archivos en el que instalaste apigeectl. Si es necesario, cd en tu directorio apigeectl y define la variable con el siguiente comando:

    Linux

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    macOS

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    Windows

    set APIGEECTL_HOME=%CD%
    echo %APIGEECTL_HOME%
  2. (Recomendado) Realiza una copia de seguridad de tu directorio $APIGEECTL_HOME/ versión 1.4. Por ejemplo:
    tar -czvf $APIGEECTL_HOME/../apigeectl-v1.4-backup.tar.gz $APIGEECTL_HOME
  3. (Recomendado) Realiza una copia de seguridad de tu base de datos de Cassandra según las instrucciones que se indican en Copia de seguridad y recuperación de Cassandra.
  4. Actualiza tu plataforma de Kubernetes a las versiones compatibles con la versión híbrida 1.5. Si necesitas ayuda, sigue la documentación de la plataforma.
  5. Si ejecutas una versión de cert-manager anterior a la versión 1.2.0, debes actualizarla a la versión v1.2.0.
    1. Verifica la versión actual de cert-manager mediante el siguiente comando:

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

      Se mostrará un resultado similar al siguiente:

      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. Quita las implementaciones con el siguiente comando:
      kubectl delete -n cert-manager deployment cert-manager cert-manager-cainjector cert-manager-webhook
      
    3. Actualiza cert-manager a la versión v1.2.0 con el siguiente comando:
      kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.2.0/cert-manager.yaml
      

Actualiza ASM a la versión 1.12

Realiza la actualización con la documentación de ASM adecuada para tu plataforma:

Las instrucciones para instalar y configurar ASM varían según la plataforma. Las plataformas se dividen en las siguientes categorías:

  • GKE: clústeres de Google Kubernetes Engine que se ejecutan en Google Cloud.
  • Fuera de Google Cloud: Clústeres de Anthos que se ejecutan en:
    • Clústeres de Anthos alojados en VMware (GKE On-Prem)
    • Anthos en Bare Metal
    • Clústeres de Anthos en AWS
    • Amazon EKS
  • Otras plataformas de Kubernetes: clústeres que cumplen con las especificaciones que se crean y ejecutan en los siguientes entornos:
    • AKS
    • EKS
    • OpenShift

GKE

La secuencia de actualización a la versión 1.8.x de ASM para tu instalación híbrida es la siguiente:

  1. Prepárate para la actualización.
  2. Instala la versión nueva de ASM.
  3. Borra las implementaciones, los servicios y los webhooks de la versión de ASM anterior de tu instalación actual.
  4. Actualiza las puertas de enlace y configura los webhooks nuevos.

Si deseas actualizar a la versión 1.8.x de ASM para híbridos en GKE, haz lo siguiente:

  1. Revisa los requisitos de Actualiza Anthos Service Mesh, pero aún no realices la actualización.
  2. Antes de instalar la versión nueva, determina la revisión actual. Necesitarás esta información para borrar las implementaciones, los servicios y los webhooks de la versión de ASM anterior de tu instalación actual. Usa el siguiente comando para almacenar la revisión actual de istiod en una variable de entorno:
    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. Crea un archivo overlay.yaml nuevo o verifica que tu overlay.yaml existente tenga el siguiente contenido:
    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. Sigue las instrucciones de las siguientes secciones en la documentación de ASM:
    1. Descarga asmcli
    2. Otorga permisos de administrador del clúster
    3. Valida el proyecto y el clúster.
    4. Actualiza con funciones opcionales. Detén antes de iniciar la “sección Actualiza las puertas de enlace”
  5. Borra el webhook de mutación y valida el webhook:
    1. cd en el directorio en el que instalaste asmcli.
    2. Almacena la revisión nueva actual en una variable de entorno para usarla en la secuencia de comandos a fin de borrar los webhooks:
      UPGRADE_REV="asm-1129-3"
    3. Crea una secuencia de comandos de shell que contenga los siguientes 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. Ejecuta la secuencia de comandos para borrar los webhooks actuales.
  6. Sigue los pasos que se indican en Actualiza las puertas de enlace para crear los webhooks nuevos y cambiar el tráfico a las puertas de enlace nuevas.

Fuera de Google Cloud

Estas instrucciones abarcan la actualización de ASM en:

  • Clústeres de Anthos alojados en VMware (GKE On-Prem)
  • Anthos en Bare Metal
  • Clústeres de Anthos en AWS
  • Amazon EKS
  1. Revisa los requisitos de Actualiza Anthos Service Mesh, pero aún no realices la actualización.
  2. Antes de instalar la versión nueva, determina la revisión actual. Necesitarás esta información para borrar el webhook de validación y el webhook de mutación de tu instalación actual de ASM. Usa el siguiente comando para almacenar la revisión actual de istiod en una variable de entorno:
    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. Crea un archivo overlay.yaml nuevo o verifica que tu overlay.yaml existente tenga el siguiente contenido:
    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. Sigue las instrucciones de las siguientes secciones en la documentación de ASM:
    1. Descarga asmcli
    2. Otorga permisos de administrador del clúster
    3. Valida el proyecto y el clúster.
    4. Actualiza con funciones opcionales. Detén antes de iniciar la “sección Actualiza las puertas de enlace”
  5. Borra el webhook de mutación y valida el webhook:
    1. cd en el directorio en el que instalaste asmcli.
    2. Almacena la revisión nueva actual en una variable de entorno para usarla en la secuencia de comandos a fin de borrar los webhooks:
      UPGRADE_REV="asm-1129-3"
    3. Crea una secuencia de comandos de shell que contenga los siguientes 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. Ejecuta la secuencia de comandos para borrar los webhooks actuales.
  6. Sigue los pasos que se indican en Actualiza las puertas de enlace para crear los webhooks nuevos y cambiar el tráfico a las puertas de enlace nuevas.

AKS / EKS

En estas instrucciones, el proceso para actualizar la versión istio-1.12.9-asm.3 de Anthos Service Mesh (ASM) en los clústeres adjuntos de Anthos es lo mismo que realizar una instalación nueva.

Prepárate para instalar Anthos Service Mesh

    Linux

  1. Descarga el archivo de instalación de Anthos Service Mesh en el directorio de trabajo actual:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz
  2. Descarga el archivo de firma y usa openssl para verificar la firma:
    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
    
  3. Extrae el contenido del archivo a cualquier ubicación en tu sistema de archivos. Por ejemplo, para extraer el contenido en el directorio de trabajo actual, ingresa este comando:
    tar xzf istio-1.12.9-asm.3-linux-amd64.tar.gz

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado istio-1.12.9-asm.3 que contiene lo siguiente:

    • Hay aplicaciones de muestra en el directorio samples.
    • La herramienta de línea de comandos de istioctl que usas para instalar Anthos Service Mesh se encuentra en el directorio bin.
    • Los perfiles de configuración de Anthos Service Mesh se encuentran en el directorio manifests/profiles.
  4. Asegúrate de estar en el directorio raíz de la instalación de Anthos Service Mesh.
    cd istio-1.12.9-asm.3
  5. Para mayor comodidad, agregue las herramientas que contiene el directorio /bin a su RUTA DE ACCESO.
    export PATH=$PWD/bin:$PATH
  6. macOS

  7. Descarga el archivo de instalación de Anthos Service Mesh en el directorio de trabajo actual:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz
  8. Descarga el archivo de firma y usa openssl para verificar la firma:
    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. Extrae el contenido del archivo a cualquier ubicación en tu sistema de archivos. Por ejemplo, para extraer el contenido en el directorio de trabajo actual, ingresa este comando:
    tar xzf istio-1.12.9-asm.3-osx.tar.gz

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado istio-1.12.9-asm.3 que contiene lo siguiente:

    • Hay aplicaciones de muestra en el directorio samples.
    • La herramienta de línea de comandos de istioctl que usas para instalar Anthos Service Mesh se encuentra en el directorio bin.
    • Los perfiles de configuración de Anthos Service Mesh se encuentran en el directorio manifests/profiles.
  10. Asegúrate de estar en el directorio raíz de la instalación de Anthos Service Mesh.
    cd istio-1.12.9-asm.3
  11. Para mayor comodidad, agregue las herramientas que contiene el directorio /bin a su RUTA DE ACCESO.
    export PATH=$PWD/bin:$PATH
  12. Windows

  13. Descarga el archivo de instalación de Anthos Service Mesh en el directorio de trabajo actual:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip
  14. Descarga el archivo de firma y usa openssl para verificar la firma:
    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
    
  15. Extrae el contenido del archivo a cualquier ubicación en tu sistema de archivos. Por ejemplo, para extraer el contenido en el directorio de trabajo actual, ingresa este comando:
    tar xzf istio-1.12.9-asm.3-win.zip

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado istio-1.12.9-asm.3 que contiene lo siguiente:

    • Hay aplicaciones de muestra en el directorio samples.
    • La herramienta de línea de comandos de istioctl que usas para instalar Anthos Service Mesh se encuentra en el directorio bin.
    • Los perfiles de configuración de Anthos Service Mesh se encuentran en el directorio manifests\profiles.
  16. Asegúrate de estar en el directorio raíz de la instalación de Anthos Service Mesh.
    cd istio-1.12.9-asm.3
  17. Para mayor comodidad, agregue las herramientas que contiene el directorio /bin a su RUTA DE ACCESO.
    set PATH=%CD%\bin:%PATH%
  18. Ahora que ASM Istio está instalado, verifica la versión de istioctl:
    istioctl version
  19. Crea un espacio de nombres llamado istio-system para los componentes del plano de control:
    kubectl create namespace istio-system

Configura el webhook de validación

Cuando instales Anthos Service Mesh, configura una etiqueta de revisión en istiod. Debes configurar la misma revisión en el webhook de validación.

  1. Crea un archivo istiod-service.yaml con el siguiente contenido:
    apiVersion: v1
    kind: Service
    metadata:
      name: istiod
      namespace: istio-system
      labels:
        istio.io/rev: asm-1129-3
        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-1129-3
      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. Usa kubectl para aplicar la configuración de webhook de validación:
    kubectl apply -f istiod-service.yaml
  3. Verifica si se aplicó la configuración:
    kubectl get svc -n istio-system

    La respuesta debería ser similar a la siguiente:

    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
    

Instala Anthos Service Mesh

  1. Instala Anthos Service Mesh con istioctl mediante el perfil asm-multicloud:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1129-3"

    Deberías obtener un resultado similar al siguiente:

    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
    

    El argumento --set revision agrega una etiqueta de revisión con el formato istio.io/rev=asm-1129-3 a istiod. El webhook automático de inyector de sidecar usa la etiqueta de revisión para asociar los sidecars insertados con una revisión istiod particular. Para habilitar la inserción automática del sidecar para un espacio de nombres, debes etiquetarlo con una revisión que coincida con la etiqueta en istiod.

  2. Verifica que se haya completado la instalación:
    kubectl get svc -n istio-system

    Deberías obtener un resultado similar al siguiente:

    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
    

OpenShift

En estas instrucciones, el proceso para actualizar la versión istio-1.12.9-asm.3 de Anthos Service Mesh (ASM) en los clústeres adjuntos de Anthos es lo mismo que realizar una instalación nueva.

Prepárate para instalar Anthos Service Mesh

    Linux

  1. Otorga la restricción de contexto de seguridad (SCC) anyuid al sistema istio con el siguiente comando de la CLI de OpenShift (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  2. Descarga el archivo de instalación de Anthos Service Mesh en el directorio de trabajo actual:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz
  3. Descarga el archivo de firma y usa openssl para verificar la firma:
    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. Extrae el contenido del archivo a cualquier ubicación en tu sistema de archivos. Por ejemplo, para extraer el contenido en el directorio de trabajo actual, ingresa este comando:
    tar xzf istio-1.12.9-asm.3-linux-amd64.tar.gz

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado istio-1.12.9-asm.3 que contiene lo siguiente:

    • Hay aplicaciones de muestra en el directorio samples.
    • La herramienta de línea de comandos de istioctl que usas para instalar Anthos Service Mesh se encuentra en el directorio bin.
    • Los perfiles de configuración de Anthos Service Mesh se encuentran en el directorio manifests/profiles.
  5. Asegúrate de estar en el directorio raíz de la instalación de Anthos Service Mesh.
    cd istio-1.12.9-asm.3
  6. Para mayor comodidad, agregue las herramientas que contiene el directorio /bin a su RUTA DE ACCESO.
    export PATH=$PWD/bin:$PATH
  7. macOS

  8. Otorga la restricción de contexto de seguridad (SCC) anyuid al sistema istio con el siguiente comando de la CLI de OpenShift (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  9. Descarga el archivo de instalación de Anthos Service Mesh en el directorio de trabajo actual:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz
  10. Descarga el archivo de firma y usa openssl para verificar la firma:
    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. Extrae el contenido del archivo a cualquier ubicación en tu sistema de archivos. Por ejemplo, para extraer el contenido en el directorio de trabajo actual, ingresa este comando:
    tar xzf istio-1.12.9-asm.3-osx.tar.gz

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado istio-1.12.9-asm.3 que contiene lo siguiente:

    • Hay aplicaciones de muestra en el directorio samples.
    • La herramienta de línea de comandos de istioctl que usas para instalar Anthos Service Mesh se encuentra en el directorio bin.
    • Los perfiles de configuración de Anthos Service Mesh se encuentran en el directorio manifests/profiles.
  12. Asegúrate de estar en el directorio raíz de la instalación de Anthos Service Mesh.
    cd istio-1.12.9-asm.3
  13. Para mayor comodidad, agregue las herramientas que contiene el directorio /bin a su RUTA DE ACCESO.
    export PATH=$PWD/bin:$PATH
  14. Windows

  15. Otorga la restricción de contexto de seguridad (SCC) anyuid al sistema istio con el siguiente comando de la CLI de OpenShift (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  16. Descarga el archivo de instalación de Anthos Service Mesh en el directorio de trabajo actual:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip
  17. Descarga el archivo de firma y usa openssl para verificar la firma:
    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
    
  18. Extrae el contenido del archivo a cualquier ubicación en tu sistema de archivos. Por ejemplo, para extraer el contenido en el directorio de trabajo actual, ingresa este comando:
    tar xzf istio-1.12.9-asm.3-win.zip

    El comando crea un directorio de instalación en tu directorio de trabajo actual llamado istio-1.12.9-asm.3 que contiene lo siguiente:

    • Hay aplicaciones de muestra en el directorio samples.
    • La herramienta de línea de comandos de istioctl que usas para instalar Anthos Service Mesh se encuentra en el directorio bin.
    • Los perfiles de configuración de Anthos Service Mesh se encuentran en el directorio manifests\profiles.
  19. Asegúrate de estar en el directorio raíz de la instalación de Anthos Service Mesh.
    cd istio-1.12.9-asm.3
  20. Para mayor comodidad, agregue las herramientas que contiene el directorio /bin a su RUTA DE ACCESO.
    set PATH=%CD%\bin:%PATH%
  21. Ahora que ASM Istio está instalado, verifica la versión de istioctl:
    istioctl version
  22. Crea un espacio de nombres llamado istio-system para los componentes del plano de control:
    kubectl create namespace istio-system

Configura el webhook de validación

Cuando instales Anthos Service Mesh, configura una etiqueta de revisión en istiod. Debes configurar la misma revisión en el webhook de validación.

  1. Crea un archivo istiod-service.yaml con el siguiente contenido:
    apiVersion: v1
    kind: Service
    metadata:
      name: istiod
      namespace: istio-system
      labels:
        istio.io/rev: asm-1129-3
        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-1129-3
      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. Usa kubectl para aplicar la configuración de webhook de validación:
    kubectl apply -f istiod-service.yaml
  3. Verifica si se aplicó la configuración:
    kubectl get svc -n istio-system

    La respuesta debería ser similar a la siguiente:

    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
    

Instala Anthos Service Mesh

  1. Instala Anthos Service Mesh con istioctl mediante el perfil asm-multicloud:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision=istio-1.12.9-asm.3

    Deberías obtener un resultado similar al siguiente:

    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
    

    El argumento --set revision agrega una etiqueta de revisión con el formato istio.io/rev=1.8.6-asm.1 a istiod. El webhook automático de inyector de sidecar usa la etiqueta de revisión para asociar los sidecars insertados con una revisión istiod particular. Para habilitar la inserción automática del sidecar para un espacio de nombres, debes etiquetarlo con una revisión que coincida con la etiqueta en istiod.

  2. Verifica que se haya completado la instalación:
    kubectl get svc -n istio-system

    Deberías obtener un resultado similar al siguiente:

    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
    

Instala el entorno de ejecución híbrido 1.5.10

  1. Descarga el paquete de actualización para tu 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. Cambia el nombre de tu directorio apigeectl/ actual por un nombre de directorio de copia de seguridad. Por ejemplo:
    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.2/ 
  3. Extrae el contenido del archivo gzip descargado en tu directorio base híbrido. Por ejemplo:

    tar xvzf FILENAME.tar.gz -C HYBRID_BASE_DIRECTORY
  4. cd al directorio base.
  5. De forma predeterminada, los contenidos del archivo tar se expanden a un directorio con la versión y la plataforma en su nombre. Por ejemplo: ./apigeectl_1.5.0-d591b23_linux_64. Cambia el nombre de ese directorio a apigeectl:

    mv apigeectl_1.5.0-d591b23_linux_64 apigeectl
  6. En el directorio nuevo apigeectl/, ejecuta apigeectl init, apigeectl apply y apigeectl check-ready:
    1. Inicializa la versión Hybrid 1.5.10:
      apigeectl init -f OVERRIDES.yaml

      Donde OVERRIDES.yaml es tu archivo overrides.yaml editado.

    2. Verifica que se haya inicializado correctamente con el siguiente comando:
      apigeectl check-ready -f OVERRIDES.yaml
      kubectl describe apigeeds -n apigee

      Deberías obtener un resultado similar al siguiente:

      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. La sintaxis de la marca apigeectl --dry-run depende de la versión de kubectl que ejecutas. Verifica la versión de kubectl:
      gcloud version
    4. Comprueba si hay errores con una ejecución de prueba con el comando adecuado para tu versión de kubectl:

      versión 1.17 de kubectl y versiones anteriores:

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

      versión 1.18 kubectl y versiones posteriores:

      apigeectl apply -f OVERRIDES.yaml --dry-run=client
    5. Aplica tus anulaciones. Selecciona y sigue las instrucciones para los entornos de producción o entornos de demostración/experimental, según la instalación.

      Producción

      En los entornos de producción, debes actualizar cada componente Hybrid de forma individual y verificar el estado del componente actualizado antes de continuar con el siguiente.

      1. Aplica tus anulaciones para actualizar Cassandra:
        apigeectl apply -f OVERRIDES.yaml --datastore
      2. Verifica la finalización:
        apigeectl check-ready -f OVERRIDES.yaml

        Continúa con el siguiente paso solo cuando los Pods estén listos.

      3. Aplica tus anulaciones para actualizar los componentes de telemetría y verificar la finalización:
        apigeectl apply -f OVERRIDES.yaml --telemetry
        apigeectl check-ready -f OVERRIDES.yaml
      4. Agrega componentes de Redis:
        apigeectl apply -f OVERRIDES.yaml --redis
      5. Aplica tus anulaciones para actualizar los componentes a nivel de la organización (MART, Watcher y Apigee Connect) y verifica la finalización:
        apigeectl apply -f OVERRIDES.yaml --org
        apigeectl check-ready -f OVERRIDES.yaml
      6. Aplica tus anulaciones para actualizar tus entornos. Tienes dos opciones:
        • Entorno por entorno: Aplica tus anulaciones a un entorno a la vez y verifica la finalización. Repite este paso para cada entorno:
          apigeectl apply -f OVERRIDES.yaml --env ENV_NAME
          apigeectl check-ready -f OVERRIDES.yaml

          En el comando anterior, ENV_NAME es el nombre del entorno que estás actualizando.

        • Todos los entornos a la vez: Aplica las anulaciones a todos los entornos a la vez y verifica la finalización:
          apigeectl apply -f OVERRIDES.yaml --all-envs
          apigeectl check-ready -f OVERRIDES.yaml

      Demostración/Experimental

      En la mayoría de los entornos experimentales o de demostración, puedes aplicar las anulaciones a todos los componentes a la vez. Si tu entorno de demostración/experimental es grande y complejo, o si imita de manera estrecha a un entorno de producción, puedes usar las instrucciones para actualizar los entornos de producción.

      1. apigeectl apply -f OVERRIDES.yaml
      2. Verifica el estado:
        apigeectl check-ready -f OVERRIDES.yaml

Revierte una actualización

Sigue estos pasos para revertir una actualización anterior:

  1. Limpia los trabajos completados del espacio de nombres del entorno de ejecución híbrido, en el que NAMESPACE es el espacio de nombres especificado en el archivo de anulaciones, si especificaste un espacio de nombres. De lo contrario, el espacio de nombres predeterminado será apigee:
    kubectl delete job -n NAMESPACE \
      $(kubectl get job -n NAMESPACE \
      -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  2. Limpia los trabajos completados del espacio de nombres apigee-system:
    kubectl delete job -n apigee-system \
      $(kubectl get job -n apigee-system \
      -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  3. Cambia la variable APIGEECTL_HOME para que apunte al directorio que contiene la versión previa de apigeectl. Por ejemplo:
    export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
  4. En el directorio raíz de la instalación a la que deseas revertir, ejecuta lo siguiente:apigeectl apply, verifica el estado de tus pods, borra el componente Redis (nuevo en la versión híbrida v1.5.0) y, luego, ejecuta apigeectl init. Asegúrate de usar el archivo de anulaciones original para la versión a la que deseas revertir:
    • Ejecuta apigeectl apply:
      $APIGEECTL_HOME/apigeectl apply -f overrides/ORIGINAL_OVERRIDES.yaml
    • Verifica el estado de los pods:
      kubectl -n NAMESPACE get pods

      En el ejemplo anterior, NAMESPACE es el espacio de nombres híbrido de Apigee.

      Continúa con el siguiente paso solo cuando el pod apigeeds esté en ejecución.

    • Dado que Redis es un componente nuevo en la versión híbrida v1.5, ejecuta el siguiente comando para borrarlo:

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