Actualizar la versión de Apigee Hybrid

Actualización a la versión 1.2.0

Sigue estos pasos para actualizar Apigee hybrid a la versión 1.2.0:

Paso 1: Actualiza Kubernetes y descarga el paquete de lanzamiento

  1. Actualiza tu plataforma de Kubernetes de la siguiente manera. Consulta la documentación de tu plataforma si necesitas ayuda:
    Plataforma Actualizar a la versión
    GKE 1.14.x
    Anthos 1.2
    AKS 1.14.x
  2. Descarga el paquete de lanzamiento para tu sistema operativo:

    Mac de 64 bits:

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

    Linux de 64 bits

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

    Mac de 32 bits:

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

    Linux de 32 bits

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

Paso 2: Vuelve a configurar el directorio de instalación

  1. Identifica el directorio de instalación base que se creó cuando se instaló originalmente Apigee hybrid. El directorio base es el directorio en el que se encuentra el directorio $APIGEEGTL_HOME. En el siguiente ejemplo, el directorio base es /Users/myhome/hybrid:
    echo $APIGEECTL_HOME
    /Users/myhome/hybrid/apigeectl
  2. Extrae el contenido del archivo gzip descargado en el directorio base de Apigee Hybrid:

    tar xvzf filename.tar.gz -C path-to-base-directory
  3. cd al directorio base.
  4. De forma predeterminada, el contenido de tar se descomprime en un directorio cuyo nombre incluye la versión y la plataforma. Por ejemplo: ./apigeectl_1.2.0-f7b96a8_linux_64.

  5. Cambia el nombre del directorio apigeectl actual. Por ejemplo, si la versión actual es 1.1.1, cambia el nombre del directorio apigeectl a apigeectl_1.1.1.
  6. Cambia el nombre del directorio de instalación recién extraído a apigeectl. Ahora, el entorno $APIGEECTL_HOME apunta a este lugar.

Paso 3: Actualiza el archivo de anulaciones

  1. Haz una copia del archivo de anulaciones y guarda el archivo antiguo por si necesitas deshacer los cambios. En los pasos siguientes, harás los cambios necesarios en el archivo de anulaciones antes de aplicarlo al clúster.
  2. Actualiza el archivo de anulaciones con los cambios que se describen a continuación:

    A continuación, se muestra un resumen de los cambios de configuración que debes hacer en el archivo de anulaciones. En la tabla que aparece después del resumen se muestra un ejemplo completo. Como verás, la propiedad envs[] ha cambiado significativamente respecto a las versiones anteriores:

    • La propiedad envs[].hostAlias se ha quitado y se ha sustituido por la nueva propiedad virtualhosts.hostAliases[].
    • Debe añadir la nueva propiedad de configuración obligatoria virtualhosts.
    • Debe mover las propiedades envs[].sslCertPath y envs[].sslKeyPath de envs a virtualhosts.
    • Debes añadir la estrofa de configuración virtualhosts.routingRules. La propiedad virtualhosts.routingRules sustituye a la propiedad envs[].paths anterior. Si tienes envs[].paths en tu archivo de anulaciones, debes quitarlo. Para obtener más información sobre la configuración de hosts virtuales, consulta el artículo Configurar hosts virtuales.

    En la siguiente tabla se muestran las diferencias entre un archivo de anulaciones de la versión 1.1.1 y un archivo de la versión 1.2.0. El objetivo del ejemplo es destacar los tipos de cambios que debe hacer en la versión 1.2.0:

    Configuración de v1.1.x Configuración de la versión 1.2.0
    envs:
      - name: test1
        hostAlias: "api.example.com"
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        serviceAccountPaths:
          synchronizer: ./sa/sync.json
          udca: ./sa/udca.json
        paths:
          uri:
            prefixes:
              - /orders
              - /items
      - name: test2
        hostAlias: "api.example.com"
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        serviceAccountPaths:
          synchronizer: ./sa/sync.json
          udca: ./sa/udca.json
        paths:
          uri:
            prefixes:
              - /v0/hello
              - /httpbin
    virtualhosts:
      - name: default
        hostAliases: ["api.example.com"]
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        routingRules:
          - paths:
            - /orders
            - /items
            env: test1
          - paths:
            - /v0/hello
            - /httpbin
            env: test2
    
    envs:
      - name: test1
        serviceAccountPaths:
          synchronizer: ./sa/synchronizer.json
          udca: ./sa/udca.json
      - name: test2
        serviceAccountPaths:
          synchronizer: ./sa/synchronizer.json
          udca: ./sa/udca.json

