עדכון אשכול

במסמך הזה מוסבר איך לבצע עדכון של אשכול שלא כולל שינוי בגרסה.

עדכון של אשכול הוא שינוי בהגדרות של האשכול.

שדרוג של אשכול הוא מקרה מיוחד של עדכון אשכול שכולל שינוי בגרסה של רמת הבקרה או שינוי בגרסה של מאגר הצמתים. מידע על שדרוג זמין במאמר שדרוג Google Distributed Cloud.

בדיקת הכללים של חומת האש

בגרסה 1.29 ואילך, בדיקות קדם-הפעלה בצד השרת מופעלות כברירת מחדל. בדיקות קדם-הפעלה בצד השרת דורשות כללי חומת אש נוספים. בקטע Firewall rules for admin clusters (כללי חומת אש לאשכולות אדמין), מחפשים את האפשרות Preflight checks (בדיקות לפני המראה) ומוודאים שכל כללי חומת האש הנדרשים מוגדרים.

עם בדיקות קדם-הפעלה בצד השרת, כשמעדכנים אשכול משתמשים באמצעות gkectl, בדיקות קדם-הפעלה מורצות באשכול האדמין ולא באופן מקומי בתחנת העבודה של האדמין. בדיקות מקדימות בצד השרת מופעלות באשכול האדמין כשמשתמשים במסוף Google Cloud , ב-Google Cloud CLI או ב-Terraform כדי לעדכן אשכול.

כשמעדכנים אשכול אדמין, Google Distributed Cloud פורס אשכול Kubernetes in Docker (kind) כדי לארח באופן זמני את בקרי Kubernetes שנדרשים לעדכון אשכול האדמין. האוסף הזמני הזה נקרא אוסף bootstrap. במהלך עדכון של אשכול אדמין, מתבצעות בדיקות מקדימות בצד השרת באשכול האתחול.

מה אפשר לעדכן

אפשר לעדכן חלק מהתכונות וההגדרות של האשכול, אבל אי אפשר לעדכן תכונות והגדרות אחרות אחרי שהאשכול נוצר. כדי לראות אילו תכונות אפשר לעדכן, אפשר לעיין בדפי העיון של קובץ התצורה של אשכול האדמין ושל קובץ התצורה של אשכול המשתמשים. שדות שאפשר לעדכן מסומנים כ-Mutable, ושדות שאי אפשר לעדכן מסומנים כ-Immutable.

אפשר גם להריץ פקודות gkectl כדי לראות אילו תכונות והגדרות אפשר לעדכן.

כדי לראות מה אפשר לעדכן באשכול אדמין:

gkectl update admin --help

פלט לדוגמה:

Update the admin cluster. Only the following updates are supported and they can
only be updated one at a time:
- Enabling/Disabling Vsphere Resource Metrics
- Adding static IPs
- Updating vCenter CA certificate
- Registering Admin Cluster
- Enabling/Disabling Cloud Audit Logging
- Enabling/Disabling Stackdriver
- Enabling/Disabling Auto Repair
- Enabling/Disabling Auto Resize for Addon Nodes
- Enabling/Disabling GKE OnPrem API
- Updating OS Image Type
- Enabling/Disabling AntiAffinityGroups
- Update Secrets Encryption Configuration
- [Preview] Enabling/Disabling Cluster Backup
- [Preview] Update Cluster Backup configs

כדי לראות מה אפשר לעדכן באשכול משתמשים:

gkectl update cluster --help

פלט לדוגמה:

Update a GKE On-Prem cluster. Only the following updates are supported and they
can only be updated one at a time:
- Adding static IPs
- Updating node pool
- Updating user master cpu and memory
- Enabling/Disabling Vsphere Resource Metrics
- Enabling/Disabling vSphere CSI deployment
- Enabling/Disabling Auto Repair
- Enabling/Disabling Cloud Audit Logging
- Enabling/Disabling Stackdriver
- Enabling/Disabling GKE OnPrem API
- Registering User Cluster
- Updating vCenter CA certificate
- Updating MetalLB Address Pools
- Enabling/Disabling Auto Resizing on user master
- Updating NodePoolUpdatePolicy
- Enabling/Disabling AntiAffinityGroups
- [Preview] Enabling/Disabling Node Network Policy
- Updating Secrets Encryption
- Enabling/Disabling DataplaneV2 forwardMode

