שדרוג Kf

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

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

תצטרכו:

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

אימות ההתקנה הקיימת של Kf

  1. קבלת פרטי אימות כדי ליצור אינטראקציה עם האשכול:

    gcloud container clusters get-credentials CLUSTER_NAME \
      --zone CLUSTER_ZONE \
      --project CLUSTER_PROJECT_ID
  2. מריצים את הפקודה kf debug ומוודאים שהגרסאות של Kf CLI ושל שרת Kf זהות.

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

    אם הערכים של לקוח Kf ושרת Kf לא זהים, צריך להוריד ולהתקין את הגרסה של Kf CLI שתואמת לגרסת השרת, ואז לחזור על הבדיקה עם ה-CLI החדש. גרסת ה-CLI חייבת להיות זהה לגרסת השרת כדי להמשיך.

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

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

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

שדרוג

כדי לשדרג את Kf, פועלים לפי השלבים הבאים:

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

הכנה לשדרוג

  1. מריצים את הפקודה kf version כדי לקבל את הגרסה הנוכחית של Kf.

    $ kf version
    kf version v2.0.0 linux
    
  2. מחפשים את הגרסה החדשה הבאה של Kf בדף ההורדות.

    1. מורידים את קובץ ה-YAML של מהדורת Kf ושומרים אותו בשם kf-release.yaml.

    2. מורידים את הגרסה של Kf שמתאימה למערכת ההפעלה שלכם ונותנים לה את השם kf-next.

    3. מריצים את הפקודה chmod כדי להפוך את kf-next לקובץ הפעלה:

      chmod +x kf-next
    4. מריצים את הפקודה kf-next version כדי לוודא שהגרסה שהורדתם זהה לגרסה של Kf שאתם רוצים להתקין:

      $ kf-next version
      kf version v2.1.0 linux
      
  3. מריצים את הפקודה הבאה כדי ליצור גיבוי של config-defaults configmap:

    kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
  4. מריצים את הפקודה kubectl diff -f kf-release.yaml ובודקים את השינויים שהשדרוג יבצע באשכול.

  5. עורכים את kf-release.yaml ומשנים אותו כדי לשמור את השינויים הרצויים.

    לדוגמה, אם מגדירים את הנכס config-defaults configmap spaceDefaultToV3Stack כ-false ב-v2.0.0 של Kf, לגרסת v2.1.0 יהיה ערך ברירת המחדל true.

  6. מריצים את kubectl diff -f kf-release.yaml שוב כדי לוודא שכל השינויים שביצעתם יניבו את הפלט הצפוי.

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

  1. פותחים את דף ההורדות ומחפשים את מטריצת התלות של גרסת Kf שאליה משדרגים.

  2. שדרוג Tekton:

    1. פותחים את דף הגרסה של Tekton.

    2. מחפשים את הגרסה של Tekton שמופיעה במטריצת התלות של Kf.

    3. כדי לשדרג את Tekton, מריצים את הפקודה שמופיעה בכותרת Installation one-liner (התקנה בשורה אחת).

  3. שדרוג Cloud Service Mesh:

    1. פותחים את מדריך השדרוג של Cloud Service Mesh.

    2. בתפריט הנפתח של הגרסה, בוחרים את הגרסה של Cloud Service Mesh שמופיעה במטריצת התלות של Kf.

    3. פועלים לפי ההוראות במדריך לשדרוג ASM.

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

  1. מתקינים את רכיבי Kf המשודרגים באמצעות הגדרת הגרסה ששונתה:

    kubectl apply -f kf-release.yaml
  2. מריצים את הפקודה doctor כדי לוודא שהגרסה החדשה שהותקנה תקינה:

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

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

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

  3. מחליפים את ה-CLI הקיים kf במערכת ב-CLI kf-next.

    chmod +x kf-next
    mv kf-next $(which kf)
  4. משווים בין הקובץ 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