Paso 4: Aplica la actualización al clúster

  1. Si has habilitado Apigee Connect en la instalación de la versión 1.1.1, debes eliminar la implementación:
    1. Primero, enumera los despliegues de Apigee:
      kubectl -n namespace get ad
    2. Elimina la implementación de Apigee Connect:
      kubectl -n namespace delete ad apigee-connect-name
  2. Muestra los pods:
    kubectl get pods -n namespace
  3. Elimina el pod apigee-cps-setup del clúster. Usa el nombre completo del pod, que incluye el nombre de tu organización, tal como se ha devuelto en el comando anterior. Por ejemplo:
    kubectl -n namespace delete pod apigee-cps-setup-org
  4. Elimina el pod apigee-cps-create-user en el mismo espacio de nombres:
    kubectl -n namespace delete pod apigee-cps-create-user
  5. Limpia las tareas completadas del espacio de nombres del tiempo de ejecución híbrido, donde namespace es el espacio de nombres especificado en el archivo de anulaciones, si has especificado alguno. Si no es así, el espacio de nombres predeterminado es apigee:
    kubectl delete job -n namespace \
      $(kubectl get job -n namespace -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  6. Limpia las tareas completadas 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}')
  7. Limpia las tareas completadas del espacio de nombres istio-system:
    kubectl delete job -n istio-system \
      $(kubectl get job -n istio-system -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  8. cd al directorio ./hybrid-files:
  9. Inicializa apigeectl para la nueva versión:
    $APIGEECTL_HOME/apigeectl init -f overrides/overrides-file.yaml
  10. Comprueba cuándo se ha completado la inicialización:
    $APIGEECTL_HOME/apigeectl check-ready -f overrides/overrides-file.yaml
  11. Cuando check-ready responda "Todos los contenedores están listos", puedes probar a hacer una instalación de prueba. Ejecuta el comando apply con la marca --dry-run=true. Al hacer una prueba, puedes comprobar si hay errores antes de que se apliquen cambios al clúster:
    $APIGEECTL_HOME/apigeectl apply -f overrides/overrides-file.yaml --dry-run=true
  12. Si no hay errores, puede aplicar los componentes de tiempo de ejecución específicos de Apigee al clúster:
    $APIGEECTL_HOME/apigeectl apply -f overrides/overrides-file.yaml
  13. Vuelve a ejecutar check-ready para determinar cuándo se ha completado la actualización.

Restaurar una versión anterior de una actualización

Sigue estos pasos para revertir una actualización anterior:

  1. Limpia las tareas completadas del espacio de nombres del tiempo de ejecución híbrido, donde namespace es el espacio de nombres especificado en el archivo de anulaciones, si has especificado alguno. Si no es así, el espacio de nombres predeterminado es apigee:
    kubectl delete job -n namespace \
      $(kubectl get job -n namespace -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  2. Limpia las tareas completadas 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. Limpia las tareas completadas del espacio de nombres istio-system:
    kubectl delete job -n istio-system \
      $(kubectl get job -n istio-system -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  4. Elimina la implementación de los operadores de Apigee. Esta operación no afectará al tráfico de tiempo de ejecución:
    kubectl -n apigee-system delete deployment apigee-controller-manager
  5. Cambia la variable $APIGEECTL_HOME para que apunte al directorio que contiene la versión original de apigeectl. Por ejemplo:
    export APIGEECTL_HOME=path-to-original-apigeectl-directory
  6. En el directorio raíz de la instalación a la que quieras volver, ejecuta apigeectl init y, a continuación, ejecuta apigeectl apply. Asegúrate de usar el archivo de anulaciones original de la versión a la que quieras volver:
      $APIGEECTL_HOME/apigeectl init -f overrides/original-overrides.yaml
      $APIGEECTL_HOME/apigeectl apply -f overrides/original-overrides.yaml