שדרוג Apigee Hybrid לגרסה 1.8

ההליך זהה לשדרוג גרסה משנית (לדוגמה, מגרסה 1.7 לגרסה 1.8) ולשדרוג גרסת תיקון (לדוגמה, מגרסה 1.8.0 לגרסה 1.8.8).

אם אתם משדרגים מ-Apigee Hybrid גרסה 1.6 או גרסה ישנה יותר, אתם צריכים לשדרג קודם לגרסה 1.7 לפני שתשדרגו לגרסה 1.8.8. אפשר לעיין בהוראות בנושא שדרוג Apigee Hybrid לגרסה 1.7.

אם אתם כבר משתמשים בגרסה 1.8.0 של hybrid ורוצים לעבור מ-Anthos Service Mesh אל Apigee ingress gateway, תוכלו לעיין במאמר מעבר אל Apigee ingress gateway.

חדש: שער כניסה של Apigee

החל מגרסה 1.8, ‏ Apigee Hybrid מציע תכונה חדשה לניהול שער הכניסה להתקנה ההיברידית שלכם, Apigee Ingress Gateway. ‫Anthos Service Mesh כבר לא מהווה דרישה מוקדמת להתקנה היברידית. עם שער הכניסה של Apigee, ‏ Apigee יפסיק לספק הגדרות ניתוב ל-Anthos Service Mesh. אחרי השדרוג, צריך להעביר את התנועה אל שער הכניסה החדש של Apigee לפני שמתחילים להשתמש בתכונה.

‫Apigee משתמש בקבוצת משנה קטנה של תכונות Anthos Service Mesh לשער הכניסה. החל מגרסה 1.8 של Apigee Hybrid,‏ Apigee Hybrid כולל שער כניסה שמותקן ומשודרג כחלק משדרוגים של Apigee Hybrid. לכן, לא צריך לצבור מומחיות ב-Anthos Service Mesh כדי להתקין, לשדרג ולנהל את Apigee hybrid. בעיות שקשורות לגרסאות של שער הכניסה ולתאימות שלהן למהדורות של Apigee Hybrid מטופלות באופן אוטומטי.

שני תרחישים להעברה:

  • העברה בין כמה אשכולות או בין כמה אזורים (מומלץ):

    לפני שמשתמשים ב-Ingress חדש ל-Apigee, צריך להפנות את כל התנועה לאשכול או לאזור אחר מהאשכול שמבצעים ממנו את ההעברה. כך יהיה לכם זמן לבדוק אם שער ה-Ingress החדש של Apigee פועל כמצופה. לאחר מכן, אפשר להפנות את התנועה בחזרה לאשכול המשודרג.

  • שדרוג במקום (לא מומלץ בסביבות ייצור):

    במהלך השדרוג, Apigee יפעיל את שער הכניסה החדש עם כתובת IP שתציינו. אחרי זה תוכלו לבדוק אם שער הכניסה החדש של Apigee פועל כמו שצריך, ואז להעביר את התנועה לשער הכניסה החדש. יכול להיות שיהיה זמן השבתה במהלך השדרוג הזה.

כשמשדרגים את Apigee Hybrid לגרסה 1.8, צריך להגדיר את שער הכניסה של Apigee בקובץ ההחלפות. אחרי השדרוג, אתם קובעים באיזה סוג של שער כניסה ישתמשו האשכולות שלכם. לשם כך, אתם מפנים את רשומות ה-A או ה-CNAME ברשם אל כתובת ה-IP של שער הכניסה של Apigee או של Anthos Service Mesh.

סקירה כללית על שדרוג לגרסה 1.8.8

ההליכים לשדרוג Apigee hybrid מאורגנים בקטעים הבאים:

  1. הכנות לשדרוג
  2. מתקינים את גרסת זמן הריצה ההיברידית 1.8.8.
  3. בוחרים אחת מהאפשרויות הבאות עבור שער הכניסה:

דרישות מוקדמות

ההוראות לשדרוג מניחות שיש לכם את Apigee hybrid בגרסה 1.7.x או בגרסת תיקון קודמת של גרסה 1.8.x, ואתם רוצים לשדרג אותה לגרסה 1.8.8. אם אתם מעדכנים מגרסה קודמת, כדאי לעיין בהוראות שדרוג Apigee Hybrid לגרסה 1.7.

אם אתם מעדיפים להמשיך להשתמש ב-Anthos Service Mesh, אתם צריכים לוודא ששדרגתם את Anthos Service Mesh לגרסה נתמכת. בטבלה פלטפורמות נתמכות מפורטות הגרסאות הנתמכות של Anthos Service Mesh.

הכנה לשדרוג לגרסה 1.8

  1. בהוראות האלה נעשה שימוש במשתנה הסביבה APIGEECTL_HOME עבור הספרייה במערכת הקבצים שבה התקנתם את apigeectl. אם צריך, משנים את הספרייה לספרייה apigeectl ומגדירים את המשתנה באמצעות הפקודה הבאה:

    Linux

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    Mac OS

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    Windows

    set APIGEECTL_HOME=%CD%
    echo %APIGEECTL_HOME%
  2. יוצרים עותק גיבוי של ספריית $APIGEECTL_HOME/ בגרסה 1.7. לדוגמה:
    tar -czvf $APIGEECTL_HOME/../apigeectl-v1.7-backup.tar.gz $APIGEECTL_HOME
  3. מגבים את מסד הנתונים של Cassandra לפי ההוראות במאמר בנושא גיבוי ושחזור של Cassandra

מוסיפים את התפקיד Cloud Trace Agent לחשבון השירות של זמן הריצה של Apigee. (אופציונלי)

אופציונלי: אם אתם מתכננים להשתמש ב-Cloud Trace ולא ביצעתם את השלב הזה בהתקנת hybrid v1.7, ודאו שלחשבון השירות שלכם בשביל שירותי זמן הריצה של Apigee יש את תפקיד Google‏ Cloud Trace Agent. (roles/cloudtrace.agent).

בסביבות ייצור, זה בדרך כלל חשבון השירות apigee-runtime. בסביבות שאינן סביבות ייצור, זה בדרך כלל apigee-non-prod חשבון השירות.

אפשר להוסיף את התפקיד בממשק המשתמש של מסוף Cloud > ‏IAM ואדמין > חשבונות שירות או באמצעות הפקודות הבאות:

  1. כדי לקבל את כתובת האימייל של חשבון השירות, מריצים את הפקודה הבאה:

    ייצור

    gcloud iam service-accounts list --filter "apigee-runtime"

    אם הוא תואם לדפוס apigee-runtime@$ORG_NAME.iam.gserviceaccount.com, אפשר להשתמש בדפוס הזה בשלב הבא.

    Non-Prod

    gcloud iam service-accounts list --filter "apigee-non-prod"

    אם הוא תואם לדפוס apigee-non-prod@$ORG_NAME.iam.gserviceaccount.com, אפשר להשתמש בדפוס הזה בשלב הבא.

  2. מקצים לחשבון השירות את התפקיד Cloud Trace Agent:

    ייצור

    gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member="serviceAccount:apigee-runtime@$PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/cloudtrace.agent"

    Non-Prod

    gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/cloudtrace.agent"

    דוגמה

    gcloud projects add-iam-policy-binding hybrid-example-project \
        --member="serviceAccount:apigee-runtime@hybrid-example-project.iam.gserviceaccount.com" \
        --role="roles/cloudtrace.agent"

    כאשר: $PROJECT_ID הוא השם של הפרויקט בענן של Google שבו מותקן Apigee Hybrid.

הכנה להתקנה של שער כניסה של Apigee

כדי להתקין את שער הכניסה של Apigee כחלק מהשדרוג. צריך להוסיף את המאפיין ingressGateways הבא לקובץ ההגדרות שמוגדרות מחדש.

תחביר

