Actualizar Apigee Hybrid a la versión 1.16

En este procedimiento se explica cómo actualizar de la versión 1.15.x de Apigee Hybrid a la versión 1.16.0 de Apigee Hybrid.

Cambios de Apigee Hybrid v1.15

Ten en cuenta los siguientes cambios:

  • Perfiles de seccomp: A partir de la versión 1.16, Apigee hybrid ofrece ahora la posibilidad de aplicar perfiles de seccomp a los componentes del tiempo de ejecución, lo que mejora significativamente la seguridad de tu implementación. Esta función permite a los administradores y a los equipos de seguridad de Apigee restringir las llamadas al sistema que puede hacer un proceso contenedorizado al kernel del host. Si limitas un contenedor a las llamadas al sistema necesarias, puedes hacer lo siguiente:
    • Mejorar la seguridad: mitiga el riesgo de que se produzcan brechas en los contenedores y de que se aumenten los privilegios.
    • Aplica el principio de mínimos accesos: asegúrate de que los componentes solo tengan acceso a las llamadas del sistema exactas que necesiten para funcionar.
    • Cumplir los requisitos: proporciona un control fundamental para cumplir los estrictos requisitos de cumplimiento de seguridad.
    Para obtener más información, consulta Configurar perfiles de Seccomp para la seguridad de los pods.
  • Eliminación del agente general de recogida de datos en Apigee Hybrid: en la versión 1.16 de Apigee Hybrid, se ha eliminado el componente del agente general de recogida de datos. Las responsabilidades de enviar datos de analíticas, de seguimiento y de estado de la implementación al plano de control de Apigee ahora se gestionan mediante una canalización de datos basada en Google Cloud Pub/Sub. El uso de la canalización de datos basada en Pub/Sub ha sido el mecanismo de recogida de datos predeterminado desde la versión 1.14.0 de Apigee hybrid.
  • Cuenta de servicio apigee-guardrails: En la versión 1.16.0, Apigee Hybrid introduce una apigee-guardrailscuenta de servicio de gestión de identidades y accesos de Google. El gráfico apigee-operator lo usa durante la instalación para comprobar que todas las APIs necesarias estén habilitadas en tu proyecto.

    Consulta los siguientes artículos:

  • Compatibilidad con las versiones 1.18 y 1.19 de cert-manager: Apigee hybrid v1.16 es compatible con las versiones 1.18 y 1.19 de cert-manager. En la versión 1.18 de cert-manager, se ha cambiado el valor predeterminado de Certificate.Spec.PrivateKey.rotationPolicy, lo que puede afectar al tráfico. Si vas a actualizar desde una versión anterior de Apigee hybrid a la versión 1.18 o posterior de cert-manager, sigue el procedimiento Actualizar cert-manager de esta guía.

Para obtener más información sobre las funciones de la versión 1.16 de Hybrid, consulta las notas de la versión 1.16.0 de Apigee Hybrid.

Requisitos previos

Antes de actualizar a la versión híbrida 1.16, asegúrate de que tu instalación cumpla los siguientes requisitos:

