Mettre à jour Kf

Ce document explique comment mettre à niveau une installation Kf existante et ses dépendances.

Au cours de la procédure de mise à niveau, vous devez vous assurer que votre installation de Kf utilise la dernière version de l'opérateur Kf :

  • Vérifiez que votre version de Kf actuelle peut être mise à niveau vers la version Kf v2.4.1.
  • Passez à Kf v2.4.1.
  • Mettez à niveau les dépendances (si nécessaire).

Avant de commencer

Vous avez alors besoin de :

  • Un cluster existant sur lequel Kf est installé.
  • Un accès à un ordinateur sur lequel gcloud, kf et kubectl sont installés.

Préparer la mise à niveau

Se connecter à votre cluster cible

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

Vérifier que la CLI Kf et les versions de serveur actuelles correspondent

Exécutez kf debug et validez la correspondance entre les versions CLI et serveur de Kf.

  • La version de la CLI apparaît sous Kf Client.
  • La version du serveur Kf apparaît sous 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 les valeurs du client Kf et du serveur Kf ne correspondent pas, mais que la version du serveur est v2.3.x, installez la CLI Kf v2.4.1 avant de continuer.

Si la version du serveur Kf est antérieure à la version 2.3.x, vous devez d'abord effectuer une mise à niveau vers Kf v2.3.x afin de continuer.

Vérifier que Kf est opérationnel avant de procéder à la mise à niveau

Exécutez kf doctor pour vérifier l'état de votre cluster. Avant de continuer, assurez-vous que tous les tests sont concluants.

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

Si vous voyez les messages FAIL ou Error: environment failed checks, suivez les instructions dans la sortie kf doctor ou consultez le guide de dépannage pour résoudre le problème et réessayez la commande jusqu'à ce qu'elle aboutisse.

Sauvegarder les ConfigMaps Kf si vous avez effectué des personnalisations (facultatif)

  1. Effectuez une sauvegarde du fichier ConfigMap config-defaults en exécutant la commande suivante :

    kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
  2. Effectuez une sauvegarde du fichier ConfigMap config-secrets en exécutant la commande suivante :

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

Mettre à niveau l'opérateur Kf

L'opérateur Kf a été publié pour la première fois dans le cadre de la version 2.4.0 :

  • Si vous avez déjà installé l'opérateur Kf dans le cadre de l'installation de la version 2.4.0, il vous suffit de le mettre à niveau dans le cadre de la mise à niveau vers la version 2.4.1.

    Consultez Mettre à niveau l'opérateur Kf.

  • Si vous effectuez une mise à niveau à partir de la version 2.3.2, vous devez installer la version 2.4.1 de l'opérateur Kf pour passer à la version Kf gérée par l'opérateur.

    Consultez la section Installer l'opérateur Kf.

Mettre à niveau l'opérateur Kf actuel

L'opérateur Kf effectue des mises à niveau pour vous.

  1. Appliquez l'opérateur YAML :

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

Installer l'opérateur Kf pour la première fois

Procédez comme suit pour effectuer la mise à niveau vers l'opérateur Kf.

  1. Appliquez l'opérateur YAML :

    kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.4.1/operator.yaml"
  2. Choisissez d'utiliser les valeurs par défaut ou de conserver les personnalisations :

    1. Préparez kfsystem.yaml pour la mise à niveau à l'aide des valeurs par défaut :

      Téléchargez le fichier kfsystem.yaml, renseignez les variables ci-dessous, puis exécutez les commandes dans le même répertoire que le fichier pour préparer automatiquement kfsystem.yaml à la mise à niveau.

      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. Préparez kfsystem.yaml pour la mise à niveau en conservant les personnalisations :

      1. Téléchargez le fichier kfsystem.yaml.

      2. Effectuez une sauvegarde du fichier ConfigMap config-defaults en exécutant la commande suivante :

        kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
      3. Effectuez une sauvegarde du fichier ConfigMap config-secrets en exécutant la commande suivante :

        kubectl get configmap config-secrets -o yaml -n kf > config-secrets-backup.yaml
      4. Inspectez les fichiers ConfigMap config-defaults et config-secrets par défaut, puis recherchez les paramètres correspondants dans kfsystem.yaml.

      5. Copiez les paramètres existants à partir de config-secrets et config-defaults. Tous les paramètres de config-secrets et de config-defaults sont disponibles dans kfsystem.yaml. Le champ googleProjectId est maintenant obligatoire.

      6. Le champ wi.googleServiceAccount correspond au compte de service complet dans config-secrets, mais pour kfsystem, le suffixe doit être supprimé. Par exemple, ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com deviendra ${CLUSTER_NAME}-sa dans kfsystem.yaml.

      7. Une fois les paramètres copiés, remplacez le champ enabled de kfsystem par true.

      8. Enregistrez les modifications apportées à kfsystem.yaml.

      9. Configurez l'opérateur pour Kf :

        kubectl apply -f kfsystem.yaml