ingressGateways:
- name: INGRESS_NAME
  replicaCountMin: REPLICAS_MIN
  replicaCountMax: REPLICAS_MAX
  resources:
    requests:
      cpu: CPU_COUNT_REQ
      memory: MEMORY_REQ
    limits:
      cpu: CPU_COUNT_LIMIT
      memory: MEMORY_LIMIT
  svcAnnotations:  # optional. See Known issue 243599452.
    SVC_ANNOTATIONS_KEY: SVC_ANNOTATIONS_VALUE
  svcLoadBalancerIP: SVC_LOAD_BALANCER_IP # optional

דוגמה

ingressGateways:
- name: prod1
  replicaCountMin: 2
  replicaCountMax: 100
  resources:
    requests:
      cpu: 1
      memory: 1Gi
    limits:
      cpu: 2
      memory: 2Gi 
  • INGRESS_NAME הוא שם הפריסה של ה-ingress. אפשר לבחור כל שם שעומד בדרישות הבאות:
    • האורך המקסימלי הוא 17 תווים
    • השם יכול להכיל רק תווים אלפאנומריים באותיות קטנות, '-' או '.'
    • מתחילים בתו אלפאנומרי
    • התו האחרון חייב להיות אלפאנומרי

    מידע נוסף זמין במאמר ingressGateways[].name בנושא מאפייני הגדרות.

  • REPLICAS_MIN ו-REPLICAS_MAX הם המספרים המינימלי והמקסימלי של העותקים המשוכפלים של שער הכניסה של Apigee בהתקנה. למידע נוסף ולהגדרות ברירת המחדל, אפשר לעיין ב-ingressGateways[].replicaCountMin וב-ingressGateways[].replicaCountMax בהפניה למאפייני ההגדרה.
  • CPU_COUNT_REQ ו-MEMORY_REQ הם בקשות לשימוש במעבד ובזיכרון לכל עותק של שער הכניסה של Apigee בהתקנה.

    מידע נוסף והגדרות ברירת מחדל זמינים במאמרים ingressGateways[].resources.requests.cpu וingressGateways[].resources.requests.memory בהפניה למאפיין Configuration.

  • CPU_COUNT_LIMIT ו-MEMORY_LIMIT המגבלות המקסימליות של יחידת העיבוד המרכזית (CPU) והזיכרון לכל עותק משוכפל של שער הכניסה של Apigee בהתקנה.

    מידע נוסף והגדרות ברירת מחדל זמינים במאמרים ingressGateways[].resources.limits.cpu וingressGateways[].resources.limits.memory בהפניה למאפיין Configuration.

  • SVC_ANNOTATIONS_KEY ו-SVC_ANNOTATIONS_VALUE (אופציונלי):

    זהו צמד מפתח/ערך שמספק אנוטציות לשירות ברירת המחדל של ה-ingress. ההערות משמשות את פלטפורמת הענן כדי לעזור בהגדרת ההתקנה ההיברידית, למשל הגדרת סוג מאזן העומסים כפנימי או חיצוני. לדוגמה:

    ingressGateways:
      svcAnnotations:
        networking.gke.io/load-balancer-type: "Internal"

    ההערות משתנות מפלטפורמה לפלטפורמה. במאמרי העזרה של הפלטפורמה מפורטות ההערות הנדרשות והמומלצות.

    מידע נוסף על ingressGateways[].svcAnnotations מופיע במאמר בנושא מאפייני הגדרות.
  • SVC_LOAD_BALANCER_IP (אופציונלי) מאפשר להקצות כתובת IP סטטית למאזן העומסים. בפלטפורמות שתומכות בהגדרת כתובת ה-IP של מאזן העומסים, מאזן העומסים ייווצר עם כתובת ה-IP הזו. בפלטפורמות שלא מאפשרות לציין את כתובת ה-IP של מאזן העומסים, המאפיין הזה מושבת.

    אם לא הקציתם כתובת IP סטטית למאזן העומסים, אל תכללו את המאפיין הזה בקובץ ההחלפות.

    מידע נוסף על ingressGateways[].svcLoadBalancerIP

ביצוע שינויים נוספים בקובץ ההחלפות כדי להפעיל או להשבית תכונות אופציונליות בגרסה 1.8

כדי להפעיל תכונות חדשות ב-hybrid v1.8, מוסיפים את המאפיינים הבאים לקובץ overrides.yaml: התכונות האלה הן אופציונליות.

  • התכונה UDCA ברמת הארגון מופעלת עכשיו כברירת מחדל. שימוש בפריסת UDCA יחידה לטיפול בתנועה בכל הסביבות מונע ניצול חלקי של פודים של UDCA ומגדיל את הזמינות של משאבי צמתים לרכיבים אחרים של Apigee. התכונה UDCA ברמת הארגון משתמשת בחשבון שירות יחיד לכל הסביבות, apigee-udca.

    אם אתם משתמשים בחשבונות שירות שונים ל-UDCA בסביבות שונות, שימו לב שעכשיו המערכת תשתמש בחשבון השירות שצוין ברמת הארגון בקובץ ההחלפות עם udca:serviceAccountPath, במקום בחשבונות שצוינו ברמת הסביבה עם envs:udca:serviceAccountPath.

    ‫Apigee Hybrid גרסה 1.8 תומכת ב-UDCA בהיקף הסביבה. כדי לשמור על UDCA לכל סביבה, מגדירים את הערך orgScopedUDCA: false.

    מידע נוסף זמין במאמר בנושא orgScopedUDCA בהפניה למאפיינים של מערך הגדרות אישיות.

  • מפעילים את האפשרות validateOrg כדי לדרוש אימות קפדני של הארגון והסביבה ב-Apigee, ולוודא שהם פעילים ועובדים עם הפרויקט ב-Google Cloud Platform שצוין בקובץ overrides.
    validateOrg: true

    מידע נוסף זמין במאמר validateOrg בנושא מאפייני הגדרות אישיות.

