Actualizar Apigee Hybrid a la versión 1.15

En este procedimiento se explica cómo actualizar de Apigee hybrid versión 1.14.x a Apigee hybrid versión 1.15.0.

Cambios de Apigee hybrid v1.14

Ten en cuenta el siguiente cambio:

  • Compatibilidad con cargas útiles de mensajes grandes: a partir de la versión 1.15 y también en el parche 1.14.2, Apigee ahora admite cargas útiles de mensajes de hasta 30 MB. Para obtener información, consulta:
  • Comprobaciones de instanciación de clases más estrictas: Apigee Hybrid la política JavaCallout ahora incluye seguridad adicional durante la instanciación de clases de Java. Esta medida de seguridad mejorada impide que se implementen políticas que intenten realizar acciones directa o indirectamente que requieran permisos no permitidos.

    En la mayoría de los casos, las políticas actuales seguirán funcionando como de costumbre sin ningún problema. Sin embargo, es posible que se vean afectadas las políticas que dependen de bibliotecas de terceros o las que tienen código personalizado que activa indirectamente operaciones que requieren permisos elevados.

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

Requisitos previos

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

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

  • Apigee hybrid 1.15.0 incluye un nuevo límite de proxy por entorno mejorado que te permite implementar 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 híbrida 1.15.0 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.15 de Apigee hybrid.

    Al actualizar el controlador de Apigee a la versión 1.15.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, una copia de seguridad de Hybrid 1.14 no se puede usar para restaurar una instancia de Hybrid 1.15.

  • 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.

Descripción general de la actualización a la versión 1.15.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.15.0 del entorno de ejecución híbrido.

Prepararse para actualizar a la versión 1.15

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. Crea una copia de seguridad del directorio 1.14 $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.14-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. Si utilizas archivos de certificado de servicio (.json) en tus sustituciones para autenticar cuentas de servicio, asegúrate de que los archivos de certificado de tu cuenta de servicio se encuentren en el directorio correcto del gráfico de Helm. Los gráficos de Helm no pueden leer archivos fuera del directorio de cada gráfico.

    Este paso no es necesario si utilizas secretos de Kubernetes o la federación de Workload Identity para GKE con el fin de autenticar cuentas de servicio.

    En la siguiente tabla se muestra el destino de cada archivo de cuenta de servicio, en función del tipo de instalación:

    Producción

    Cuenta de servicio Nombre de archivo predeterminado Directorio de gráficos de Helm
    apigee-cassandra PROJECT_ID-apigee-cassandra.json $APIGEE_HELM_CHARTS_HOME/apigee-datastore/
    apigee-logger PROJECT_ID-apigee-logger.json $APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
    apigee-mart PROJECT_ID-apigee-mart.json $APIGEE_HELM_CHARTS_HOME/apigee-org/
    apigee-metrics PROJECT_ID-apigee-metrics.json $APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
    apigee-runtime PROJECT_ID-apigee-runtime.json $APIGEE_HELM_CHARTS_HOME/apigee-env
    apigee-synchronizer PROJECT_ID-apigee-synchronizer.json $APIGEE_HELM_CHARTS_HOME/apigee-env/
    apigee-udca PROJECT_ID-apigee-udca.json $APIGEE_HELM_CHARTS_HOME/apigee-org/
    apigee-watcher PROJECT_ID-apigee-watcher.json $APIGEE_HELM_CHARTS_HOME/apigee-org/

    No producción

    Crea una copia del archivo de cuenta de servicio apigee-non-prod en cada uno de los siguientes directorios:

    Cuenta de servicio Nombre de archivo predeterminado Directorios de gráficos de Helm
    apigee-non-prod PROJECT_ID-apigee-non-prod.json $APIGEE_HELM_CHARTS_HOME/apigee-datastore/
    $APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
    $APIGEE_HELM_CHARTS_HOME/apigee-org/
    $APIGEE_HELM_CHARTS_HOME/apigee-env/
  5. 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 de Kubernetes y, si es necesario, actualízala a una versión compatible con las versiones 1.14 y 1.15 de Hybrid. Si necesitas ayuda, consulta la documentación de tu plataforma.

Quitar o actualizar CRDs de Istio

Durante la actualización de versiones de Apigee hybrid 1.14.1 o anteriores, la presencia de istio.io definiciones de recursos personalizados (CRDs) en un clúster de Apigee hybrid puede provocar que las sondas de disponibilidad de los contenedores discovery de los pods apigee-ingressgateway-manager fallen.

Si gateway.networking.k8s.io/v1 está instalado en tu clúster,es posible que apigee-ingressgateway-manager no se pueda actualizar. Por ejemplo, gateway.networking.k8s.io/v1 suele instalarse en clústeres que se ejecutan en Google Distributed Cloud (solo software) en bare metal v1.32 o versiones posteriores.

