Mejorar Kf

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

Antes de empezar

Necesitarás lo siguiente:

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

Validar la instalación de Kf

  1. Obtén las credenciales de autenticación para interactuar con el clúster:

    gcloud container clusters get-credentials CLUSTER_NAME \
      --zone CLUSTER_ZONE \
      --project CLUSTER_PROJECT_ID
  2. 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.0.0
      Server version:                   v1.17.13-gke.1401
      kf["app.kubernetes.io/version"]:  v2.0.0
    ...
    

    Si los valores del cliente y del servidor de Kf no coinciden, descarga e instala la versión de la CLI de Kf que coincida con la versión del servidor y, a continuación, repite la comprobación con la nueva CLI. La versión de la CLI debe coincidir con la versión del servidor para poder continuar.

  3. 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 el mensaje Error: environment failed checks, sigue las instrucciones del resultado doctor para resolver el problema y vuelve a intentar ejecutar el comando hasta que se complete correctamente.

Actualizar

Para actualizar Kf, sigue estos pasos:

  • Prepara el entorno local y la actualización.
  • Actualiza las dependencias de Kf.
  • Actualiza Kf y comprueba que la actualización se haya realizado correctamente.

Preparar la actualización

  1. Ejecuta kf version para obtener la versión actual de Kf.

    $ kf version
    kf version v2.0.0 linux
    
  2. Busca la siguiente versión más reciente de Kf en la página de descargas.

    1. Descarga el archivo YAML de la versión de Kf y guárdalo como kf-release.yaml.

    2. Descarga la versión de Kf para tu sistema operativo y nómbrala kf-next.

    3. Ejecuta chmod para que kf-next sea ejecutable:

      chmod +x kf-next
    4. Ejecuta kf-next version para asegurarte de que la versión descargada coincide con la versión de Kf que quieres instalar:

      $ kf-next version
      kf version v2.1.0 linux
      
  3. 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
  4. Ejecuta kubectl diff -f kf-release.yaml e inspecciona los cambios que la actualización haría en tu clúster.

  5. Edita kf-release.yaml y modifícalo para conservar los cambios que quieras mantener.

    Por ejemplo, si asigna el valor false a la propiedad config-defaults de configmap spaceDefaultToV3Stack en v2.0.0 de Kf, la versión v2.1.0 tendría el valor predeterminado true.

  6. Vuelve a ejecutar kubectl diff -f kf-release.yaml para asegurarte de que los cambios que has hecho producen el resultado esperado.

Actualizar las dependencias de Kf

  1. Abre la página de descargas y busca la matriz de dependencias de la versión de Kf a la que vas a actualizar.

  2. Actualizar Tekton:

    1. Abre la página de lanzamientos de Tekton.

    2. Busca la versión de Tekton que aparece en la matriz de dependencias de Kf.

    3. Ejecuta el comando de la sección "Instalación con una sola línea" para actualizar Tekton.

  3. Actualiza Cloud Service Mesh:

    1. Abre la guía de actualización de Cloud Service Mesh.

    2. En el menú desplegable de versiones, elige la versión de Cloud Service Mesh que aparece en la matriz de dependencias de Kf.

    3. Siga la guía para actualizar ASM.

Actualizar y verificar Kf

  1. Instala los componentes de Kf actualizados con la configuración de lanzamiento modificada:

    kubectl apply -f kf-release.yaml
  2. Ejecuta doctor para asegurarte de que la versión recién instalada funciona correctamente:

    kf-next doctor --retries=12 --delay=5s

    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. Sustituye la CLI kf de tu sistema por la CLI kf-next.

    chmod +x kf-next
    mv kf-next $(which kf)
  4. 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