Mejorar Kf

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

Como parte del procedimiento de actualización, debes asegurarte de que tu instalación de Kf utilice la versión más reciente del operador de Kf:

  • Confirma que tu versión actual de Kf se puede actualizar a Kf 2.4.1.
  • Actualiza a Kf v2.4.1.
  • Actualiza las dependencias (si es necesario).

Antes de empezar

Necesitarás lo siguiente:

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

Prepararse para la actualización

Conéctate al clúster de destino.

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

Confirma que las versiones de la CLI de Kf y del servidor coinciden

Ejecuta kf debug y comprueba que las versiones de la CLI de Kf y del servidor de Kf coincidan.

  • La versión de la CLI aparece en Kf Client.
  • La versión del servidor Kf se indica 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 los valores del cliente y del servidor de Kf no coinciden, pero la versión del servidor es la 2.3.x, instala la CLI de Kf 2.4.1 antes de continuar.

Si el valor del servidor Kf es anterior a la versión 2.3.x, primero debes actualizarlo de forma incremental a la versión 2.3.x para continuar.

Confirma que Kf está en buen estado antes de actualizar

Ejecuta kf doctor para comprobar el estado de tu clúster. Asegúrate de que todas las pruebas se superen 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 kf doctor o consulta la guía de solución de problemas para resolver el problema y vuelve a intentar ejecutar el comando hasta que se complete correctamente.

Opcionalmente, haz una copia de seguridad de los configmaps de Kf si has hecho personalizaciones.

  1. Crea una copia de seguridad del configmap config-defaults ejecutando el siguiente comando:

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

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

Actualizar el operador de Kf

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

  • Si ya has instalado el operador Kf como parte de la instalación de la versión 2.4.0, solo tienes que actualizarlo como parte de la actualización a la versión 2.4.1.

    Consulta Actualizar el operador Kf.

  • Si vas a actualizar desde la versión 2.3.2, debes instalar la versión 2.4.1 del operador de Kf para actualizar a Kf gestionado por el operador.

    Consulta Instalar el operador de Kf.

Actualizar el operador de Kf actual

El operador de Kf realiza las actualizaciones por ti.

  1. Aplica el archivo yaml del operador:

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

Instalar el operador de Kf por primera vez

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

  1. Aplica el archivo yaml del operador:

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

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

      Descarga el archivo kfsystem.yaml, rellena las variables que aparecen a continuación y, a continuación, ejecuta los comandos en el mismo directorio que el archivo para preparar automáticamente kfsystem.yaml para la actualización.

      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 la actualización sin perder las personalizaciones:

      1. Descarga el archivo kfsystem.yaml.

      2. Crea una copia de seguridad del configmap config-defaults ejecutando el siguiente comando:

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

        kubectl get configmap config-secrets -o yaml -n kf > config-secrets-backup.yaml
      4. Inspecciona los configmaps config-defaults y config-secrets actuales, y busca los ajustes correspondientes en kfsystem.yaml.

      5. Copia los ajustes de config-secrets y config-defaults. Todos los ajustes de config-secrets y config-defaults se pueden encontrar en kfsystem.yaml. El campo googleProjectId ahora es obligatorio.

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

      7. Una vez que se hayan copiado los ajustes, cambia el campo enabled de kfsystem a true.

      8. Guarda los cambios en kfsystem.yaml.

      9. Configura el operador de Kf:

        kubectl apply -f kfsystem.yaml

Actualizar las dependencias de Kf

  1. Actualizar 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 que se indican en la guía de actualización de Cloud Service Mesh 1.9.
  3. Actualiza Config Connector.

    1. Descarga el archivo tar del operador de Config Connector necesario.

    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 operador de Config Connector si es la primera vez que instalas Config Connector.

      1. Copia el siguiente código 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 a tu 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. Para comprobar que los pods estén listos, ejecuta el siguiente comando:

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

        pod/cnrm-controller-manager-0 condition met
    6. Configura Workload Identity si vas a instalar 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

Actualizar a la CLI de Kf 2.4.1

  1. Instala la CLI:

    Linux

    Este comando instala la CLI de Kf para todos los usuarios del sistema. Sigue las instrucciones de la pestaña Cloud Shell para instalarlo solo para ti.

    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

    Este comando 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 instala kf en tu instancia de Cloud Shell si usas bash. Si usas otro shell, es posible que tengas que modificar las instrucciones.

    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

    De esta forma, se descarga kf en el directorio actual. Añádela a la ruta si quieres llamarla desde cualquier otro directorio que no sea el actual.

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

    • La versión de la CLI aparece en Kf Client.
    • La versión del servidor Kf se indica 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
    ...
    

Verificar que Kf se ha actualizado correctamente

  1. Si es la primera vez que instalas el operador Kf, confirma que se ha instalado:

    kubectl get deployment -n appdevexperience appdevexperience-operator

    Si no ves el operador como en el ejemplo de salida que se muestra a continuación, consulta los pasos para instalar 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 funciona correctamente:

    kf doctor --retries=20

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

    Si el comando falla y aparece el mensaje Error: environment failed checks, sigue las instrucciones del resultado doctor para solucionar el problema y vuelve a ejecutar el comando hasta que se complete correctamente.

  3. Si ha personalizado config-defaults o config-secrets, compruebe que se han aplicado:

    Compara el archivo config-defaults-backup.yaml con kubectl diff -f config-defaults-backup.yaml para asegurarte de que el clúster sigue configurado correctamente.

    Por ejemplo, si conservas todos los cambios de tu versión antigua de Kf y apruebas el uso de un nuevo paquete de compilación incluido en 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 se superan los pasos de verificación, significa que el clúster se ha actualizado correctamente. Si tienes algún problema, consulta la página de asistencia para obtener ayuda.