עדכון של דבר אחד בכל פעם

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

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

תהליך העדכון

אפשר להשתמש ב-gkectl, במסוף Google Cloud או ב-Google Cloud CLI כדי לבצע עדכונים באשכול משתמשים. אם יצרתם את אשכול המשתמשים באמצעות Terraform, תוכלו להשתמש ב-Terraform כדי לעדכן את האשכול. כמעט בכל המקרים, צריך להשתמש ב-gkectl כדי לעדכן את אשכולות האדמין.

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

  • הגרסה המשנית gkectl לא יכולה להיות נמוכה מהגרסה המשנית של האשכול. לדוגמה, אי אפשר לעדכן אשכול 1.30 באמצעות gkectl גרסה 1.29. אין חשיבות לגרסאות התיקון. לדוגמה, אפשר להשתמש בגרסה 1.29.0-gke.1456 כדי לעדכן אשכול עם גרסת תיקון גבוהה יותר, כמו 1.29.1000-gke.94.gkectl

  • הגרסה המשנית gkectl לא יכולה להיות גבוהה ביותר משתי גרסאות משניות מגרסת האשכול. לדוגמה, אם מעדכנים אשכול 1.28, הגרסה של gkectl יכולה להיות 1.29 או 1.30. אבל אי אפשר להשתמש בגרסה gkectl 1.31 כי היא גבוהה בשלוש גרסאות משניות מגרסת האשכול.

  • אם מעדכנים את האשכול לאשכול מתקדם, גרסת gkectl חייבת להיות זהה לגרסת האשכול.

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

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

gkectl

הפקודה gkectl update יכולה להופיע באחת מהצורות הבאות:

דוגמה לאשכול אדמין (gkectl update admin)

נניח שאתם רוצים לשנות את הערך של gkeOnPremAPI.enabled מ-false ל-true באשכול אדמין. קודם עורכים את קובץ התצורה של אשכול האדמין ומגדירים את הערך true:

gkeOnPremAPI:
  enabled: true

לאחר מכן מעדכנים את אשכול האדמין:

gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config ADMIN_CLUSTER_CONFIG

מחליפים את מה שכתוב בשדות הבאים:

  • ADMIN_CLUSTER_KUBECONFIG: הנתיב לקובץ ה-kubeconfig של אשכול האדמין

  • ADMIN_CLUSTER_CONFIG: הנתיב של קובץ ההגדרות של אשכול האדמין

דוגמה לאשכול משתמשים (gkectl update cluster)

נניח שרוצים לשנות את הערך של stackdriver.vSphereDisableResourceMetrics מ-false ל-true באשכול משתמשים. קודם עורכים את קובץ התצורה של אשכול המשתמשים ומגדירים את הערך true:

stackdriver:
  disableVsphereResourceMetrics: true

לאחר מכן מעדכנים את אשכול המשתמש:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

מחליפים את מה שכתוב בשדות הבאים:

  • ADMIN_CLUSTER_KUBECONFIG: הנתיב לקובץ ה-kubeconfig של אשכול האדמין

  • USER_CLUSTER_CONFIG: הנתיב של קובץ התצורה של אשכול המשתמשים

דוגמה לאשכול משתמשים (gkectl update credentials)

נניח שרוצים לשנות את פרטי הכניסה שמשמשים את אשכול המשתמשים לקריאה ל-vCenter Server.

בקובץ התצורה של אשכול המשתמשים יש שדה vCenter.credentials.fileRef.path שמצביע על קובץ תצורה של פרטי כניסה. בקובץ התצורה של פרטי הכניסה, מעדכנים את הערכים של username ושל password. לדוגמה:

items:
- name: "vcenter-creds"
  username: "new-vcenter-account"
  password: "U$icUKEW#INE"