התקנת זמן הריצה של Apigee Hybrid 1.8.8

  1. חשוב לוודא שאתם נמצאים בספריית הבסיס של ההיברידי (הספרייה הראשית שבה נמצא קובץ ההפעלה apigeectl):
    cd $APIGEECTL_HOME/..
  2. מורידים את חבילת הגרסה למערכת ההפעלה באמצעות הפקודה הבאה. חשוב לבחור את הפלטפורמה שלכם בטבלה הבאה:

    Linux

    Linux 64 bit:

    curl -LO \
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.8.8/apigeectl_linux_64.tar.gz

    Mac OS

    Mac 64 bit:

    curl -LO \
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.8.8/apigeectl_mac_64.tar.gz

    Windows

    Windows 64 bit:

    curl -LO ^
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.8.8/apigeectl_windows_64.zip
  3. משנים את השם של ספריית apigeectl/ הנוכחית לשם של ספריית גיבוי. לדוגמה:

    Linux

    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.7/

    Mac OS

    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.7/ 

    Windows

    rename %APIGEECTL_HOME% %APIGEECTL_HOME%-v1.7 
  4. מחלצים את תוכן קובץ ה-gzip שהורד אל ספריית הבסיס ההיברידית. ספריית הבסיס ההיברידית היא הספרייה שבה נמצאת הספרייה apigeectl-v1.7 ששמה שונה:

    Linux

    tar xvzf filename.tar.gz -C ./

    Mac OS

    tar xvzf filename.tar.gz -C ./

    Windows

    tar xvzf filename.zip -C ./
  5. כברירת מחדל, התוכן של קובץ ה-tar מורחב לספרייה עם הגרסה והפלטפורמה בשם שלה. לדוגמה: ./apigeectl_1.8.8-xxxxxxx_linux_64. משנים את שם הספרייה ל-apigeectl באמצעות הפקודה הבאה:

    Linux

    mv apigeectl_1.8.8-xxxxxxx_linux_64 apigeectl

    Mac OS

    mv apigeectl_1.8.8-xxxxxxx_mac_64 apigeectl

    Windows

    rename apigeectl_1.8.8-xxxxxxx_windows_64 apigeectl
  6. עוברים לספרייה apigeectl:
    cd ./apigeectl

    הספרייה הזו היא ספריית הבית apigeectl. זה המקום שבו נמצאת הפקודה להפעלה apigeectl.

  7. בהוראות האלה נעשה שימוש במשתנה הסביבה $APIGEECTL_HOME עבור הספרייה במערכת הקבצים שבה מותקן כלי השירות apigeectl. אם צריך, משנים את הספרייה לספרייה apigeectl ומגדירים את המשתנה באמצעות הפקודה הבאה:

    Linux

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    Mac OS

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    Windows

    set APIGEECTL_HOME=%CD%
    echo %APIGEECTL_HOME%
  8. כדי לוודא את הגרסה של apigeectl, מריצים את הפקודה version:
    ./apigeectl version
    Version: 1.8.8
  9. עוברים לספרייה hybrid-base-directory/hybrid-files. בספרייה hybrid-files נמצאים קובצי תצורה כמו קובץ ההחלפות, האישורים וחשבונות השירות. לדוגמה:
    cd $APIGEECTL_HOME/../hybrid-files
  10. מריצים את הפקודה הבאה כדי לוודא שההקשר הנכון מוגדר ל-kubectl. ההקשר הנוכחי צריך להיות מוגדר לאשכול שבו משדרגים את Apigee hybrid.
    kubectl config get-contexts | grep \*
  11. בספרייה hybrid-files:
    1. מעדכנים את הקישורים הסמליים הבאים לכתובת $APIGEECTL_HOME. הקישורים האלה מאפשרים להריץ את הפקודה apigeectl שהותקנה לאחרונה מתוך הספרייה hybrid-files:
      ln -nfs $APIGEECTL_HOME/tools tools
      ln -nfs $APIGEECTL_HOME/config config
      ln -nfs $APIGEECTL_HOME/templates templates
      ln -nfs $APIGEECTL_HOME/plugins plugins
    2. כדי לוודא שהקישורים הסמליים נוצרו בצורה נכונה, מריצים את הפקודה הבאה ומוודאים שנתיבי הקישורים מצביעים על המיקומים הנכונים:
      ls -l | grep ^l
  12. מבצעים הפעלה ללא שינוי כדי לבדוק אם יש שגיאות:
    ${APIGEECTL_HOME}/apigeectl init -f OVERRIDES_FILE --dry-run=client

    כאשר OVERRIDES_FILE הוא שם קובץ ההגדרות שלכם, למשל ./overrides/overrides.yaml.

  13. אם אין שגיאות, מפעילים את hybrid 1.8.8. הפקודה הזו גם מתקינה ומגדירה את שער הכניסה של Apigee:
    $APIGEECTL_HOME/apigeectl init -f OVERRIDES_FILE
  14. בודקים את סטטוס ההפעלה:
    $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE

    אם הפעולה בוצעה ללא שגיאות, הפלט ייראה כך: All containers ready.

    כדי לבדוק את הסטטוס של ApigeeDataStore, אפשר להריץ גם את הפקודה הבאה:

    kubectl describe apigeeds -n apigee

    בפלט, מחפשים את State: running.

  15. כדי לבדוק אם יש שגיאות, מריצים הרצה יבשה של הפקודה apply באמצעות הדגל --dry-run:
    $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --dry-run=client
  16. אם אין שגיאות, מחילים את שינויי ברירת המחדל. בוחרים את ההוראות לסביבות ייצור או לסביבות שאינן סביבות ייצור, בהתאם להתקנה.

    ייצור

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

    1. חשוב לוודא שאתם נמצאים בספרייה hybrid-files.
    2. מחילים את ההחלפות כדי לשדרג את Cassandra:
      $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --datastore
    3. השלמת הבדיקה:
      $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE

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

    4. מחילים את ההחלפות כדי לשדרג את רכיבי הטלמטריה ובודקים שהשדרוג הושלם:
      $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --telemetry
      $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
    5. מפעילים את רכיבי Redis:
      $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --redis
    6. מחילים את השינויים כדי לשדרג את הרכיבים ברמת הארגון (MART, ‏ Watcher ו-Apigee Connect) ובודקים שהשדרוג הושלם:
      $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --org
      $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
    7. מחילים את השינויים כדי לשדרג את הסביבות. יש שתי אפשרויות:
      • סביבה אחרי סביבה: מחילים את השינויים על סביבה אחת בכל פעם ובודקים שהפעולה הושלמה. חוזרים על השלב הזה לכל סביבה:
        $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --env ENV_NAME
        $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE

        כאשר ENV_NAME הוא שם הסביבה שמשדרגים.

      • כל הסביבות בבת אחת: אפשר להחיל את השינויים על כל הסביבות בבת אחת ולבדוק שהפעולה הושלמה:
        $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --all-envs
        $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
    8. מחילים את ההחלפות כדי לשדרג את הרכיבים של virtualhosts ובודקים שהשדרוג הושלם:
      $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --settings virtualhosts
      $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE

    Non-prod

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

    1. חשוב לוודא שאתם נמצאים בספרייה hybrid-files.
    2. $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE
    3. בודקים את הסטטוס:
      $APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE

שדרוג גרסת Kubernetes

משדרגים את פלטפורמת Kubernetes לגרסאות שנתמכות ב-hybrid 1.8. אם אתם צריכים עזרה, תוכלו לעיין במסמכי התיעוד של הפלטפורמה.

העברת תעבורה מ-Anthos Service Mesh אל שער הכניסה של Apigee

כדי להעביר את התנועה לשער כניסה של Apigee:

  1. חשיפת שער הכניסה של Apigee. פועלים לפי השלבים שמפורטים במאמר בנושא חשיפת שער כניסה של Apigee.
  2. כדי לבדוק את שער הכניסה החדש, צריך להתקשר לפרוקסי. מומלץ לבדוק את כל הפרוקסיים החשובים שפרסתם כרגע.
  3. כדי להעביר את התנועה, צריך לעדכן את רשומות ה-DNS כך שיפנו לכתובת ה-IP של שער הכניסה החדש של Apigee. בהתאם לספק ה-DNS שלכם, יכול להיות שתוכלו להעביר את התעבורה בהדרגה לנקודת הקצה החדשה. טיפ: אפשר למצוא את כתובת ה-IP החיצונית של שער הכניסה של Apigee באמצעות הפקודה הבאה:
    kubectl get svc -n apigee -l app=apigee-ingressgateway

    הפלט אמור להיראות כך:

    NAME                                        TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)                                      AGE
    apigee-ingressgateway-prod-hybrid-37a39bd   LoadBalancer   192.0.2.123   233.252.0.123   15021:32049/TCP,80:31624/TCP,443:30723/TCP   16h
  4. כדי לוודא שכל התנועה בזמן הריצה פועלת, צריך לעקוב אחרי לוחות הבקרה. רק אם הכול פועל כצפוי, ממשיכים לשלב הבא. חשוב לוודא שלא עוברת תנועה דרך שער הכניסה הישן (Anthos Service Mesh), כי יכול להיות שעדכון ה-DNS יתבצע לאט בגלל שמירת ה-DNS במטמון.
  5. כדי להפסיק את אספקת ההגדרות מ-Apigee ל-Anthos Service Mesh, פועלים לפי השלבים במאמר הפסקת אספקת ההגדרות ל-ASM במדריך בנושא ניהול שער הכניסה של Apigee.
  6. בודקים מחדש את תעבורת הנתונים של proxy ל-API ועוקבים אחריה.
  7. פועלים לפי ההוראות שבתיעוד של Anthos Service Mesh כדי להסיר את Anthos Service Mesh מהאשכול.

