שדרוג Kf

במאמר הזה מוסבר איך לשדרג התקנה קיימת של Kf ואת התלות שלה.

במסגרת תהליך השדרוג, מוודאים שההתקנה של Kf משתמשת בגרסה העדכנית ביותר של אופרטור Kf:

  • מוודאים שאפשר לשדרג את גרסת Kf הנוכחית לגרסה Kf v2.4.1.
  • שדרוג ל-Kf v2.4.1.
  • משדרגים את התלויות (אם צריך).

לפני שמתחילים

תצטרכו:

  • קלאסטר קיים עם Kf מותקן.
  • גישה למחשב שמותקנים בו gcloud, ‏kf ו-kubectl.

הכנות לשדרוג

התחברות לאשכול היעד

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

איך מוודאים שגרסת ה-CLI וגרסת השרת של Kf זהות

מריצים את הפקודה kf debug ומוודאים שהגרסאות של Kf CLI ושל שרת Kf זהות.

  • גרסת ה-CLI מופיעה בקטע Kf Client.
  • גרסת השרת של Kf מופיעה בקטע 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
...

אם הערכים של לקוח Kf ושרת Kf לא זהים, אבל גרסת השרת היא v2.3.x, צריך להתקין את Kf v2.4.1 CLI לפני שממשיכים.

אם ערך השרת של Kf הוא מגרסה ישנה יותר מ-v2.3.x, צריך קודם לשדרג בהדרגה ל-Kf v2.3.x כדי להמשיך.

אישור תקינות של Kf לפני שדרוג

מריצים את הפקודה kf doctor כדי לבדוק את מצב האשכול. לפני שממשיכים, צריך לוודא שכל הבדיקות עברו.

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

אם מופיעות הודעות FAIL או Error: environment failed checks, פועלים לפי ההנחיות בפלט kf doctor או מעיינים במדריך לפתרון בעיות כדי לפתור את הבעיה ומנסים שוב להריץ את הפקודה עד שהיא מצליחה.

אופציונלי: גיבוי של Kf configmaps אם ביצעתם התאמות אישיות

  1. מריצים את הפקודה הבאה כדי ליצור גיבוי של config-defaults configmap:

    kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
  2. מריצים את הפקודה הבאה כדי ליצור גיבוי של config-secrets configmap:

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

שדרוג של אופרטור Kf

האופרטור Kf שוחרר לראשונה כחלק מגרסאות 2.4.0:

  • אם כבר התקנתם את אופרטור Kf כחלק מההתקנה של גרסה 2.4.0, אתם צריכים רק לשדרג אותו כחלק מהשדרוג לגרסה 2.4.1.

    איך משדרגים את אופרטור Kf

  • אם אתם משדרגים מגרסה 2.3.2, אתם צריכים להתקין את גרסה 2.4.1 של אופרטור Kf כדי לשדרג ל-Kf בניהול אופרטור.

    מידע נוסף מופיע במאמר בנושא התקנת אופרטור Kf.

שדרוג האופרטור Kf הנוכחי

מפעיל Kf מבצע את השדרוגים בשבילכם.

  1. החלת קובץ ה-YAML של האופרטור:

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

התקנה של אופרטור Kf בפעם הראשונה

כדי לשדרג ל-Kf בניהול אופרטור:

  1. החלת קובץ ה-YAML של האופרטור:

    kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.4.1/operator.yaml"
  2. בוחרים אם להשתמש בברירות מחדל או לשמור על ההתאמות האישיות:

    1. הכנה של kfsystem.yaml לשדרוג באמצעות ברירות המחדל:

      מורידים את הקובץ kfsystem.yaml, ממלאים את המשתנים שבהמשך ומריצים את הפקודות באותה ספרייה שבה נמצא הקובץ כדי להכין את kfsystem.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. הכנה kfsystem.yaml לשדרוג תוך שמירה על ההתאמות האישיות:

      1. מורידים את קובץ kfsystem.yaml.

      2. מריצים את הפקודה הבאה כדי ליצור גיבוי של config-defaults configmap:

        kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
      3. מריצים את הפקודה הבאה כדי ליצור גיבוי של config-secrets configmap:

        kubectl get configmap config-secrets -o yaml -n kf > config-secrets-backup.yaml
      4. בודקים את מפות ה-ConfigMap הנוכחיות של config-defaults ו-config-secrets, ומחפשים את ההגדרות התואמות ב-kfsystem.yaml.

      5. מעתיקים את ההגדרות הקיימות מ-config-secrets ומ-config-defaults. כל ההגדרות ב-config-secrets וב-config-defaults מופיעות ב-kfsystem.yaml. השדה googleProjectId הוא עכשיו שדה חובה.

      6. השדה wi.googleServiceAccount הוא חשבון השירות המלא ב-config-secrets, אבל ב-kfsystem צריך להסיר את הסיומת. לדוגמה, ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com יהפוך ל-${CLUSTER_NAME}-sa ב-kfsystem.yaml.

      7. אחרי שההגדרות מועתקות, משנים את השדה enabled ב-kfsystem ל-true.

      8. שומרים את השינויים ב-kfsystem.yaml.

      9. מגדירים את האופרטור ל-Kf:

        kubectl apply -f kfsystem.yaml