Hay dos opciones para solucionar estos problemas:

  • Elimina los istio.io CRDs si no usas Istio para ningún otro propósito que no sea Apigee en tu clúster.
  • Actualiza el valor de apigee-ingressgateway-manager clusterrole para añadir permisos a istio.io.

Después de cada una de las opciones anteriores, tendrás que reiniciar tus pods apigee-ingressgateway-manager.

Consulta los problemas conocidos 416634326 y 419856132 para obtener más información sobre los CRDs istio.io y gateway.networking.k8s.io/v1 en Apigee Hybrid.

  1. Determina si tienes CRDs istio.io en tu clúster con el siguiente comando:
    kubectl get crd -o custom-columns=NAME:metadata.name | grep istio.io

    Si tu clúster tiene istio.io CRDs, la salida tendrá un aspecto similar al siguiente:

    kubectl get crd -o custom-columns=NAME:metadata.name | grep istio.io
      authorizationpolicies.security.istio.io
      destinationrules.networking.istio.io
      envoyfilters.networking.istio.io
      gateways.networking.istio.io
      peerauthentications.security.istio.io
      proxyconfigs.networking.istio.io
      requestauthentications.security.istio.io
      serviceentries.networking.istio.io
      sidecars.networking.istio.io
      telemetries.telemetry.istio.io
      virtualservices.networking.istio.io
      wasmplugins.extensions.istio.io
      workloadentries.networking.istio.io
      workloadgroups.networking.istio.io
    
  2. Opcional: Guarda los CRDs de forma local por si necesitas volver a crearlos:
    kubectl get crd $(cat istio-crd.csv) -o yaml > istio-crd.yaml

Eliminar CRDs

  1. Lista los istio.ioCRDs de tu clúster en un archivo CSV:
    kubectl get crd -o custom-columns=NAME:metadata.name | grep istio.io > istio-crd.csv
  2. Opcional: Guarda los CRDs de forma local por si necesitas volver a crearlos:
    kubectl get crd $(cat istio-crd.csv) -o yaml > istio-crd.yaml
  3. Elimina los CRDs de istio.io:

    Prueba de funcionamiento:

    kubectl delete crd $(cat istio-crd.csv) --dry-run=client

    Ejecutar:

    kubectl delete crd $(cat istio-crd.csv)

Actualizar clusterrole

  1. Obtén el clusterrole apigee-ingressgateway-manager actual:
    kubectl get clusterrole apigee-ingressgateway-manager-apigee -o yaml > apigee-ingressgateway-manager-apigee-clusterrole.yaml
  2. Copia el rol de clúster en una nueva ubicación:
    cp apigee-ingressgateway-manager-apigee-clusterrole.yaml apigee-ingressgateway-manager-apigee-clusterrole-added-istio-permissions.yaml
  3. Añade los siguientes permisos adicionales al final del archivo:
    - apiGroups:
      - gateway.networking.k8s.io
      resources:
      - gatewayclasses
      - gateways
      - grpcroutes
      - httproutes
      - referencegrants
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - networking.istio.io
      resources:
      - sidecars
      - destinationrules
      - gateways
      - virtualservices
      - envoyfilters
      - workloadentries
      - serviceentries
      - workloadgroups
      - proxyconfigs
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - security.istio.io
      resources:
      - peerauthentications
      - authorizationpolicies
      - requestauthentications
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - telemetry.istio.io
      resources:
      - telemetries
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - extensions.istio.io
      resources:
      - wasmplugins
      verbs:
      - get
      - list
      - watch
    
  4. Aplica el rol:
    kubectl -n APIGEE_NAMESPACE apply -f apigee-ingressgateway-manager-apigee-clusterrole-added-istio-permissions.yaml

Una vez que hayas completado las opciones anteriores, tendrás que reiniciar tus pods apigee-ingressgateway-manager.

  1. Lista los pods ingress-manager que quieras reinstalar o volver a crear:
    kubectl get deployments -n APIGEE_NAMESPACE

    Ejemplo:

    NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
    apigee-controller-manager       1/1     1            1           32d
    apigee-ingressgateway-manager   2/2     2            2           32d
    
  2. Reinicia los pods del ingress-manager:
    kubectl rollout restart deployment -n APIGEE_NAMESPACE apigee-ingressgateway-manager
  3. Después de unos minutos, monitoriza los apigee-ingressgateway-manager pods:
    watch -n 10 kubectl -n APIGEE_NAMESPACE get pods -l app=apigee-ingressgateway-manager

    Ejemplo:

    NAME                                             READY   STATUS    RESTARTS   AGE
    apigee-ingressgateway-manager-12345abcde-678wx   3/3     Running   0          10m
    apigee-ingressgateway-manager-12345abcde-901yz   3/3     Running   0          10m
    

