במסמך הזה מוסבר איך לבצע עדכון של אשכול שלא כולל שינוי בגרסה.
עדכון של אשכול הוא שינוי בהגדרות של האשכול.
שדרוג של אשכול הוא מקרה מיוחד של עדכון אשכול שכולל שינוי בגרסה של רמת הבקרה או שינוי בגרסה של מאגר הצמתים. מידע על שדרוג זמין במאמר שדרוג 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. אבל אי אפשר להשתמש בגרסהgkectl1.31 כי היא גבוהה בשלוש גרסאות משניות מגרסת האשכול.אם מעדכנים את האשכול לאשכול מתקדם, גרסת
gkectlחייבת להיות זהה לגרסת האשכול.
במקרה הצורך, אפשר לעיין במאמר בנושא הורדה של gkectl כדי להוריד גרסה נתמכת של gkectl.
בדוגמאות הבאות אפשר לראות איך מעדכנים אשכולות.
gkectl
הפקודה gkectl update יכולה להופיע באחת מהצורות הבאות:
gkectl update credentials– משמש לעדכון פרטי הכניסה של האשכול.
gkectl update admin– מריצים את הפקודה הזו אחרי שמבצעים שינוי בקובץ התצורה של אשכול האדמין.
gkectl update cluster– מריצים את הפקודה הזו אחרי שמבצעים שינוי בקובץ התצורה של אשכול המשתמשים.
דוגמה לאשכול אדמין (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 של אשכול האדמין
המסוף
במסוף, נכנסים לדף Google Kubernetes Engine clusters overview.
בוחרים את Google Cloud הפרויקט ואז בוחרים את האשכול שרוצים לעדכן.
בחלונית פרטים, לוחצים על פרטים נוספים.
בשדות שאפשר לעדכן במסוף מופיע סמל של עיפרון. Google Cloud לוחצים על אחד מסמלי העיפרון. בתיבה שנפתחת, משנים את ערכי השדות לפי הצורך ולוחצים על סיום.
בסרגל ההתקדמות בחלק העליון של הדף, לוחצים על הצגת פרטים. ממתינים עד שהעדכון יסתיים.
CLI של gcloud
מריצים את פקודת העדכון הרלוונטית. מציינים רק את הדגלים של ההגדרה שרוצים לשנות:
קבוצות אדמין:
gcloud container vmware admin-clusters updateאשכולות משתמשים:
gcloud container vmware clusters updateמאגרי צמתים באשכול משתמשים:
gcloud container vmware node-pools update
עדכון משתמשי אדמין באשכול משתמשים
שרת ה-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
משנים את הערכים של השדות הרלוונטיים בקובץ התצורה של Terraform שבו השתמשתם כדי ליצור את האשכול או את מאגר הצמתים. לתיאורים מפורטים של השדות, אפשר לעיין במסמכי העזרה של Terraform:
כדי לעדכן את ההגדרה, מריצים את הפקודה
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 כדי לעדכן מפתחות ואישורים: