Kf aktualisieren

In diesem Dokument wird beschrieben, wie Sie eine bestehende Kf-Installation und deren Abhängigkeiten aktualisieren.

Mit dem Upgrade sorgen Sie u. a. dafür, dass für Ihre Kf-Installation die neueste Version des Kf-Operators verwendet wird:

  • Bestätigen Sie, dass Ihre aktuelle Kf-Version auf Kf v2.4.1 aktualisiert werden kann.
  • Führen Sie ein Upgrade auf Kf v2.4.1 durch.
  • Aktualisieren Sie die Abhängigkeiten (falls erforderlich).

Hinweis

Folgendes wird benötigt:

  • Einen vorhandenen Cluster, auf dem Kf installiert ist.
  • Zugriff auf einen Computer, auf dem gcloud, kf und kubectl installiert sind.

Upgrade vorbereiten

Mit Ihrem Ziel-Cluster verbinden

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

Prüfen, ob die aktuelle Kf-Kommandozeile und die Serverversionen übereinstimmen

Führen Sie kf debug aus und prüfen Sie, ob die Kf-Kommandozeile und die Kf-Serverversionen übereinstimmen.

  • Die CLI-Version ist unter Kf Client aufgeführt.
  • Die Kf-Serverversion ist unter kf["app.kubernetes.io/version"] aufgeführt.
$ kf debug
...
Version:
  Kf Client:                        v2.3.2
  Server version:                   v1.20.6-gke.1000
  kf["app.kubernetes.io/version"]:  v2.3.2
...

Wenn die Werte von Kf-Client und Kf-Server nicht übereinstimmen, die Serverversion aber v2.3.x ist, installieren Sie die Kf v2.4.1-Befehlszeile, bevor Sie fortfahren.

Wenn der Kf-Serverwert älter als v2.3.x ist, müssen Sie zuerst ein Upgrade auf Kf v2.3.x durchführen, um fortzufahren.

Kf auf Fehlerfreiheit vor dem Upgrade prüfen

Führen Sie kf doctor aus, um den Status des Clusters zu prüfen. Sorgen Sie dafür, dass alle Tests bestanden werden, bevor Sie fortfahren.

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

Wenn Sie FAIL- oder Error: environment failed checks-Meldungen sehen, folgen Sie den Anweisungen in der kf doctor-Ausgabe oder lesen Sie die Anleitung zur Fehlerbehebung, um das Problem zu beheben und den Befehl noch einmal auszuführen, bis er erfolgreich ist.

Optionales Back-up von Kf-Configmaps, wenn Sie Anpassungen vorgenommen haben

  1. Erstellen Sie eine Sicherung der config-defaults-Konfigurationskarte, indem Sie Folgendes ausführen:

    kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
  2. Erstellen Sie eine Sicherung der config-secrets-Konfigurationskarte, indem Sie Folgendes ausführen:

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

Kf-Operator aktualisieren

Der Kf-Operator wurde zuerst als Teil von Version 2.4.0 veröffentlicht:

  • Wenn Sie den Kf-Operator bereits im Rahmen der Installation von 2.4.0 installiert haben, dann müssen Sie ihn nur beim Upgrades auf 2.4.1 aktualisieren.

    Siehe Kf-Operator aktualisieren.

  • Wenn Sie ein Upgrade von 2.3.2 ausführen, müssen Sie die Version 2.4.1 des Kf-Operators installieren, um ein Upgrade auf den vom Operator verwalteten Kf-Operator durchzuführen.

    Siehe Kf-Operator installieren.

Aktuellen Kf-Operator aktualisieren

Der Kf-Operator führt Upgrades für Sie aus.

  1. Wenden Sie die Operator-YAML-Datei an:

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

Kf-Operator zum ersten Mal installieren

führen Sie diese Schritte aus, um auf ein vom Operator verwaltetes Kf zu aktualisieren.

  1. Wenden Sie die Operator-YAML-Datei an:

    kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.4.1/operator.yaml"
  2. Wählen Sie aus, ob Standardeinstellungen verwendet oder Anpassungen beibehalten werden sollen:

    1. Bereiten Sie kfsystem.yaml mithilfe von Standardeinstellungen für das Upgrade vor:

      Laden Sie die Datei kfsystem.yaml herunter, geben Sie die Variablen unten ein und führen Sie die Befehle im selben Verzeichnis wie die Datei aus, um kfsystem.yaml automatisch für das Upgrade vorzubereiten.

      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. Bereiten Sie kfsystem.yaml für das Upgrade vor, wobei die Anpassungen erhalten bleiben:

      1. Laden Sie die Datei kfsystem.yaml herunter

      2. Erstellen Sie eine Sicherung der config-defaults-Konfigurationskarte, indem Sie Folgendes ausführen:

        kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
      3. Erstellen Sie eine Sicherung der config-secrets-Konfigurationskarte, indem Sie Folgendes ausführen:

        kubectl get configmap config-secrets -o yaml -n kf > config-secrets-backup.yaml
      4. Prüfen Sie die aktuellen ConfigMaps config-defaults und config-secrets, und suchen Sie die entsprechenden Einstellungen in kfsystem.yaml.

      5. Kopieren Sie die vorhandenen Einstellungen aus config-secrets und config-defaults. Alle Einstellungen für config-secrets und config-defaults finden Sie in kfsystem.yaml. Das Feld googleProjectId ist jetzt erforderlich.

      6. Das Feld wi.googleServiceAccount ist das vollständige Dienstkonto in config-secrets, aber für kfsystem muss das Suffix entfernt werden. Beispiel: ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com würde in kfsystem.yaml zu ${CLUSTER_NAME}-sa werden.

      7. Nachdem die Einstellungen kopiert wurden, ändern Sie das Feld enabled in kfsystem auf true.

      8. Speichern Sie die Änderungen in kfsystem.yaml.

      9. Konfigurieren Sie den Operator für Kf:

        kubectl apply -f kfsystem.yaml