שדרוג Anthos Service Mesh לגרסה 1.15

מבצעים את הפעולות באמצעות מסמכי התיעוד של Anthos Service Mesh שמתאימים לפלטפורמה שלכם:

ההוראות להתקנה ולהגדרה של Anthos Service Mesh משתנות בהתאם לפלטפורמה. הפלטפורמות מחולקות לקטגוריות הבאות:

  • GKE: אשכולות Google Kubernetes Engine שפועלים ב-Google Cloud.
  • מחוץ ל-Google Cloud: אשכולות Anthos שפועלים ב:
    • אשכולות Anthos ב-VMware‏ (GKE On-Prem)
    • Anthos בשרת פיזי
    • אשכולות Anthos ב-AWS
    • Amazon EKS
  • פלטפורמות אחרות של Kubernetes: אשכולות תואמים שנוצרו ופועלים ב:
    • AKS
    • EKS
    • OpenShift

GKE

רצף הפעולות לשדרוג ל-Anthos Service Mesh גרסה 1.17.8 בהתקנה היברידית:

  1. מתכוננים לשדרוג.
  2. מתקינים את הגרסה החדשה של Anthos Service Mesh.
  3. מוחקים מההתקנה הנוכחית את הפריסות, השירותים וה-webhook של הגרסה הקודמת של Anthos Service Mesh.
  4. שדרגו את השערים והגדירו את ה-webhook החדשים.

הכנה לשדרוג Anthos Service Mesh לגרסה 1.17.8

.
  1. בודקים את הדרישות במאמר שדרוג Anthos Service Mesh, אבל לא מבצעים את השדרוג עדיין.
  2. לפני שמתקינים את הגרסה החדשה, צריך לקבוע את הגרסה הנוכחית. תצטרכו את המידע הזה כדי למחוק מההתקנה הנוכחית את הפריסות, השירותים וה-webhook של הגרסה הקודמת של Anthos Service Mesh. כדי לאחסן את הגרסה הנוכחית של istiod במשתנה סביבתי, משתמשים בפקודה הבאה:
    export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}')
    echo $DELETE_REV

    הפלט אמור להיראות בערך כך: 1.16

  3. יוצרים קובץ overlay.yaml חדש או מוודאים שהקובץ overlay.yaml הקיים מכיל את התוכן הבא:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      components:
        ingressGateways:
        - name: istio-ingressgateway
          enabled: true
          k8s:
            nodeSelector:
              # default node selector, if different or not using node selectors, change accordingly.
              cloud.google.com/gke-nodepool: apigee-runtime
            resources:
              requests:
                cpu: 1000m
            service:
              type: LoadBalancer
              loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out.
              ports:
                - name: http-status-port
                  port: 15021
                - name: http2
                  port: 80
                  targetPort: 8080
                - name: https
                  port: 443
                  targetPort: 8443
      meshConfig:
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
  4. פועלים לפי ההוראות בקטעים הבאים במסמכי התיעוד של Anthos Service Mesh:
    1. הורדה של asmcli
    2. הענקת הרשאות אדמין של אשכול
    3. אימות הפרויקט והאשכול
    4. שדרוג עם תכונות אופציונליות עוצרים לפני שמתחילים את הקטע 'שדרוג שערים'.
  5. מעבר למישור הבקרה החדש:
    1. קבלת תווית הגרסה שמופיעה ב-istiod:
      kubectl get pod -n istio-system -L istio.io/rev

      הפלט של הפקודה אמור להיראות כך:

          NAME                                  READY  STATUS  RESTARTS   AGE  REV
          istiod-asm-Cloud Service Mesh 1.17.8-asm.4-67998f4b55-lrzpz    1/1    Running  0         68m  1.16.7-asm
          istiod-asm-Cloud Service Mesh 1.17.8-asm.4-67998f4b55-r76kr    1/1    Running  0         68m  1.16.7-asm
          istiod-Cloud Service Mesh 1.16.7-asm.1-1-5cd96f88f6-n7tj9      1/1    Running  0         27s  asm-1178-1
          istiod-Cloud Service Mesh 1.16.7-asm.1-1-5cd96f88f6-wm68b      1/1    Running  0         27s  asm-1178-1
    2. מקצים את התווית של הגרסה החדשה למשתנה סביבה.

      בפלט, בעמודה REV, מציינים את הערך של תווית הגרסה החדשה. בדוגמה הזו, הערך הוא asm-1178-1

      export UPGRADE_REV="REVISION_LABEL"
    3. מוסיפים את תווית הגרסה למרחב השמות istio-system ומסירים את התווית istio-injection (אם היא קיימת) באמצעות הפקודה הבאה.
      kubectl label namespace istio-system istio.io/rev=$UPGRADE_REV istio-injection- --overwrite

      אם מופיע "istio-injection not found" בפלט, אפשר להתעלם ממנו. כלומר, במרחב השמות לא הייתה קודם התווית istio-injection. ההזרקה האוטומטית נכשלת אם במרחב השמות יש גם את התווית istio-injection וגם את תווית הגרסה, ולכן כל הפקודות kubectl label בתיעוד של Anthos Service Mesh כוללות הסרה של התווית istio-injection.

    4. מפעילים מחדש את ה-Pods כדי להפעיל מחדש את ההזרקה.
      kubectl rollout restart deployment -n istio-system
    5. בודקים את האפליקציה כדי לוודא שעומסי העבודה פועלים בצורה תקינה.
    6. אם יש לכם עומסי עבודה במרחבי שמות אחרים, חוזרים על השלבים כדי לתייג את מרחב השמות ולהפעיל מחדש את ה-Pods.
  6. מחיקת הגרסאות הקודמות:
    1. עוברים לספרייה שבה התקנתם את asmcli.
    2. מאחסנים את ספריית הפלט של התקנת Anthos Service Mesh במשתנה הסביבה DIR_PATH. זו אותה ספרייה שציינתם בהליך שדרוג עם תכונות אופציונליות.
      export DIR_PATH=OUTPUT_DIR
    3. יוצרים סקריפט מעטפת שמכיל את הפקודות הבאות:
      #!/bin/bash
      
      set -ex
      
      if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then
        kubectl apply -f ${DIR_PATH}/asm/istio/istiod-service.yaml
        kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true
      fi
      
    4. מריצים את הסקריפט כדי למחוק את הגרסאות הקודמות.

מחוץ ל-Google Cloud

ההוראות האלה מתייחסות לשדרוג של Anthos Service Mesh ב:

  • אשכולות Anthos ב-VMware‏ (GKE On-Prem)
  • Anthos בשרת פיזי
  • אשכולות Anthos ב-AWS
  • Amazon EKS

רצף הפעולות לשדרוג ל-Anthos Service Mesh גרסה 1.17.8 בהתקנה היברידית:

  1. מתכוננים לשדרוג.
  2. מתקינים את הגרסה החדשה של Anthos Service Mesh.
  3. מוחקים מההתקנה הנוכחית את הפריסות, השירותים וה-webhook של הגרסה הקודמת של Anthos Service Mesh.
  4. שדרגו את השערים והגדירו את ה-webhook החדשים.

הכנה לשדרוג Anthos Service Mesh לגרסה 1.17.8