Antes de actualizar a la versión 1.16.0: limitaciones y notas importantes

  • Apigee hybrid 1.16.0 incluye un nuevo límite de proxy por entorno mejorado que te permite desplegar más proxies y flujos compartidos en un solo entorno. Consulta Límites: proxies de API para conocer los límites del número de proxies y flujos compartidos que puedes desplegar por entorno. Esta función solo está disponible en las organizaciones híbridas recién creadas y no se puede aplicar a las organizaciones actualizadas. Para usar esta función, realiza una instalación limpia de la versión 1.16.0 de Hybrid y crea una organización.

    Esta función está disponible exclusivamente como parte del plan de suscripción del 2024 y está sujeta a los derechos concedidos en esa suscripción. Consulta Límites de proxy por entorno mejorados para obtener más información sobre esta función.

  • Es posible que se produzca un tiempo de inactividad al actualizar a la versión 1.16 de Apigee Hybrid.

    Al actualizar el controlador de Apigee a la versión 1.16.0, todas las implementaciones de Apigee se reinician de forma gradual. Para minimizar el tiempo de inactividad en entornos híbridos de producción durante un reinicio gradual, asegúrate de que tienes al menos dos clústeres (en la misma región o centro de datos, o en regiones o centros de datos diferentes). Desvía todo el tráfico de producción a un solo clúster y desconecta el clúster que vas a actualizar. A continuación, continúa con el proceso de actualización. Repite el proceso con cada clúster.

    Apigee recomienda que, una vez que empiece la actualización, actualice todos los clústeres lo antes posible para reducir las probabilidades de que se produzcan problemas en producción. No hay un límite de tiempo para actualizar todos los clústeres restantes después de que se haya actualizado el primero. Sin embargo, hasta que se actualicen todos los clústeres restantes, la copia de seguridad y la restauración de Cassandra no funcionarán con versiones mixtas. Por ejemplo, no se puede usar una copia de seguridad de Hybrid 1.15 para restaurar una instancia de Hybrid 1.16.

  • No es necesario suspender por completo los cambios en el plano de gestión durante una actualización. Las suspensiones temporales necesarias para los cambios en el plano de gestión se indican en las instrucciones de actualización que se incluyen más abajo.

Información general sobre la actualización a la versión 1.16.0

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

  1. Prepárate para cambiar a un plan superior.
  2. Instala la versión 1.16.0 del entorno de ejecución híbrido.

Prepararse para actualizar a la versión 1.16

Crear una copia de seguridad de la instalación híbrida

  1. En estas instrucciones se usa la variable de entorno APIGEE_HELM_CHARTS_HOME para el directorio del sistema de archivos en el que has instalado los gráficos de Helm. Si es necesario, cambia al directorio y define la variable con el siguiente comando:

    Linux

    export APIGEE_HELM_CHARTS_HOME=$PWD
    echo $APIGEE_HELM_CHARTS_HOME

    macOS

    export APIGEE_HELM_CHARTS_HOME=$PWD
    echo $APIGEE_HELM_CHARTS_HOME

    Windows

    set APIGEE_HELM_CHARTS_HOME=%CD%
    echo %APIGEE_HELM_CHARTS_HOME%
  2. Haz una copia de seguridad del directorio 1.15 $APIGEE_HELM_CHARTS_HOME/. Puedes usar cualquier proceso de copia de seguridad. Por ejemplo, puedes crear un archivo tar de todo tu directorio con el siguiente comando:
    tar -czvf $APIGEE_HELM_CHARTS_HOME/../apigee-helm-charts-v1.15-backup.tar.gz $APIGEE_HELM_CHARTS_HOME
  3. Crea una copia de seguridad de tu base de datos de Cassandra siguiendo las instrucciones de Copia de seguridad y recuperación de Cassandra.
  4. Asegúrate de que los archivos de certificado y clave TLS (.crt, .key o .pem) se encuentren en el directorio $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/.

Actualizar la versión de Kubernetes

Comprueba la versión de tu plataforma Kubernetes y, si es necesario, actualízala a una versión compatible con las versiones híbridas 1.15 y 1.16. Si necesitas ayuda, consulta la documentación de tu plataforma.

Extrae los gráficos de Helm de Apigee.

Los gráficos de Apigee Hybrid se alojan en Google Artifact Registry:

oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts

Con el comando pull, copia todos los gráficos de Helm de Apigee hybrid en tu almacenamiento local con el siguiente comando:

export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
export CHART_VERSION=1.16.0
helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar

Editar kustomization.yaml de un espacio de nombres de apigee personalizado

Si tu espacio de nombres de Apigee no es apigee, edita el archivo apigee-operator/etc/crds/default/kustomization.yaml y sustituye el valor namespace por tu espacio de nombres de Apigee.

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

namespace: APIGEE_NAMESPACE