שדרוג יחסי התלות של Kf

  1. שדרוג Tekton:

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

    1. פועלים לפי השלבים שמפורטים במדריך לשדרוג Cloud Service Mesh 1.9.
  3. שדרוג Config Connector.

    1. מורידים את קובץ ה-tar של Config Connector Operator.

    2. מחלצים את קובץ ה-TAR.

      tar zxvf release-bundle.tar.gz
    3. מתקינים את האופרטור של Config Connector באשכול.

      kubectl apply -f operator-system/configconnector-operator.yaml
    4. אם אתם מתקינים את Config Connector בפעם הראשונה, אתם צריכים להגדיר את האופרטור של Config Connector.

      1. מעתיקים את קוד ה-YAML הבא לקובץ בשם 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. מחילים את ההגדרה על האשכול.

        kubectl apply -f configconnector.yaml
    5. לפני שממשיכים, מוודאים ש-Config Connector מותקן באופן מלא.

      • ‫Config Connector מריץ את כל הרכיבים שלו במרחב שמות בשם cnrm-system. מריצים את הפקודה הבאה כדי לוודא שה-Pods מוכנים:

        kubectl wait -n cnrm-system --for=condition=Ready pod --all
      • אם Config Connector מותקן בצורה תקינה, הפלט דומה לזה:

        pod/cnrm-controller-manager-0 condition met
    6. אם זו הפעם הראשונה שאתם מתקינים את Config Connector, אתם צריכים להגדיר את Workload Identity.

      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

שדרוג ל-CLI של Kf גרסה 2.4.1

  1. מתקינים את ה-CLI:

    Linux

    הפקודה הזו מתקינה את Kf CLI לכל המשתמשים במערכת. כדי להתקין אותו רק לעצמכם, פועלים לפי ההוראות בכרטיסייה Cloud Shell.

    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

    הפקודה הזו מתקינה את kf לכל המשתמשים במערכת.

    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 במכונת Cloud Shell אם משתמשים ב-bash. יכול להיות שיהיה צורך לשנות את ההוראות עבור מעטפות אחרות.

    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 יורד לספרייה הנוכחית. אם רוצים להפעיל אותו מכל מקום אחר ולא רק מהספרייה הנוכחית, צריך להוסיף אותו לנתיב.

    gcloud storage cp gs://kf-releases/v2.4.1/kf-windows.exe kf.exe
  2. מוודאים שהגרסאות של Kf CLI ושל שרת Kf זהות:

    • גרסת ה-CLI מופיעה בקטע Kf Client.
    • גרסת השרת של Kf מופיעה בקטע 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
    ...
    

אימות השדרוג של Kf

  1. אם זו הפעם הראשונה שמתקינים את אופרטור Kf, מאשרים שהאופרטור הותקן:

    kubectl get deployment -n appdevexperience appdevexperience-operator

    אם לא מופיע האופרטור כמו בפלט לדוגמה שבהמשך, צריך לעיין בשלבים של התקנת אופרטור Kf בפעם הראשונה.

    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    appdevexperience-operator   1/1     1            1           1h
    
  2. מריצים את הפקודה doctor כדי לוודא שהגרסה החדשה שהותקנה תקינה:

    kf doctor --retries=20

    הפקודה תריץ בדיקות של האשכול כמה פעמים. זה נורמלי שכמה מהניסיונות ייכשלו בזמן שהבקרים החדשים מופעלים.

    אם הפקודה נכשלת עם ההודעה Error: environment failed checks, צריך לפעול לפי ההנחיות בפלט doctor כדי לפתור את הבעיה ולנסות שוב להריץ את הפקודה עד שהיא תצליח.

  3. אם ביצעתם התאמות אישיות ב-config-defaults או ב-config-secrets, ודאו שהן הועברו:

    משווים בין הקובץ config-defaults-backup.yaml לבין הקובץ kubectl diff -f config-defaults-backup.yaml כדי לוודא שהאשכול עדיין מוגדר בצורה נכונה.

    לדוגמה, אם שמרתם את כל השינויים מהגרסה הישנה של Kf, ואישרתם שימוש ב-buildpack חדש שצורף לגרסה הבאה של 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
    

אם שלבי האימות עוברים בהצלחה, המשמעות היא שהשדרוג של האשכול בוצע בהצלחה. אם נתקלתם בבעיות, תוכלו לעיין בהנחיות שבדף התמיכה.