Upgrade von Kf-Abhängigkeiten

  1. Aktualisieren Sie Tekton:

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

    1. Folgen Sie der Anleitung im Upgrade-Leitfaden für Cloud Service Mesh 1.9.
  3. Aktualisieren Sie Config Connector.

    1. Laden Sie die erforderliche TAR-Datei für Config Connector-Operator herunter:

    2. Extrahieren Sie die TAR-Datei:

      tar zxvf release-bundle.tar.gz
    3. Installieren Sie den Config Connector-Operator in Ihrem Cluster:

      kubectl apply -f operator-system/configconnector-operator.yaml
    4. Konfigurieren Sie den Config Connector-Operator, wenn Sie Config Connector zum ersten Mal installieren.

      1. Kopieren Sie das folgende YAML-Manifest in eine Datei mit dem Namen 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. Wenden Sie die Konfiguration auf Ihren Cluster an.

        kubectl apply -f configconnector.yaml
    5. Prüfen Sie, ob Config Connector vollständig installiert ist, bevor Sie fortfahren.

      • Config Connector führt alle seine Komponenten in einem Namespace mit dem Namen cnrm-system aus. Prüfen Sie mit dem folgenden Befehl, ob die Pods bereit sind:

        kubectl wait -n cnrm-system --for=condition=Ready pod --all
      • Wenn Config Connector korrekt installiert ist, sieht die Ausgabe etwa so aus:

        pod/cnrm-controller-manager-0 condition met
    6. Richten Sie Workload Identity ein, wenn Sie Config Connector zum ersten Mal installieren.

      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

Upgrade auf die Kf-Befehlszeile v2.4.1

  1. Installieren Sie die Befehlszeile:

    Linux

    Mit diesem Befehl wird die Kf-Befehlszeile für alle Nutzer im System installiert. Folgen Sie der Anleitung auf dem Cloud Shell-Tab, um Kf nur für die eigene Nutzung zu installieren.

    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

    Mit diesem Befehl wird kf für alle Nutzer im System installiert.

    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

    Durch diesen Befehl wird kf auf Ihrer Cloud Shell-Instanz installiert, wenn Sie bash verwenden. Für andere Shells muss die Anleitung möglicherweise geändert werden.

    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

    Dadurch wird kf in das aktuelle Verzeichnis heruntergeladen. Fügen Sie es dem Pfad hinzu, wenn Sie es von außerhalb des aktuellen Verzeichnisses aufrufen möchten.

    gcloud storage cp gs://kf-releases/v2.4.1/kf-windows.exe kf.exe
  2. Prüfen Sie, ob die Kf-Befehlszeile und die Kf-Serverversionen übereinstimmen:

    • Die CLI-Version ist unter Kf Client aufgeführt.
    • Die Kf-Serverversion ist unter kf["app.kubernetes.io/version"] aufgeführt.
    $ kf debug
    ...
    Version:
      Kf Client:                        v2.4.1
      Server version:                   v1.20.6-gke.1000
      kf["app.kubernetes.io/version"]:  v2.4.1
    ...
    

Prüfen, ob Kf erfolgreich aktualisiert wurde

  1. Wenn Sie den Kf-Operator zum ersten Mal installieren, prüfen Sie, ob der Operator installiert ist:

    kubectl get deployment -n appdevexperience appdevexperience-operator

    Wenn Sie den Operator nicht wie in der Beispielausgabe unten sehen, lesen Sie die Anleitung zum ersten Installieren des Kf-Operators.

    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    appdevexperience-operator   1/1     1            1           1h
    
  2. Führen Sie doctor aus, um sicherzustellen, dass die neu installierte Version fehlerfrei ist:

    kf doctor --retries=20

    Der Befehl führt mehrmals eine Clusterprüfung durch. Es ist ganz normal, dass einige Versuche fehlschlagen, während die neuen Controller gestartet werden.

    Wenn der Befehl mit der Meldung Error: environment failed checks fehlschlägt, befolgen Sie die Anweisungen in der Ausgabe doctor, um das Problem zu beheben, und wiederholen Sie den Befehl, bis der Vorgang erfolgreich war.

  3. Wenn Sie Anpassungen an config-defaults oder config-secrets vorgenommen haben, prüfen Sie, ob diese übernommen wurden:

    Vergleichen Sie die Datei config-defaults-backup.yaml mit kubectl diff -f config-defaults-backup.yaml, damit Ihr Cluster noch ordnungsgemäß konfiguriert ist.

    Wenn Sie beispielsweise alle Änderungen aus der alten Kf-Version beibehalten und ein neues Build-Paket mit der nächsten Kf-Version verwenden konnten:

    $ 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
    

Wenn die Verifizierung ausgeführt wurde, wurde der Cluster erfolgreich aktualisiert. Wenn Sie Probleme haben, lesen Sie die Supportseite.