Actualizar Kf

En este documento, se describe cómo actualizar una instalación de Kf existente y sus dependencias.

Como parte del procedimiento de actualización, asegúrate de que la instalación de Kf use la versión más reciente de su operador:

  • Confirma que tu versión actual de Kf pueda actualizarse a Kf v2.4.1.
  • Actualiza a Kf v2.4.1.
  • Actualiza las dependencias (si es necesario).

Antes de comenzar

Necesitarás:

  • Un clúster existente con Kf instalado.
  • Acceso a una máquina que tiene gcloud, kf y kubectl instalados.

Prepárate para la actualización

Conéctate a tu clúster de destino

gcloud container clusters get-credentials CLUSTER_NAME \
 --zone CLUSTER_ZONE \
 --project CLUSTER_PROJECT_ID

Confirma que la CLI de Kf actual y las versiones del servidor coincidan

Ejecuta kf debug y valida la CLI de Kf y la coincidencia de las versiones del servidor de Kf.

  • La versión de la CLI se muestra en Kf Client.
  • La versión del servidor Kf aparecerá en kf["app.kubernetes.io/version"].
$ kf debug
...
Version:
  Kf Client:                        v2.3.2
  Server version:                   v1.20.6-gke.1000
  kf["app.kubernetes.io/version"]:  v2.3.2
...

Si el cliente de Kf y los valores de servidor de Kf no coinciden, pero la versión del servidor es v2.3.x, instala la CLI de Kf v2.4.1 antes de continuar.

Si el valor del servidor de Kf es anterior a v2.3.x, primero debes actualizar a Kf v2.3.x de forma incremental para continuar.

Confirma que Kf esté en buen estado antes de realizar la actualización

Ejecuta kf doctor para verificar el estado de tu clúster. Asegúrate de que todas las pruebas se aprueben antes de continuar.

$ kf doctor
...
=== RUN doctor/user
=== RUN doctor/user/ContainerRegistry
--- PASS: doctor/user
   --- PASS: doctor/user/ContainerRegistry
...

Si ves algún mensaje FAIL o Error: environment failed checks, sigue las instrucciones de la salida de kf doctor o ve la guía de solución de problemas para resolver el problema y volver a ejecutar el comando hasta que tenga éxito.

También puedes crear copias de seguridad de los mapas de configuración de Kf si realizaste personalizaciones

  1. Haz una copia de seguridad del configmap de config-defaults con el siguiente comando:

    kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
  2. Haz una copia de seguridad del configmap de config-secrets con el siguiente comando:

    kubectl get configmap config-secrets -o yaml -n kf > config-secrets-backup.yaml

Actualiza el operador Kf

El operador Kf se lanzó por primera vez como parte de las versiones 2.4.0:

  • Si ya instalaste el operador de Kf como parte de la instalación de 2.4.0, solo debes actualizarlo como parte de la actualización a 2.4.1.

    Consulta Actualiza el operador de Kf.

  • Si actualizas desde la versión 2.3.2, debes instalar la versión 2.4.1 del operador Kf para actualizar a Kf administrado por un operador.

    Consulta Instala el operador Kf.

Actualiza el operador de Kf actual

El operador Kf realiza actualizaciones por ti.

  1. Aplica el operador yaml:

    kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.4.1/operator.yaml"

Instala el operador Kf por primera vez