Si utilizas apigee como espacio de nombres, no tienes que editar el archivo.

  • Instala los CRDs de Apigee actualizados:
    1. Usa la función de prueba kubectl ejecutando el siguiente comando:

      kubectl apply -k  apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false --dry-run=server
      
    2. Después de validar con el comando de prueba, ejecuta el siguiente comando:

      kubectl apply -k  apigee-operator/etc/crds/default/ \
        --server-side \
        --force-conflicts \
        --validate=false
      
    3. Valida la instalación con el comando kubectl get crds:
      kubectl get crds | grep apigee

      La salida debería tener un aspecto similar al siguiente:

      apigeedatastores.apigee.cloud.google.com                    2024-08-21T14:48:30Z
      apigeedeployments.apigee.cloud.google.com                   2024-08-21T14:48:30Z
      apigeeenvironments.apigee.cloud.google.com                  2024-08-21T14:48:31Z
      apigeeissues.apigee.cloud.google.com                        2024-08-21T14:48:31Z
      apigeeorganizations.apigee.cloud.google.com                 2024-08-21T14:48:32Z
      apigeeredis.apigee.cloud.google.com                         2024-08-21T14:48:33Z
      apigeerouteconfigs.apigee.cloud.google.com                  2024-08-21T14:48:33Z
      apigeeroutes.apigee.cloud.google.com                        2024-08-21T14:48:33Z
      apigeetelemetries.apigee.cloud.google.com                   2024-08-21T14:48:34Z
      cassandradatareplications.apigee.cloud.google.com           2024-08-21T14:48:35Z
      
  • Comprueba las etiquetas de los nodos del clúster. De forma predeterminada, Apigee programa los pods de datos en nodos con la etiqueta cloud.google.com/gke-nodepool=apigee-data y los pods de tiempo de ejecución en nodos con la etiqueta cloud.google.com/gke-nodepool=apigee-runtime. Puedes personalizar las etiquetas de tu grupo de nodos en el archivo overrides.yaml.

    Para obtener más información, consulta Configurar grupos de nodos dedicados.

  • Configurar la cuenta de servicio apigee-guardrails

    A partir de la versión híbrida 1.16, se necesita la cuenta de servicio apigee-guardrails para actualizar el gráfico apigee-operator.

    En el siguiente procedimiento, selecciona el tipo de autenticación de cuenta de servicio que estés usando.

    1. Verifica que puedes ejecutar create-service-account. Si acabas de descargar los gráficos, es posible que el archivo create-service-account no esté en modo ejecutable. En el directorio APIGEE_HELM_CHARTS_HOME, ejecuta el siguiente comando:
      ./apigee-operator/etc/tools/create-service-account --help

      Si la salida indica permission denied, debes hacer que el archivo sea ejecutable. Por ejemplo, con chmod en Linux, macOS o UNIX, o en el Explorador de Windows o con el comando icacls en Windows. Por ejemplo:

      chmod +x ./apigee-operator/etc/tools/create-service-account
    2. Crea la cuenta de servicio apigee-guardrails:

      Secretos de Kubernetes

      ./apigee-operator/etc/tools/create-service-account \
        --env prod \
        --profile apigee-guardrails \
        --dir service-accounts

      Este comando crea la cuenta de servicio apigee-guardrails y descarga la clave en el directorio service-accounts/.

      Archivos JSON

      ./apigee-operator/etc/tools/create-service-account \
        --env prod \
        --profile apigee-guardrails \
        --dir ./apigee-operator/

      Este comando crea la cuenta de servicio apigee-guardrails y descarga la clave en el directorio del gráfico apigee-operator/.

      Vault

      ./apigee-operator/etc/tools/create-service-account \
        --env prod \
        --profile apigee-guardrails \
        --dir service-accounts

      Este comando crea la cuenta de servicio apigee-guardrails y descarga la clave en el directorio service-accounts/.

      WIF para GKE

      ./apigee-operator/etc/tools/create-service-account \
        --env prod \
        --profile apigee-guardrails \
        --dir service-accounts

      Este comando crea la cuenta de servicio apigee-guardrails y descarga la clave en el directorio apigee-operator/etc/tools/service-accounts/. No necesitas el archivo de clave descargado y puedes eliminarlo.

      WIF en otras plataformas

      ./apigee-operator/etc/tools/create-service-account \
        --env prod \
        --profile apigee-guardrails \
        --dir service-accounts

      Este comando crea la cuenta de servicio apigee-guardrails y descarga la clave en el directorio service-accounts/.

    3. Configura la autenticación de la cuenta de servicio apigee-guardrails:

      Secretos de Kubernetes

      Crea el secreto de Kubernetes con el archivo de clave de cuenta de servicio apigee-guardrails en el directorio service-accounts/:

      kubectl create secret generic apigee-guardrails-svc-account \
          --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-guardrails.json" \
          -n $APIGEE_NAMESPACE

      Añade lo siguiente a tu archivo overrides.yaml:

      guardrails:
        serviceAccountRef: apigee-guardrails-svc-account

      Archivos JSON

      Añade lo siguiente a tu archivo overrides.yaml, usando la ruta al archivo de clave de cuenta de servicio apigee-guardrails en el directorio apigee-operator/:

      guardrails:
        serviceAccountPath: $PROJECT_ID-apigee-guardrails.json

      Vault

      1. Actualiza el secreto de Vault secret/data/apigee/orgsakeys para añadir una entrada guardrails con el contenido del archivo de clave de cuenta de servicio apigee-guardrails.
        vault kv patch secret/apigee/orgsakeys guardrails="$(cat ./service-accounts/hybrid115-apigee-guardrails.json)"
        
      2. La cuenta de servicio de Kubernetes (KSA) de las protecciones se llama apigee-operator-guardrails-sa. Añade la KSA de las medidas de protección a las cuentas de servicio específicas de la organización vinculadas al rol apigee-orgsakeys en Vault.
        1. Para obtener la lista actual de vinculaciones de KSA, sigue estos pasos:
          vault read auth/kubernetes/role/apigee-orgsakeys
          

          La salida debe tener el siguiente formato:

          Key                                         Value
          ---                                         -----
          alias_name_source                           serviceaccount_uid
          bound_service_account_names                 BOUND_SERVICE_ACCOUNT_NAMES
          bound_service_account_namespace_selector    n/a
          bound_service_account_namespaces            APIGEE_NAMESPACE

          En el resultado, BOUND_SERVICE_ACCOUNT_NAMES es una lista de nombres de cuentas de servicio separados por comas. Añade apigee-operator-guardrails-sa a la lista de nombres. Por ejemplo (sin los saltos de línea que se han añadido para mejorar la legibilidad):

          apigee-manager,apigee-cassandra-default,apigee-cassandra-backup-sa,
          apigee-cassandra-restore-sa,apigee-cassandra-schema-setup-myhybrido
          rg-5b044c1,apigee-cassandra-schema-val-myhybridorg-5b044c1,apigee-c
          assandra-user-setup-myhybridorg-5b044c1,apigee-mart-myhybridorg-5b0
          44c1,apigee-mint-task-scheduler-myhybridorg-5b044c1,apigee-connect-
          agent-myhybridorg-5b044c1,apigee-watcher-myhybridorg-5b044c1,apigee
          -metrics-apigee-telemetry,apigee-open-telemetry,apigee-synchronizer
          -myhybridorg-dev-ee52aca,apigee-runtime-telemetry-collector-apigee-
          telemetry,apigee-logger-apigee-e-myhybrridorg-dev-ee52aca,apigee-sy
          nchronizer-myhybridog-prod-2d0221c,apigee-runtime-myhybridorg-prod-
          2d0221c,apigee-operator-guardrails-sa
        2. Actualiza las vinculaciones al rol apigee-orgsakeys con la lista actualizada de nombres de cuentas de servicio:
          vault write auth/kubernetes/role/apigee-orgsakeys \
            bound_service_account_names=UPDATED_BOUND_SERVICE_ACCOUNT_NAMES \
            bound_service_account_namespaces=APIGEE_NAMESPACE \
            policies=apigee-orgsakeys-auth \
            ttl=1m
          
      3. Añadir "protecciones" a la SecretProviderClass
        1. Edita tu archivo spc-org.yaml.
        2. En spec.parameters.objects, añade una entrada de barreras de protección:
                - objectName: "guardrails"
                  secretPath: ""
                  secretKey: ""
        3. Actualiza tu SecretProviderClass:
          kubectl -n APIGEE_NAMESPACE apply -f spc-org.yaml
          

      WIF para GKE

      La cuenta de servicio de Kubernetes (KSA) de las protecciones se llama apigee-operator-guardrails-sa. Crea el enlace para la cuenta de servicio de Google (GSA) apigee-guardrails con el siguiente comando:

      gcloud iam service-accounts add-iam-policy-binding apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$APIGEE_NAMESPACE/apigee-operator-guardrails-sa]" \
          --project $PROJECT_ID

      Añade lo siguiente a tu archivo overrides.yaml:

      guardrails:
        gsa: apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com

      WIF en otras plataformas

      La cuenta de servicio de Kubernetes (KSA) de las protecciones se llama apigee-operator-guardrails-sa. Debes conceder a la KSA de las medidas de protección acceso para suplantar la identidad de la cuenta de servicio de Google (GSA) apigee-guardrails y configurar las anulaciones para que usen un archivo de configuración de credenciales.

      1. Concede al KSA acceso para suplantar la identidad del GSA con el siguiente comando:

        Template

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com \
          --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/system:serviceaccount:APIGEE_NAMESPACE:apigee-operator-guardrails-sa" \
          --role=roles/iam.workloadIdentityUser

        Ejemplo

        gcloud iam service-accounts add-iam-policy-binding \
          apigee-guardrails@my-project.iam.gserviceaccount.com \
          --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-operator-guardrails-sa" \
          --role=roles/iam.workloadIdentityUser

        Donde:

        • PROJECT_ID: tu ID de proyecto de Google Cloud.
        • PROJECT_NUMBER: el número de proyecto del proyecto en el que has creado el grupo de identidades de carga de trabajo.
        • POOL_ID: el ID del grupo de identidades de carga de trabajo.
        • APIGEE_NAMESPACE: el espacio de nombres en el que está instalado Apigee hybrid.
      2. Crea un archivo de configuración de credenciales para la cuenta de servicio apigee-guardrails:
        gcloud iam workload-identity-pools create-cred-config \
          projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID \
          --service-account=apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com \
          --credential-source-file=/var/run/service-account/token \
          --credential-source-type=text \
          --output-file=apigee-guardrails-credential-configuration.json
            

        donde WORKLOAD_PROVIDER_ID es el ID del proveedor de grupos de identidades de carga de trabajo.

      3. Configure apigee-guardrails para usar la federación de identidades de cargas de trabajo con uno de los siguientes métodos:

        WIF: secrets

        1. Crea un nuevo secreto de Kubernetes con el archivo de origen de las credenciales de cada archivo de configuración de credenciales.
          kubectl create secret -n APIGEE_NAMESPACE generic guardrails-workload-identity-secret --from-file="client_secret.json=./apigee-guardrails-credential-configuration.json"
        2. Sustituye el valor de serviceAccountRef por el nuevo secreto:
          guardrails:
            serviceAccountRef: guardrails-workload-identity-secret

        WIF: archivos

        Mueve el archivo apigee-guardrails-credential-configuration.json generado al directorio de gráficos apigee-operator/.

        Añade lo siguiente a tu archivo overrides.yaml:

        guardrails:
          serviceAccountPath: apigee-guardrails-credential-configuration.json

        WIF: Vault

        Actualiza la clave de cuenta de servicio de guardrails en Vault con el archivo de origen de credenciales correspondiente:

        SAKEY=$(cat .apigee-guardrails-credential-configuration.json); kubectl -n APIGEE_NAMESPACE exec vault-0 -- vault kv patch secret/apigee/orgsakeys guardrails="$SAKEY"

        Consulta Storing service account keys in Hashicorp Vault para obtener más información.

    Actualizar cert-manager

    Apigee hybrid v1.16 admite las versiones de cert-manager de la 1.16 a la 1.19. Hay un cambio en cert-manager 1.18 que puede provocar un problema con tu tráfico. En la versión 1.18 de cert-manager, el valor predeterminado de Certificate.Spec.PrivateKey.rotationPolicy cambió de Never a Always. En las instalaciones actualizadas de Apigee hybrid, esto puede provocar un problema con el tráfico. Cuando actualices a la versión híbrida 1.16 desde una versión anterior, debes editar tu certificado apigee-ca para compensar este cambio o mantener tu versión de cert-manager en la versión 1.17.x o inferior.

    Antes de actualizar cert-manager a la versión 1.18 o 1.19, sigue estos pasos para editar tu certificado apigee-ca y asignarle el valor Never a Certificate.Spec.PrivateKey.rotationPolicy.

    1. Comprueba el contenido de tu certificado apigee-ca para ver si rotationPolicy está configurado:
      kubectl get certificate apigee-ca -n cert-manager -o yaml
      

      Busca los valores de spec.privateKey en el resultado:

      ...
      spec:
        commonName: apigee-hybrid
        duration: 87600h
        isCA: true
        issuerRef:
          group: cert-manager.io
          kind: ClusterIssuer
          name: apigee-root-certificate-issuer
        privateKey:
          algorithm: ECDSA
          # Note: rotationPolicy would appear here if it is set.
          size: 256
        secretName: apigee-ca
      ...
    2. Si rotationPolicy no está definido o se ha definido como Always, edita el certificado apigee-ca para definir el valor de rotationPolicy como Never:
      1. Primero, haz una prueba de funcionamiento:
        kubectl patch Certificate \
          --dry-run=server \
          -n cert-manager \
          --type=json \
          -p='[{"op": "replace", "path": "/spec/privateKey/rotationPolicy", "value": "Never"}]' \
          -o=yaml \
          apigee-ca
        
      2. Parchea el certificado:
        kubectl patch Certificate \
          -n cert-manager \
          --type=json \
          -p='[{"op": "replace", "path": "/spec/privateKey/rotationPolicy", "value": "Never"}]' \
          -o=yaml \
          apigee-ca
        
    3. Comprueba que el valor de rotationPolicy ahora sea Never:
      kubectl get certificate apigee-ca -n cert-manager -o yaml
      

      La salida debería ser similar a la siguiente:

      ...
      spec:
        commonName: apigee-hybrid
        duration: 87600h
        isCA: true
        issuerRef:
          group: cert-manager.io
          kind: ClusterIssuer
          name: apigee-root-certificate-issuer
        privateKey:
          algorithm: ECDSA
          rotationPolicy: Never
          size: 256
        secretName: apigee-ca
      ...
    4. Actualiza cert-manager. El siguiente comando descargará e instalará cert-manager v1.19.2:
      kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.19.2/cert-manager.yaml

      Consulta la lista de versiones admitidas en Plataformas y versiones compatibles: cert-manager.

    Consulta los siguientes artículos:

    Instalar el entorno de ejecución híbrido 1.16.0

    1. Si no lo has hecho, ve al directorio APIGEE_HELM_CHARTS_HOME. Ejecuta los siguientes comandos desde ese directorio.
    2. Actualiza el operador o el controlador de Apigee:

      Prueba de funcionamiento:

      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE \
        --dry-run=server
      

      Actualiza el gráfico:

      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE
      

      Verifica la instalación del operador de Apigee:

      helm ls -n APIGEE_NAMESPACE
      
      NAME       NAMESPACE       REVISION   UPDATED                                STATUS     CHART                   APP VERSION
      operator   apigee   3          2024-08-21 00:42:44.492009 -0800 PST   deployed   apigee-operator-1.16.0   1.16.0
      

      Para comprobar que está en funcionamiento, consulta su disponibilidad:

      kubectl -n APIGEE_NAMESPACE get deploy apigee-controller-manager
      
      NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-controller-manager   1/1     1            1           7d20h
      
    3. Actualiza el almacén de datos de Apigee:

      Prueba de funcionamiento:

      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE \
        --dry-run=server
      

      Actualiza el gráfico:

      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE
      

      Verifica que apigeedatastore esté en funcionamiento comprobando su estado:

      kubectl -n APIGEE_NAMESPACE get apigeedatastore default
      
      NAME      STATE       AGE
      default   running    2d
    4. Actualiza la telemetría de Apigee:

      Prueba de funcionamiento:

      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE \
        --dry-run=server
      

      Actualiza el gráfico:

      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE
      

      Para comprobar que funciona correctamente, consulta su estado:

      kubectl -n APIGEE_NAMESPACE get apigeetelemetry apigee-telemetry
      
      NAME               STATE     AGE
      apigee-telemetry   running   2d
    5. Actualiza Apigee Redis:

      Prueba de funcionamiento:

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE \
        --dry-run=server
      

      Actualiza el gráfico:

      helm upgrade redis apigee-redis/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE
      

      Para comprobar que funciona correctamente, consulta su estado:

      kubectl -n APIGEE_NAMESPACE get apigeeredis default
      
      NAME      STATE     AGE
      default   running   2d
    6. Actualiza el gestor de entrada de Apigee:

      Prueba de funcionamiento:

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE \
        --dry-run=server
      

      Actualiza el gráfico:

      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE
      

      Para comprobar que está en funcionamiento, consulta su disponibilidad:

      kubectl -n APIGEE_NAMESPACE get deployment apigee-ingressgateway-manager
      
      NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-ingressgateway-manager   2/2     2            2           2d
    7. Actualiza la organización de Apigee:

      Prueba de funcionamiento:

      helm upgrade ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE \
        --dry-run=server
      

      Actualiza el gráfico:

      helm upgrade ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        -f OVERRIDES_FILE
      

      Comprueba que está en funcionamiento consultando el estado de la organización correspondiente:

      kubectl -n APIGEE_NAMESPACE get apigeeorg
      
      NAME                      STATE     AGE
      apigee-my-org-my-env      running   2d
    8. Actualiza el entorno.

      Debes instalar un entorno cada vez. Especifica el entorno con --set env=ENV_NAME.

      Prueba de funcionamiento:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --set env=ENV_NAME \
        -f OVERRIDES_FILE \
        --dry-run=server
      
      • ENV_RELEASE_NAME es un nombre que se usa para hacer un seguimiento de la instalación y las actualizaciones del gráfico apigee-env. Este nombre debe ser único y diferente de los demás nombres de lanzamientos de Helm de tu instalación. Normalmente, es la misma que ENV_NAME. Sin embargo, si tu entorno tiene el mismo nombre que tu grupo de entornos, debes usar nombres de lanzamiento diferentes para el entorno y el grupo de entornos, como dev-env-release y dev-envgroup-release. Para obtener más información sobre las versiones de Helm, consulta Tres conceptos importantes en la documentación de Helm.
      • ENV_NAME es el nombre del entorno que vas a actualizar.
      • OVERRIDES_FILE es tu nuevo archivo de anulaciones para la versión 1.16.0.

      Actualiza el gráfico:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --set env=ENV_NAME \
        -f OVERRIDES_FILE
      

      Para comprobar que está en funcionamiento, consulta el estado del entorno correspondiente:

      kubectl -n APIGEE_NAMESPACE get apigeeenv
      
      NAME                          STATE       AGE   GATEWAYTYPE
      apigee-my-org-my-env          running     2d
    9. Actualiza los grupos de entornos (virtualhosts).
      1. Debes actualizar los grupos de entornos (hosts virtuales) de uno en uno. Especifica el grupo de entornos con --set envgroup=ENV_GROUP_NAME. Repite los siguientes comandos para cada grupo de entornos mencionado en el archivo overrides.yaml:

        Prueba de funcionamiento:

        helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
          --install \
          --namespace APIGEE_NAMESPACE \
          --set envgroup=ENV_GROUP_NAME \
          -f OVERRIDES_FILE \
          --dry-run=server
        

        ENV_GROUP_RELEASE_NAME es el nombre con el que instalaste el gráfico apigee-virtualhost. Suele ser ENV_GROUP_NAME.

        Actualiza el gráfico:

        helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
          --install \
          --namespace APIGEE_NAMESPACE \
          --set envgroup=ENV_GROUP_NAME \
          -f OVERRIDES_FILE
        
      2. Comprueba el estado de ApigeeRoute (AR).

        Al instalar virtualhosts se crea ApigeeRouteConfig (ARC), que a su vez crea ApigeeRoute (AR) una vez que el watcher de Apigee extrae los detalles relacionados con el grupo de entornos del plano de control. Por lo tanto, comprueba que el estado de la AR correspondiente sea "running":

        kubectl -n APIGEE_NAMESPACE get arc
        
        NAME                                STATE   AGE
        apigee-org1-dev-egroup                       2d
        kubectl -n APIGEE_NAMESPACE get ar
        
        NAME                                        STATE     AGE
        apigee-org1-dev-egroup-123abc               running   2d
    10. Una vez que hayas verificado que todas las instalaciones se han actualizado correctamente, elimina la versión anterior de apigee-operator del espacio de nombres apigee-system.
      1. Desinstala la versión antigua de operator:
        helm delete operator -n apigee-system
        
      2. Elimina el espacio de nombres apigee-system:
        kubectl delete namespace apigee-system
        
    11. Vuelve a actualizar operator en tu espacio de nombres de Apigee para reinstalar los recursos con permisos de clúster eliminados:
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      

    Restaurar una versión anterior

    Para volver a la versión anterior, usa la versión anterior del gráfico para restaurar el proceso de actualización en orden inverso. Empieza por apigee-virtualhost y ve retrocediendo hasta apigee-operator. Después, revierte los CRDs.

    1. Restablece todos los gráficos de apigee-virtualhost a apigee-datastore. En los siguientes comandos se presupone que estás usando los gráficos de la versión anterior (v1.15.x).

      Ejecuta el siguiente comando para cada grupo de entornos:

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace apigee \
        --atomic \
        --set envgroup=ENV_GROUP_NAME \
        -f 1.15_OVERRIDES_FILE
      

      Ejecuta el siguiente comando en cada entorno:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace apigee \
        --atomic \
        --set env=ENV_NAME \
        -f 1.15_OVERRIDES_FILE
      

      Revierte el resto de los gráficos, excepto apigee-operator.

      helm upgrade ORG_NAME apigee-org/ \
        --install \
        --namespace apigee \
        --atomic \
        -f 1.15_OVERRIDES_FILE
      
      helm upgrade ingress-manager apigee-ingress-manager/ \
        --install \
        --namespace apigee \
        --atomic \
        -f 1.15_OVERRIDES_FILE
      
      helm upgrade redis apigee-redis/ \
        --install \
        --namespace apigee \
        --atomic \
        -f 1.15_OVERRIDES_FILE
      
      helm upgrade telemetry apigee-telemetry/ \
        --install \
        --namespace apigee \
        --atomic \
        -f 1.15_OVERRIDES_FILE
      
      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace apigee \
        --atomic \
        -f 1.15_OVERRIDES_FILE
      
    2. Crea el espacio de nombres apigee-system.
      kubectl create namespace apigee-system
      
    3. Aplica un parche a la anotación del recurso para volver al espacio de nombres apigee-system.
      kubectl annotate --overwrite clusterIssuer apigee-ca-issuer meta.helm.sh/release-namespace='apigee-system'
      
    4. Si también has cambiado el nombre de lanzamiento, actualiza la anotación con el operator nombre de lanzamiento.
      kubectl annotate --overwrite clusterIssuer apigee-ca-issuer meta.helm.sh/release-name='operator'
      
    5. Instala apigee-operator de nuevo en el espacio de nombres apigee-system.
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace apigee-system \
        --atomic \
        -f 1.15_OVERRIDES_FILE
      
    6. Revierte los CRDs reinstalando los CRDs anteriores.
      kubectl apply -k apigee-operator/etc/crds/default/ \
        --server-side \
        --force-conflicts \
        --validate=false
      
    7. Limpia la versión apigee-operator del espacio de nombres APIGEE_NAMESPACE para completar el proceso de reversión.
      helm uninstall operator -n APIGEE_NAMESPACE
      
    8. Algunos recursos con ámbito de clúster, como clusterIssuer, se eliminan cuando se desinstala operator. Vuelve a instalarlos con el siguiente comando:
      helm upgrade operator apigee-operator/ \
        --install \
        --namespace apigee-system \
        --atomic \
        -f 1.15_OVERRIDES_FILE