.
  1. בודקים את הדרישות במאמר שדרוג Anthos Service Mesh, אבל לא מבצעים את השדרוג עדיין.
  2. לפני שמתקינים את הגרסה החדשה, צריך לקבוע את הגרסה הנוכחית. תצטרכו את המידע הזה כדי למחוק מההתקנה הנוכחית את הפריסות, השירותים וה-webhook של הגרסה הקודמת של Anthos Service Mesh. כדי לאחסן את הגרסה הנוכחית של istiod במשתנה סביבתי, משתמשים בפקודה הבאה:
    export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}')
    echo $DELETE_REV

    הפלט אמור להיראות בערך כך: 1.16

  3. יוצרים קובץ overlay.yaml חדש או מוודאים שהקובץ overlay.yaml הקיים מכיל את התוכן הבא:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:  
      components:
        ingressGateways:
        - name: istio-ingressgateway
          enabled: true
          k8s:
            nodeSelector:
              # default node selector, if different or not using node selectors, change accordingly.
              cloud.google.com/gke-nodepool: apigee-runtime
            resources:
              requests:
                cpu: 1000m
            service:
              type: LoadBalancer
              loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out.
              ports:
                - name: http-status-port
                  port: 15021
                - name: http2
                  port: 80
                  targetPort: 8080
                - name: https
                  port: 443
                  targetPort: 8443
      values:
        gateways:
          istio-ingressgateway:
            runAsRoot: true
    
      meshConfig:
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
  4. פועלים לפי ההוראות בקטעים הבאים במסמכי התיעוד של Anthos Service Mesh:
    1. הורדה של asmcli
    2. הענקת הרשאות אדמין של אשכול
    3. אימות הפרויקט והאשכול
    4. שדרוג עם תכונות אופציונליות עוצרים לפני שמתחילים את הקטע 'שדרוג שערים'.
  5. מעבר למישור הבקרה החדש:
    1. קבלת תווית הגרסה שמופיעה ב-istiod:
      kubectl get pod -n istio-system -L istio.io/rev

      הפלט של הפקודה אמור להיראות כך:

          NAME                                  READY  STATUS  RESTARTS   AGE  REV
          istiod-asm-Cloud Service Mesh 1.17.8-asm.4-67998f4b55-lrzpz    1/1    Running  0         68m  1.16.7-asm
          istiod-asm-Cloud Service Mesh 1.17.8-asm.4-67998f4b55-r76kr    1/1    Running  0         68m  1.16.7-asm
          istiod-Cloud Service Mesh 1.16.7-asm.1-1-5cd96f88f6-n7tj9      1/1    Running  0         27s  asm-1178-1
          istiod-Cloud Service Mesh 1.16.7-asm.1-1-5cd96f88f6-wm68b      1/1    Running  0         27s  asm-1178-1
    2. מקצים את התווית של הגרסה החדשה למשתנה סביבה.

      בפלט, בעמודה REV, מציינים את הערך של תווית הגרסה החדשה. בדוגמה הזו, הערך הוא asm-1178-1

      export UPGRADE_REV="REVISION_LABEL"
    3. מוסיפים את תווית הגרסה למרחב השמות istio-system ומסירים את התווית istio-injection (אם היא קיימת) באמצעות הפקודה הבאה.
      kubectl label namespace istio-system istio.io/rev=$UPGRADE_REV istio-injection- --overwrite

      אם מופיע "istio-injection not found" בפלט, אפשר להתעלם ממנו. כלומר, במרחב השמות לא הייתה קודם התווית istio-injection. ההזרקה האוטומטית נכשלת אם במרחב השמות יש גם את התווית istio-injection וגם את תווית הגרסה, ולכן כל הפקודות kubectl label בתיעוד של Anthos Service Mesh כוללות הסרה של התווית istio-injection.

    4. מפעילים מחדש את ה-Pods כדי להפעיל מחדש את ההזרקה.
      kubectl rollout restart deployment -n istio-system
    5. בודקים את האפליקציה כדי לוודא שעומסי העבודה פועלים בצורה תקינה.
    6. אם יש לכם עומסי עבודה במרחבי שמות אחרים, חוזרים על השלבים כדי לתייג את מרחב השמות ולהפעיל מחדש את ה-Pods.
  6. מחיקת הגרסאות הקודמות:
    1. עוברים לספרייה שבה התקנתם את asmcli.
    2. מאחסנים את ספריית הפלט של התקנת Anthos Service Mesh במשתנה הסביבה DIR_PATH. זו אותה ספרייה שציינתם בהליך שדרוג עם תכונות אופציונליות.
      export DIR_PATH=OUTPUT_DIR
    3. יוצרים סקריפט מעטפת שמכיל את הפקודות הבאות:
      #!/bin/bash
      
      set -ex
      
      if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then
        kubectl apply -f ${DIR_PATH}/asm/istio/istiod-service.yaml
        kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true
      fi
      
    4. מריצים את הסקריפט כדי למחוק את הגרסאות הקודמות.

AKS / EKS

התהליך שמתואר בהוראות האלה לשדרוג Anthos Service Mesh (Anthos Service Mesh) מגרסה 1.17.8-asm.4-distroless באשכולות שמצורפים ל-Anthos זהה לתהליך של התקנה חדשה.

הכנות להתקנת Anthos Service Mesh

  1. לפני שמתקינים את הגרסה החדשה, צריך לקבוע את הגרסה הנוכחית. תצטרכו את המידע הזה כדי למחוק את ה-webhook של האימות ואת ה-webhook של השינוי מההתקנה הנוכחית של Anthos Service Mesh. משתמשים בפקודה הבאה כדי לאחסן את הגרסה הנוכחית של istiod במשתנה סביבתי:
    export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}')
    echo $DELETE_REV

    הפלט אמור להיראות בערך כך: 1.16

  2. Linux

  3. מורידים את קובץ ההתקנה של Anthos Service Mesh לספריית העבודה הנוכחית:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-linux-amd64.tar.gz
  4. מורידים את קובץ החתימה ומשתמשים ב-OpenSSL כדי לאמת את החתימה:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature 1.17.8-asm.4-distroless-linux-amd64.tar.gz.1.sig 1.17.8-asm.4-distroless.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  5. מחלצים את התוכן של הקובץ למיקום כלשהו במערכת הקבצים שלכם. לדוגמה, כדי לחלץ את התוכן לספריית העבודה הנוכחית:
    tar xzf 1.17.8-asm.4-distroless-linux-amd64.tar.gz

    הפקודה יוצרת ספריית התקנה בספריית העבודה הנוכחית בשם 1.17.8-asm.4-distroless, שמכילה:

    • אפליקציות לדוגמה בספרייה samples.
    • כלי שורת הפקודה שמשמש להתקנת Anthos Service Mesh נמצא בספרייה bin.istioctl
    • פרופילי ההגדרות של Anthos Service Mesh נמצאים בספרייה manifests/profiles.
  6. מוודאים שאתם נמצאים בספריית השורש של ההתקנה של Anthos Service Mesh:
    cd 1.17.8-asm.4-distroless
  7. כדי שיהיה לכם נוח, כדאי להוסיף את הכלים בספרייה /bin אל PATH:
    export PATH=$PWD/bin:$PATH
  8. Mac OS

  9. מורידים את קובץ ההתקנה של Anthos Service Mesh לספריית העבודה הנוכחית:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-osx.tar.gz
  10. מורידים את קובץ החתימה ומשתמשים ב-OpenSSL כדי לאמת את החתימה:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature 1.17.8-asm.4-distroless-osx.tar.gz.1.sig 1.17.8-asm.4-distroless.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  11. מחלצים את התוכן של הקובץ למיקום כלשהו במערכת הקבצים שלכם. לדוגמה, כדי לחלץ את התוכן לספריית העבודה הנוכחית:
    tar xzf 1.17.8-asm.4-distroless-osx.tar.gz

    הפקודה יוצרת ספריית התקנה בספריית העבודה הנוכחית בשם 1.17.8-asm.4-distroless, שמכילה:

    • אפליקציות לדוגמה בספרייה samples.
    • כלי שורת הפקודה שמשמש להתקנת Anthos Service Mesh נמצא בספרייה bin.istioctl
    • פרופילי ההגדרות של Anthos Service Mesh נמצאים בספרייה manifests/profiles.
  12. מוודאים שאתם נמצאים בספריית השורש של ההתקנה של Anthos Service Mesh:
    cd 1.17.8-asm.4-distroless
  13. כדי שיהיה לכם נוח, כדאי להוסיף את הכלים בספרייה /bin אל PATH:
    export PATH=$PWD/bin:$PATH
  14. Windows

  15. מורידים את קובץ ההתקנה של Anthos Service Mesh לספריית העבודה הנוכחית:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-win.zip
  16. מורידים את קובץ החתימה ומשתמשים ב-OpenSSL כדי לאמת את החתימה:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-win.zip.1.sig
    openssl dgst -verify - -signature 1.17.8-asm.4-distroless-win.zip.1.sig 1.17.8-asm.4-distroless.win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  17. מחלצים את התוכן של הקובץ למיקום כלשהו במערכת הקבצים שלכם. לדוגמה, כדי לחלץ את התוכן לספריית העבודה הנוכחית:
    tar xzf 1.17.8-asm.4-distroless-win.zip

    הפקודה יוצרת ספריית התקנה בספריית העבודה הנוכחית בשם 1.17.8-asm.4-distroless, שמכילה:

    • אפליקציות לדוגמה בספרייה samples.
    • כלי שורת הפקודה שמשמש להתקנת Anthos Service Mesh נמצא בספרייה bin.istioctl
    • פרופילי ההגדרות של Anthos Service Mesh נמצאים בספרייה manifests\profiles.
  18. מוודאים שאתם נמצאים בספריית השורש של ההתקנה של Anthos Service Mesh:
    cd 1.17.8-asm.4-distroless
  19. כדי שיהיה לכם נוח, כדאי להוסיף את הכלים בספרייה ‎\bin לנתיב:
    set PATH=%CD%\bin:%PATH%
  20. אחרי שמתקינים את Anthos Service Mesh Istio, בודקים את הגרסה של istioctl:
    istioctl version
  21. יוצרים מרחב שמות בשם istio-system לרכיבי מישור הבקרה:
    kubectl create namespace istio-system