Sigue estos pasos para actualizar a Kf administrado por el operador.

  1. Aplica el operador yaml:

    kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.4.1/operator.yaml"
  2. Elige entre usar valores predeterminados o retener personalizaciones:

    1. Prepara kfsystem.yaml para la actualización con los valores predeterminados:

      Descarga el archivo kfsystem.yaml, completa las variables que se indican a continuación y, luego, ejecuta los comandos en el mismo directorio que el archivo a fin de prepararte automáticamente para la actualización dekfsystem.yaml.

      export CLUSTER_PROJECT_ID=YOUR_PROJECT_ID
      export CLUSTER_NAME=YOUR_CLUSTER_NAME
      export CONTAINER_REGISTRY=YOUR_CLUSTER_COMPUTE_REGION-docker.pkg.dev/${CLUSTER_PROJECT_ID}/${CLUSTER_NAME}
      
      kubectl apply -f kfsystem.yaml
      
      kubectl patch \
      kfsystem kfsystem \
      --type='json' \
      -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'enabled': true, 'config': {'spaceContainerRegistry': '${CONTAINER_REGISTRY}', 'secrets':{'workloadidentity':{'googleserviceaccount':'${CLUSTER_NAME}-sa', 'googleprojectid':'${CLUSTER_PROJECT_ID}'}}}}}]"
      
    2. Prepara kfsystem.yaml para la actualización a la vez que preservas las personalizaciones:

      1. Descarga el archivo kfsystem.yaml.

      2. Haz una copia de seguridad del configmap de config-defaults con el siguiente comando:

        kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
      3. Haz una copia de seguridad del configmap de config-secrets con el siguiente comando:

        kubectl get configmap config-secrets -o yaml -n kf > config-secrets-backup.yaml
      4. Inspecciona los archivos config-default y config-secrets actuales, y busca la configuración correspondiente en kfsystem.yaml.

      5. Copia la configuración existente de config-secrets y config-defaults. Toda la configuración de config-secrets y config-defaults se encuentra en kfsystem.yaml. El campo googleProjectId ahora es obligatorio.

      6. El campo wi.googleServiceAccount es la cuenta de servicio completa de config-secrets, pero se debe quitar el sufijo para kfsystem. Por ejemplo, ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com convertirá ${CLUSTER_NAME}-sa en kfsystem.yaml.

      7. Después de copiar la configuración, cambia el campo enabled en kfsystem a true.

      8. Guarda los cambios en kfsystem.yaml.

      9. Configura el operador para Kf:

        kubectl apply -f kfsystem.yaml