לאחר מכן מעדכנים את פרטי הכניסה:

gkectl update credentials vsphere \
    --config USER_CLUSTER_CONFIG \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG

מחליפים את מה שכתוב בשדות הבאים:

  • USER_CLUSTER_CONFIG: הנתיב של קובץ התצורה של אשכול המשתמשים

  • ADMIN_CLUSTER_KUBECONFIG: הנתיב לקובץ ה-kubeconfig של אשכול האדמין

המסוף

  1. במסוף, נכנסים לדף Google Kubernetes Engine clusters overview.

    מעבר לאשכולות GKE

  2. בוחרים את Google Cloud הפרויקט ואז בוחרים את האשכול שרוצים לעדכן.

  3. בחלונית פרטים, לוחצים על פרטים נוספים.

  4. בשדות שאפשר לעדכן במסוף מופיע סמל של עיפרון. Google Cloud לוחצים על אחד מסמלי העיפרון. בתיבה שנפתחת, משנים את ערכי השדות לפי הצורך ולוחצים על סיום.

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

‫CLI של gcloud

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

עדכון משתמשי אדמין באשכול משתמשים

שרת ה-API של Kubernetes בכל אשכול צריך להיות מסוגל לאשר בקשות שהוא מקבל. כדי להגדיר הרשאה, צריך להגדיר כללי מדיניות של בקרת גישה מבוססת-תפקידים (RBAC) ב-Kubernetes בכל אשכול. משתמש אדמין הוא משתמש שקיבל את התפקיד cluster-admin באשכול המשתמשים. התפקיד הזה מעניק למשתמש גישת אדמין מלאה לאשכול.

נניח שאליס ובוב הם המשתמשים היחידים עם הרשאת אדמין באשכול המשתמשים שנקרא cluster-1 באזור us-west1. נניח שעליסה רוצה להוסיף את טרנט כמשתמש אדמין נוסף. אליס יכולה להריץ את הפקודה הבאה:

gcloud container vmware clusters update cluster-1 \
    --project example-project-id-12345 \
    --location us-west1 \
    --admin-users alice@example.com \
    --admin-users bob@example.com \
    --admin-users trent@example.com

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

Terraform

  1. משנים את הערכים של השדות הרלוונטיים בקובץ התצורה של Terraform שבו השתמשתם כדי ליצור את האשכול או את מאגר הצמתים. לתיאורים מפורטים של השדות, אפשר לעיין במסמכי העזרה של Terraform:

  2. כדי לעדכן את ההגדרה, מריצים את הפקודה terraform apply.

עדכון משתמשי אדמין באשכול משתמשים

שרת ה-API של Kubernetes בכל אשכול צריך להיות מסוגל לאשר בקשות שהוא מקבל. כדי להגדיר הרשאה, צריך להגדיר כללי מדיניות של בקרת גישה מבוססת-תפקידים (RBAC) ב-Kubernetes בכל אשכול. משתמש אדמין הוא משתמש שקיבל את התפקיד cluster-admin באשכול המשתמשים. התפקיד הזה מעניק למשתמש גישת אדמין מלאה לאשכול.

נניח שרק לאליס ולבוב יש הרשאות אדמין באשכול משתמשים מסוים. נניח שעליסה רוצה להוסיף את טרנט כמשתמש אדמין נוסף. אליס יכולה לשנות את הגדרות Terraform באופן הבא ואז להריץ את הפקודה terraform apply:

authorization {
  admin_users {
    username = "alice@example.com"
    username = "bob@example.com"
    username = "trent@example.com"
  }
}

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

מידע נוסף

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

עדכון אשכול/אדמין

במסמכים הבאים מוסבר איך משתמשים ב-gkectl update admin וב-gkectl update cluster כדי לעדכן תכונות והגדרות:

עדכון פרטי הכניסה

במסמכים הבאים מוסבר איך משתמשים ב-gkectl update credentials כדי לעדכן מפתחות ואישורים:

המאמרים הבאים

שדרוג אשכול