התקנה של Anthos Service Mesh

  1. עורכים את קובץ overlay.yaml או יוצרים קובץ חדש עם התוכן הבא:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        accessLogFile: /dev/stdout
        enableTracing: true
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
      components:
        ingressGateways:
        - name: istio-ingressgateway
          enabled: true
          k8s:
            service:
              type: LoadBalancer
              ports:
              - name: status-port
                port: 15021
                targetPort: 15021
              - name: http2
                port: 80
                targetPort: 8080
              - name: https
                port: 443
                targetPort: 8443
    
  2. מתקינים את Anthos Service Mesh עם istioctl באמצעות פרופיל asm-multicloud:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1178-1" \
        --filename overlay.yaml

    הפלט אמור להיראות כך:

    kubectl get pods -n istio-system
    NAME                                   READY   STATUS    RESTARTS   AGE
    istio-ingressgateway-88b6fd976-flgp2   1/1     Running   0          3m13s
    istio-ingressgateway-88b6fd976-p5dl9   1/1     Running   0          2m57s
    istiod-asm-1178-1-798ffb964-2ls88       1/1     Running   0          3m21s
    istiod-asm-1178-1-798ffb964-fnj8c       1/1     Running   1          3m21s

    הארגומנט --set revision מוסיף תווית של עדכון בפורמט istio.io/rev=asm-1178-1 ל-istiod. תווית התיקון משמשת את ה-webhook של מנגנון הזרקת ה-sidecar האוטומטי כדי לשייך sidecars מוזרקים לistiodתיקון מסוים. כדי להפעיל הזרקה אוטומטית של sidecar למרחב שמות, צריך להוסיף לו תווית עם revision שזהה לתווית ב-istiod.

  3. מוודאים שההתקנה הושלמה:
    kubectl get svc -n istio-system

    הפלט אמור להיראות כך:

    NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                                                                      AGE
    istio-ingressgateway   LoadBalancer   172.200.48.52    34.74.177.168   15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP   3m35s
    istiod                 ClusterIP      172.200.18.133   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        4m46s
    istiod-asm-1178-1       ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s
  4. מעבר למישור הבקרה החדש:
    1. קבלת תווית הגרסה שמופיעה ב-istiod:
      kubectl get pod -n istio-system -L istio.io/rev

      הפלט של הפקודה אמור להיראות כך:

          NAME                                  READY  STATUS  RESTARTS   AGE  REV
          istiod-asm-Cloud Service Mesh 1.17.8-asm.4-67998f4b55-lrzpz    1/1    Running  0         68m  1.16.7-asm
          istiod-asm-Cloud Service Mesh 1.17.8-asm.4-67998f4b55-r76kr    1/1    Running  0         68m  1.16.7-asm
          istiod-Cloud Service Mesh 1.16.7-asm.1-1-5cd96f88f6-n7tj9      1/1    Running  0         27s  asm-1178-1
          istiod-Cloud Service Mesh 1.16.7-asm.1-1-5cd96f88f6-wm68b      1/1    Running  0         27s  asm-1178-1
    2. מקצים את התווית של הגרסה החדשה למשתנה סביבה.

      בפלט, בעמודה REV, מציינים את הערך של תווית הגרסה החדשה. בדוגמה הזו, הערך הוא asm-1178-1

      export UPGRADE_REV="REVISION_LABEL"
    3. מוסיפים את תווית הגרסה למרחב השמות istio-system ומסירים את התווית istio-injection (אם היא קיימת) באמצעות הפקודה הבאה.
      kubectl label namespace istio-system istio.io/rev=$UPGRADE_REV istio-injection- --overwrite

      אם מופיע "istio-injection not found" בפלט, אפשר להתעלם ממנו. כלומר, במרחב השמות לא הייתה קודם התווית istio-injection. ההזרקה האוטומטית נכשלת אם במרחב השמות יש גם את התווית istio-injection וגם את תווית הגרסה, ולכן כל הפקודות kubectl label בתיעוד של Anthos Service Mesh כוללות הסרה של התווית istio-injection.

    4. מפעילים מחדש את ה-Pods כדי להפעיל מחדש את ההזרקה.
      kubectl rollout restart deployment -n istio-system
    5. בודקים את האפליקציה כדי לוודא שעומסי העבודה פועלים בצורה תקינה.
    6. אם יש לכם עומסי עבודה במרחבי שמות אחרים, חוזרים על השלבים כדי לתייג את מרחב השמות ולהפעיל מחדש את ה-Pods.
  5. מחיקת הגרסאות הקודמות:
    1. עוברים לספרייה שבה התקנתם את asmcli.
    2. יוצרים סקריפט מעטפת שמכיל את הפקודות הבאות:
      #!/bin/bash
      
      set -ex
      
      if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then
        kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true
      fi
      
    3. מריצים את הסקריפט כדי למחוק את הגרסאות הקודמות.

OpenShift

התהליך שמתואר בהוראות האלה לשדרוג Anthos Service Mesh (Anthos Service Mesh) מגרסה 1.17.8-asm.4-distroless באשכולות שמצורפים ל-Anthos זהה לתהליך של התקנה חדשה.