Actualiza las dependencias de Kf

  1. Actualiza Tekton:

    kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.23.0/release.yaml"
  2. Actualiza Cloud Service Mesh:

    1. Sigue los pasos de la guía de actualización de Cloud Service Mesh 1.9.
  3. Actualiza Config Connector.

    1. Descarga el archivo tar de Config Connector más reciente.

    2. Extrae el archivo tar.

      tar zxvf release-bundle.tar.gz
    3. Instala el operador de Config Connector en tu clúster.

      kubectl apply -f operator-system/configconnector-operator.yaml
    4. Configura el conector de Config Connector si instalas Config Connector por primera vez.

      1. Copia el siguiente YAML en un archivo llamado configconnector.yaml:

        # configconnector.yaml
        apiVersion: core.cnrm.cloud.google.com/v1beta1
        kind: ConfigConnector
        metadata:
        # the name is restricted to ensure that there is only one
        # ConfigConnector resource installed in your cluster
        name: configconnector.core.cnrm.cloud.google.com
        spec:
        mode: cluster
        googleServiceAccount: "KF_SERVICE_ACCOUNT_NAME" # Replace with the full service account resolved from ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
      2. Aplica la configuración al clúster.

        kubectl apply -f configconnector.yaml
    5. Verifica que Config Connector esté completamente instalado antes de continuar.

      • Config Connector ejecuta todos sus componentes en un espacio de nombres llamado cnrm-system. Ejecuta el siguiente comando para verificar que los Pods estén listos:

        kubectl wait -n cnrm-system --for=condition=Ready pod --all
      • Si Config Connector está instalado correctamente, el resultado es similar al siguiente:

        pod/cnrm-controller-manager-0 condition met
    6. Configura Workload Identity si instalas Config Connector por primera vez.

      kubectl annotate serviceaccount \
      --namespace cnrm-system \
      --overwrite \
      cnrm-controller-manager \
      iam.gke.io/gcp-service-account=${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com

Actualiza a la CLI de Kf v2.4.1

  1. Instala la CLI:

    Linux

    Con este comando, se instala la CLI de Kf para todos los usuarios del sistema. Sigue las instrucciones de la pestaña de Cloud Shell para instalarlo tú mismo.

    gcloud storage cp gs://kf-releases/v2.4.1/kf-linux /tmp/kf
    chmod a+x /tmp/kf
    sudo mv /tmp/kf /usr/local/bin/kf

    Mac

    Con este comando, se instala kf para todos los usuarios del sistema.

    gcloud storage cp gs://kf-releases/v2.4.1/kf-darwin /tmp/kf
    chmod a+x /tmp/kf
    sudo mv /tmp/kf /usr/local/bin/kf

    Cloud Shell

    Este comando instalará kf en tu instancia de Cloud Shell si usas bash. Es posible que tengas que modificar las instrucciones para otros shells.

    mkdir -p ~/bin
    gcloud storage cp gs://kf-releases/v2.4.1/kf-linux ~/bin/kf
    chmod a+x ~/bin/kf
    echo "export PATH=$HOME/bin:$PATH" >> ~/.bashrc
    source ~/.bashrc

    Windows

    Esta acción descarga kf al directorio actual. Agrégalo a la ruta si deseas llamar desde cualquier otro lugar que no sea el directorio actual.

    gcloud storage cp gs://kf-releases/v2.4.1/kf-windows.exe kf.exe
  2. Valida la CLI de Kf y la coincidencia de las versiones del servidor de Kf:

    • La versión de la CLI se muestra en Kf Client.
    • La versión del servidor Kf aparecerá en kf["app.kubernetes.io/version"].
    $ kf debug
    ...
    Version:
      Kf Client:                        v2.4.1
      Server version:                   v1.20.6-gke.1000
      kf["app.kubernetes.io/version"]:  v2.4.1
    ...
    

Verifica que Kf se haya actualizado correctamente

  1. Si instalas el operador Kf por primera vez, confirma que el operador esté instalado:

    kubectl get deployment -n appdevexperience appdevexperience-operator

    Si no ves el operador como se muestra en el siguiente resultado de ejemplo, revisa los pasos de Instala el operador Kf por primera vez.

    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    appdevexperience-operator   1/1     1            1           1h
    
  2. Ejecuta doctor para asegurarte de que la versión recién instalada esté en buen estado:

    kf doctor --retries=20

    El comando ejecutará verificaciones del clúster varias veces. Es normal que algunos de ellos fallen mientras se inician los controladores nuevos.

    Si el comando falla con el mensaje Error: environment failed checks, sigue las instrucciones del resultado de doctor para resolver el problema y vuelve a ejecutar el comando hasta que tenga éxito.

  3. Si realizaste personalizaciones en config-defaults o config-secrets, verifica que se hayan transferido:

    Compara el archivo config-defaults-backup.yaml con kubectl diff -f config-defaults-backup.yaml para asegurarte de que tu clúster aún esté configurado de forma correcta.

    Por ejemplo, si conservaste todos los cambios de tu versión anterior de Kf y rechazaste el uso de un nuevo paquete de compilación con la siguiente versión de Kf:

    $ kubectl diff -f config-defaults-backup.yaml
    diff -u -N /tmp/LIVE/v1.ConfigMap.kf.config-defaults /tmp/MERGED/v1.ConfigMap.kf.config-defaults
    --- /tmp/LIVE/v1.ConfigMap.kf.config-defaults
    +++ /tmp/MERGED/v1.ConfigMap.kf.config-defaults
    @@ -131,6 +131,8 @@
         enable_route_services: false
       spaceBuildpacksV2: |
    -    - name: new_buildpack
    -      url: https://github.com/cloudfoundry/new-buildpack
         - name: staticfile_buildpack
           url: https://github.com/cloudfoundry/staticfile-buildpack
         - name: java_buildpack
    exit status 1
    

Si los pasos de verificación se aprueban, tu clúster se actualizó correctamente. Si tienes algún problema, revisa la página de asistencia para obtener asesoramiento.