Instalar el entorno de ejecución híbrido 1.15.0

Configura la canalización de recogida de datos.

A partir de la versión híbrida 1.14, la nueva canalización de datos de analíticas y depuración está habilitada de forma predeterminada en todas las organizaciones híbridas de Apigee. Debe seguir los pasos que se indican en Habilitar el acceso de editores a Analytics para configurar el flujo de autorización.

Prepararse para la actualización de los gráficos de Helm

  1. 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.15.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
    
  2. Actualiza cert-manager si es necesario.

    Si necesitas actualizar la versión de cert-manager, instala la nueva con el siguiente comando:

    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.17.2/cert-manager.yaml
    

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

  3. 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 usas apigee como espacio de nombres, no tienes que editar el archivo.

  4. 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
      
  5. 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.

Instalar los gráficos de Helm de Apigee Hybrid

  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.15.0   1.15.0
    

    Para comprobar que funciona correctamente, 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 funciona correctamente, 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-org1-xxxxx          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 el artículo Tres conceptos importantes class="external" de la documentación de Helm.
    • ENV_NAME es el nombre del entorno que vas a actualizar.
    • OVERRIDES_FILE es el nuevo archivo de anulaciones para la versión 1.15.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-org1-dev-xxx            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-xxxxxx                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
    

Sigue este procedimiento para validar el comportamiento de la política JavaCallout después de actualizar de la versión 1.14.0.

  1. Comprueba si los archivos JAR de Java solicitan permisos innecesarios.

    Una vez que se haya implementado la política, comprueba los registros de tiempo de ejecución para ver si aparece el siguiente mensaje de registro: "Failed to load and initialize class ...". Si ves este mensaje, significa que el archivo JAR implementado ha solicitado permisos innecesarios. Para solucionar este problema, investiga el código Java y actualiza el archivo JAR.

  2. Investiga y actualiza el código Java.

    Revisa el código Java (incluidas las dependencias) para identificar la causa de las operaciones que pueden no estar permitidas. Cuando lo encuentre, modifique el código fuente según sea necesario.

  3. Prueba las políticas con la comprobación de seguridad habilitada.

    En un entorno de no producción, habilita la marca de verificación de seguridad y vuelve a implementar tus políticas con un archivo JAR actualizado. Para definir la marca, sigue estos pasos:

    • En el archivo apigee-env/values.yaml, asigna el valor true a conf_security-secure.constructor.only en runtime:cwcAppend:. Por ejemplo:
      # Apigee Runtime
      runtime:
        cwcAppend:
          conf_security-secure.constructor.only: true
    • Actualiza el gráfico apigee-env del entorno para aplicar el cambio. Por ejemplo:
      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --set env=ENV_NAME \
        -f OVERRIDES_FILE

        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 (por ejemplo, dev-env-release y dev-envgroup-release). Para obtener más información sobre las versiones de Helm, consulta el artículo Tres conceptos importantes class="external" de la documentación de Helm.

    Si el mensaje de registro "Failed to load and initialize class ..." sigue presente, sigue modificando y probando el archivo JAR hasta que el mensaje de registro deje de aparecer.

  4. Habilita la comprobación de seguridad en el entorno de producción.

    Después de haber probado y verificado a fondo el archivo JAR en el entorno de no producción, habilite la comprobación de seguridad en su entorno de producción configurando la marca conf_security-secure.constructor.only en true y actualizando el gráfico apigee-env del entorno de producción para aplicar el cambio.

Restaurar una versión anterior

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

  1. Restablece todos los gráficos de apigee-virtualhost a apigee-datastore. En los siguientes comandos se da por hecho que estás usando los gráficos de la versión anterior (v1.14.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.14_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.14_OVERRIDES_FILE
    

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

    helm upgrade ORG_NAME apigee-org/ \
      --install \
      --namespace apigee \
      --atomic \
      -f 1.14_OVERRIDES_FILE
    
    helm upgrade ingress-manager apigee-ingress-manager/ \
      --install \
      --namespace apigee \
      --atomic \
      -f 1.14_OVERRIDES_FILE
    
    helm upgrade redis apigee-redis/ \
      --install \
      --namespace apigee \
      --atomic \
      -f 1.14_OVERRIDES_FILE
    
    helm upgrade telemetry apigee-telemetry/ \
      --install \
      --namespace apigee \
      --atomic \
      -f 1.14_OVERRIDES_FILE
    
    helm upgrade datastore apigee-datastore/ \
      --install \
      --namespace apigee \
      --atomic \
      -f 1.14_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 nombre de lanzamiento operator.
    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.14_OVERRIDES_FILE
    
  6. Revierta 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.14_OVERRIDES_FILE