הכנות להתקנת Anthos Service Mesh

  1. לפני שמתקינים את הגרסה החדשה, צריך לקבוע את הגרסה הנוכחית. תצטרכו את המידע הזה כדי למחוק את ה-webhook של האימות ואת ה-webhook של השינוי מההתקנה הנוכחית של Anthos Service Mesh. משתמשים בפקודה הבאה כדי לאחסן את הגרסה הנוכחית של istiod במשתנה סביבתי:
    export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}')
    echo $DELETE_REV

    הפלט אמור להיראות בערך כך: 1.16

  2. Linux

  3. נותנים את אילוץ ההקשר הביטחוני (SCC) ‏anyuid ל-istio-system באמצעות הפקודה הבאה של OpenShift CLI ‏ (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  4. מורידים את קובץ ההתקנה של Anthos Service Mesh לספריית העבודה הנוכחית:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-linux-amd64.tar.gz
  5. מורידים את קובץ החתימה ומשתמשים ב-OpenSSL כדי לאמת את החתימה:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature 1.17.8-asm.4-distroless-linux-amd64.tar.gz.1.sig 1.17.8-asm.4-distroless.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  6. מחלצים את התוכן של הקובץ למיקום כלשהו במערכת הקבצים שלכם. לדוגמה, כדי לחלץ את התוכן לספריית העבודה הנוכחית:
    tar xzf 1.17.8-asm.4-distroless-linux-amd64.tar.gz

    הפקודה יוצרת ספריית התקנה בספריית העבודה הנוכחית בשם 1.17.8-asm.4-distroless, שמכילה:

    • אפליקציות לדוגמה בספרייה samples.
    • כלי שורת הפקודה שמשמש להתקנת Anthos Service Mesh נמצא בספרייה bin.istioctl
    • פרופילי ההגדרות של Anthos Service Mesh נמצאים בספרייה manifests/profiles.
  7. מוודאים שאתם נמצאים בספריית השורש של ההתקנה של Anthos Service Mesh:
    cd 1.17.8-asm.4-distroless
  8. כדי שיהיה לכם נוח, כדאי להוסיף את הכלים בספרייה /bin אל PATH:
    export PATH=$PWD/bin:$PATH
  9. Mac OS

  10. נותנים את אילוץ ההקשר הביטחוני (SCC) ‏anyuid ל-istio-system באמצעות הפקודה הבאה של OpenShift CLI ‏ (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  11. מורידים את קובץ ההתקנה של Anthos Service Mesh לספריית העבודה הנוכחית:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-osx.tar.gz
  12. מורידים את קובץ החתימה ומשתמשים ב-OpenSSL כדי לאמת את החתימה:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature 1.17.8-asm.4-distroless-osx.tar.gz.1.sig 1.17.8-asm.4-distroless.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  13. מחלצים את התוכן של הקובץ למיקום כלשהו במערכת הקבצים שלכם. לדוגמה, כדי לחלץ את התוכן לספריית העבודה הנוכחית:
    tar xzf 1.17.8-asm.4-distroless-osx.tar.gz

    הפקודה יוצרת ספריית התקנה בספריית העבודה הנוכחית בשם 1.17.8-asm.4-distroless, שמכילה:

    • אפליקציות לדוגמה בספרייה samples.
    • כלי שורת הפקודה שמשמש להתקנת Anthos Service Mesh נמצא בספרייה bin.istioctl
    • פרופילי ההגדרות של Anthos Service Mesh נמצאים בספרייה manifests/profiles.
  14. מוודאים שאתם נמצאים בספריית השורש של ההתקנה של Anthos Service Mesh:
    cd 1.17.8-asm.4-distroless
  15. כדי שיהיה לכם נוח, כדאי להוסיף את הכלים בספרייה /bin אל PATH:
    export PATH=$PWD/bin:$PATH
  16. Windows

  17. נותנים את אילוץ ההקשר הביטחוני (SCC) ‏anyuid ל-istio-system באמצעות הפקודה הבאה של OpenShift CLI ‏ (oc):
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  18. מורידים את קובץ ההתקנה של Anthos Service Mesh לספריית העבודה הנוכחית:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-win.zip
  19. מורידים את קובץ החתימה ומשתמשים ב-OpenSSL כדי לאמת את החתימה:
    curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-win.zip.1.sig
    openssl dgst -verify - -signature 1.17.8-asm.4-distroless-win.zip.1.sig 1.17.8-asm.4-distroless.win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  20. מחלצים את התוכן של הקובץ למיקום כלשהו במערכת הקבצים שלכם. לדוגמה, כדי לחלץ את התוכן לספריית העבודה הנוכחית:
    tar xzf 1.17.8-asm.4-distroless-win.zip

    הפקודה יוצרת ספריית התקנה בספריית העבודה הנוכחית בשם 1.17.8-asm.4-distroless, שמכילה:

    • אפליקציות לדוגמה בספרייה samples.
    • כלי שורת הפקודה שמשמש להתקנת Anthos Service Mesh נמצא בספרייה bin.istioctl
    • פרופילי ההגדרות של Anthos Service Mesh נמצאים בספרייה manifests\profiles.
  21. מוודאים שאתם נמצאים בספריית השורש של ההתקנה של Anthos Service Mesh:
    cd 1.17.8-asm.4-distroless
  22. כדי שיהיה לכם נוח, כדאי להוסיף את הכלים בספרייה ‎\bin לנתיב:
    set PATH=%CD%\bin:%PATH%
  23. אחרי שמתקינים את Anthos Service Mesh Istio, בודקים את הגרסה של istioctl:
    istioctl version
  24. יוצרים מרחב שמות בשם istio-system לרכיבי מישור הבקרה:
    kubectl create namespace istio-system

הגדרת ה-webhook לאימות

כשמתקינים את Anthos Service Mesh, מגדירים תווית של גרסה ב-istiod. צריך להגדיר את אותה גרסה ב-webhook של האימות.

  1. יוצרים קובץ בשם istiod-service.yaml עם התוכן הבא:
    apiVersion: v1
    kind: Service
    metadata:
      name: istiod
      namespace: istio-system
      labels:
        istio.io/rev: asm-1178-1
        app: istiod
        istio: pilot
        release: istio
    spec:
      ports:
        - port: 15010
          name: grpc-xds # plaintext
          protocol: TCP
        - port: 15012
          name: https-dns # mTLS with k8s-signed cert
          protocol: TCP
        - port: 443
          name: https-webhook # validation and injection
          targetPort: 15017
          protocol: TCP
        - port: 15014
          name: http-monitoring # prometheus stats
          protocol: TCP
      selector:
        app: istiod
        istio.io/rev: asm-1178-1
      meshConfig:
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
  2. משתמשים ב-kubectl כדי להחיל את ההגדרות האישיות לתגובה לפעולה מאתר אחר (Webhook) לצורך אימות:
    kubectl apply -f istiod-service.yaml
  3. כדי לוודא שההגדרה הוחלה:
    kubectl get svc -n istio-system

    התגובה אמורה להיראות כך:

    NAME     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                 AGE
    istiod   ClusterIP   172.200.18.133   <none>        15010/TCP,15012/TCP,443/TCP,15014/TCP   22s

התקנה של Anthos Service Mesh

  1. עורכים את קובץ overlay.yaml או יוצרים קובץ חדש עם התוכן הבא:
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        accessLogFile: /dev/stdout
        enableTracing: true
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
      components:
        ingressGateways:
          - name: istio-ingressgateway
            enabled: true
            k8s:
              service:
                type: LoadBalancer
                ports:
                - name: status-port
                  port: 15021
                  targetPort: 15021
                - name: http2
                  port: 80
                  targetPort: 8080
                - name: https
                  port: 443
                  targetPort: 8443
    
  2. מתקינים את Anthos Service Mesh עם istioctl באמצעות פרופיל asm-multicloud:
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="asm-1178-1" \
        --filename overlayfile.yaml

    הפלט אמור להיראות כך:

    kubectl get pods -n istio-system
    NAME                                   READY   STATUS    RESTARTS   AGE
    istio-ingressgateway-88b6fd976-flgp2   1/1     Running   0          3m13s
    istio-ingressgateway-88b6fd976-p5dl9   1/1     Running   0          2m57s
    istiod-asm-1178-1-798ffb964-2ls88       1/1     Running   0          3m21s
    istiod-asm-1178-1-798ffb964-fnj8c       1/1     Running   1          3m21s

    הארגומנט --set revision מוסיף תווית של עדכון בפורמט istio.io/rev=1.6.11-asm.1 ל-istiod. תווית התיקון משמשת את ה-webhook של מנגנון הזרקת ה-sidecar האוטומטי כדי לשייך sidecars מוזרקים לistiodתיקון מסוים. כדי להפעיל הזרקה אוטומטית של sidecar למרחב שמות, צריך להוסיף לו תווית עם revision שזהה לתווית ב-istiod.

  3. מוודאים שההתקנה הושלמה:
    kubectl get svc -n istio-system

    הפלט אמור להיראות כך:

    NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                                                                      AGE
    istio-ingressgateway   LoadBalancer   172.200.48.52    34.74.177.168   15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP   3m35s
    istiod                 ClusterIP      172.200.18.133   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        4m46s
    istiod-asm-1178-1       ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s
  4. מעבר למישור הבקרה החדש:
    1. קבלת תווית הגרסה שמופיעה ב-istiod:
      kubectl get pod -n istio-system -L istio.io/rev

      הפלט של הפקודה אמור להיראות כך:

          NAME                                  READY  STATUS  RESTARTS   AGE  REV
          istiod-asm-Cloud Service Mesh 1.17.8-asm.4-67998f4b55-lrzpz    1/1    Running  0         68m  1.16.7-asm
          istiod-asm-Cloud Service Mesh 1.17.8-asm.4-67998f4b55-r76kr    1/1    Running  0         68m  1.16.7-asm
          istiod-Cloud Service Mesh 1.16.7-asm.1-1-5cd96f88f6-n7tj9      1/1    Running  0         27s  asm-1178-1
          istiod-Cloud Service Mesh 1.16.7-asm.1-1-5cd96f88f6-wm68b      1/1    Running  0         27s  asm-1178-1
    2. מקצים את התווית של הגרסה החדשה למשתנה סביבה.

      בפלט, בעמודה REV, מציינים את הערך של תווית הגרסה החדשה. בדוגמה הזו, הערך הוא asm-1178-1

      export UPGRADE_REV="REVISION_LABEL"
    3. מוסיפים את תווית הגרסה למרחב השמות istio-system ומסירים את התווית istio-injection (אם היא קיימת) באמצעות הפקודה הבאה.
      kubectl label namespace istio-system istio.io/rev=$UPGRADE_REV istio-injection- --overwrite

      אם מופיע "istio-injection not found" בפלט, אפשר להתעלם ממנו. כלומר, במרחב השמות לא הייתה קודם התווית istio-injection. ההזרקה האוטומטית נכשלת אם במרחב השמות יש גם את התווית istio-injection וגם את תווית הגרסה, ולכן כל הפקודות kubectl label בתיעוד של Anthos Service Mesh כוללות הסרה של התווית istio-injection.

    4. מפעילים מחדש את ה-Pods כדי להפעיל מחדש את ההזרקה.
      kubectl rollout restart deployment -n istio-system
    5. בודקים את האפליקציה כדי לוודא שעומסי העבודה פועלים בצורה תקינה.
    6. אם יש לכם עומסי עבודה במרחבי שמות אחרים, חוזרים על השלבים כדי לתייג את מרחב השמות ולהפעיל מחדש את ה-Pods.
  5. מחיקת הגרסאות הקודמות:
    1. עוברים לספרייה שבה התקנתם את asmcli.
    2. יוצרים סקריפט מעטפת שמכיל את הפקודות הבאות:
      #!/bin/bash
      
      set -ex
      
      if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then
        kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true
      fi
      
    3. מריצים את הסקריפט כדי למחוק את הגרסאות הקודמות.

החזרה למצב הקודם של שדרוג

כדי לחזור לשדרוג קודם:

  1. מנקים את המשימות שהושלמו במרחב השמות של זמן הריצה ההיברידי, כאשר NAMESPACE הוא מרחב השמות שצוין בקובץ ההחלפות, אם צוין מרחב שמות. אם לא, מרחב השמות שמוגדר כברירת מחדל הוא apigee:
    kubectl delete job -n NAMESPACE \
      $(kubectl get job -n NAMESPACE \
      -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  2. ניקוי משימות שהושלמו במרחב השמות apigee-system:
    kubectl delete job -n apigee-system \
      $(kubectl get job -n apigee-system \
      -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  3. משנים את המשתנה APIGEECTL_HOME כך שיצביע על הספרייה שמכילה את הגרסה הקודמת של apigeectl. לדוגמה:
    export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
  4. מבטלים את השינויים שבוצעו בקובץ overrides:
    1. מסירים את ingressGateways ואת כל המאפיינים שלו או מוסיפים אותם כהערה.
    2. מגדירים את הערך של virtualhosts.selector.app לערך הקודם, לדוגמה:
      virtualhosts:
        - name: my-env-group
          selector:
            app: istio-ingressgateway
    3. מסירים את ao.args.disableIstioConfigInAPIServer או הופכים אותו לתגובה.
  5. בתיקיית הבסיס של ההתקנה שרוצים לחזור אליה, מריצים את הפקודה apigeectl apply, בודקים את הסטטוס של ה-pods ואז מריצים את הפקודה apigeectl init. חשוב להשתמש בקובץ ההחלפות המקורי של הגרסה שרוצים לחזור אליה:
    1. בספרייה hybrid-files, מריצים את apigeectl apply:
      $APIGEECTL_HOME/apigeectl apply -f ORIGINAL_OVERRIDES_FILE

      ORIGINAL_OVERRIDES_FILE הוא הנתיב היחסי ושם הקובץ של קובץ ההחלפות להתקנה ההיברידית של הגרסה הקודמת, לדוגמה, ./overrides/overrides1.7.yaml.

    2. בודקים את הסטטוס של ה-Pods:
      kubectl -n NAMESPACE get pods

      כאשר NAMESPACE הוא מרחב השמות של Apigee Hybrid.

    3. בודקים את הסטטוס של apigeeds:
      kubectl describe apigeeds -n apigee

      הפלט אמור להיראות כך:

      Status:
        Cassandra Data Replication:
        Cassandra Pod Ips:
          10.8.2.204
        Cassandra Ready Replicas:  1
        Components:
          Cassandra:
            Last Successfully Released Version:
              Revision:  v1-f8aa9a82b9f69613
              Version:   v1
            Replicas:
              Available:  1
              Ready:      1
              Total:      1
              Updated:    1
            State:        running
        Scaling:
          In Progress:         false
          Operation:
          Requested Replicas:  0
        State:                 running

      ממשיכים לשלב הבא רק אם ה-pod‏ apigeeds פועל.

    4. מריצים את הפקודה הבאה כדי לרשום את הערכים החדשים של מספר העותקים של מעבד ההודעות אחרי השדרוג.אם הערכים האלה לא תואמים לערכים שהגדרתם קודם, משנים את הערכים בקובץ ההגדרות החלופיות כך שיתאימו להגדרה הקודמת.
      apigeectl apply -f ORIGINAL_OVERRIDES_FILE --dry-run=client --print-yaml --env ENV_NAME 2>/dev/null |grep "runtime:" -A 25 -B 1| grep "autoScaler" -A 2

      הפלט אמור להיראות כך:

            autoScaler:
              minReplicas: 2
              maxReplicas: 10
    5. אם אתם מבצעים חזרה לגרסה 1.8.4 או לגרסה קודמת של Hybrid, אתם צריכים למחוק את פריסת בקר ה-Hybrid שבה השתמשתם בגרסה 1.8.5 או בגרסה חדשה יותר:
      kubectl -n apigee-system delete deploy apigee-controller-manager
    6. מריצים את apigeectl init:
      $APIGEECTL_HOME/apigeectl init -f ORIGINAL_OVERRIDES_FILE
  6. מוחקים את פריסת מנהל שער הכניסה של Apigee. הרכיב הזה רלוונטי רק לגרסאות Apigee Hybrid 1.8 ואילך.
    kubectl delete deployment -n NAMESPACE apigee-ingress-gateway-manager

    כאשר NAMESPACE הוא מרחב השמות של Apigee Hybrid.