Mettre à niveau les dépendances Kf

  1. Mettez à niveau Tekton :

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

    1. Suivez les étapes du guide de mise à niveau de Cloud Service Mesh 1.9.
  3. Mettez à niveau Config Connector.

    1. Téléchargez le fichier tar de l'opérateur Config Connector requis :

      .
    2. Extrayez le fichier tar.

      tar zxvf release-bundle.tar.gz
    3. Installez l'opérateur Config Connector sur votre cluster.

      kubectl apply -f operator-system/configconnector-operator.yaml
    4. Configurez l'opérateur Config Connector si vous installez Config Connector pour la première fois.

      1. Copiez le fichier YAML suivant dans un fichier nommé 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. Appliquez la configuration à votre cluster.

        kubectl apply -f configconnector.yaml
    5. Vérifiez que Config Connector est entièrement installé avant de continuer.

      • Config Connector exécute tous ses composants dans un espace de noms nommé cnrm-system. Vérifiez que les pods sont prêts en exécutant la commande suivante :

        kubectl wait -n cnrm-system --for=condition=Ready pod --all
      • Si Config Connector est installé correctement, le résultat ressemble à ce qui suit :

        pod/cnrm-controller-manager-0 condition met
    6. Configurez Workload Identity si vous installez Config Connector pour la première fois.

      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

Mettre à niveau la CLI Kf vers la version 2.4.1

  1. Installez la CLI :

    Linux

    Cette commande installe la CLI Kf pour tous les utilisateurs du système. Suivez les instructions de l'onglet Cloud Shell pour l'installer juste pour vous.

    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

    Cette commande installe kf pour tous les utilisateurs du système.

    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

    kf sera installé sur votre instance Cloud Shell si vous utilisez bash, et vous devrez peut-être modifier les instructions pour les autres interfaces système.

    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

    kf sera téléchargé dans le répertoire actuel. Si vous souhaitez l'appeler depuis un emplacement autre que le répertoire actuel, ajoutez-le au chemin d'accès.

    gcloud storage cp gs://kf-releases/v2.4.1/kf-windows.exe kf.exe
  2. Validez la correspondance des versions de la CLI Kf et du serveur Kf :

    • La version de la CLI apparaît sous Kf Client.
    • La version du serveur Kf apparaît sous 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
    ...
    

Vérifier que Kf a bien été mis à niveau

  1. Si vous installez l'opérateur Kf pour la première fois, confirmez l'installation de l'opérateur :

    kubectl get deployment -n appdevexperience appdevexperience-operator

    Si l'opérateur ne s'affiche pas, comme dans l'exemple ci-dessous, consultez la procédure Installez l'opérateur Kf pour la première fois.

    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    appdevexperience-operator   1/1     1            1           1h
    
  2. Exécutez doctor pour vous assurer que la version qui vient d'être installée est opérationnelle :

    kf doctor --retries=20

    La commande exécute à plusieurs reprises des vérifications du cluster. Il est normal que certaines tentatives échouent lors du démarrage des nouveaux contrôleurs.

    Si la commande échoue avec le message Error: environment failed checks, suivez les instructions fournies dans le résultat doctor pour résoudre le problème et relancez la commande jusqu'à ce qu'elle aboutisse.

  3. Si vous avez apporté des personnalisations à config-defaults ou config-secrets, vérifiez qu'elles ont bien été reportées :

    Comparez le fichier config-defaults-backup.yaml à l'aide de la commande kubectl diff -f config-defaults-backup.yaml pour vous assurer que votre cluster est toujours correctement configuré.

    Par exemple, si vous avez conservé toutes les modifications de votre ancienne version de Kf et approuvé l'utilisation d'un nouveau pack de création fourni avec la version suivante :

    $ 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 les étapes de validation réussissent, votre cluster a bien été mis à niveau. Si vous rencontrez des problèmes, veuillez consulter la page Assistance pour obtenir des conseils.