במסוף Google Cloud אפשר ליצור אשכול אדמין לתוכנת Distributed Cloud רק ל-VMware באמצעות תהליך עבודה מודרך. במהלך תהליך העבודה, מריצים את gkectl register bootstrap בתחנת העבודה של האדמין כדי ליצור אשכול זמני של Bootstrap שמקצה את אשכול האדמין. לחלופין, אתם יכולים ליצור אשכול אדמין באמצעות gkectl או Terraform.
לפני שמתחילים
מוודאים שהגדרתם את תחנת העבודה של האדמין ואתם יכולים להיכנס אליה, כמו שמתואר במאמר יצירת תחנת עבודה של אדמין.
מוודאים שקובצי המפתחות בפורמט JSON של חשבונות השירות נמצאים בתחנת העבודה של האדמין.
עיינו במסמך התכנון של כתובות ה-IP. חשוב לוודא שיש מספיק כתובות IP זמינות לשלושת הצמתים של מישור הבקרה ול-VIP של מישור הבקרה. אם אתם מתכננים ליצור אשכולות משתמשים של kubeception, אתם צריכים לוודא שיש מספיק כתובות IP זמינות לצומתי מישור הבקרה של אשכולות המשתמשים האלה.
קוראים את הסקירה הכללית על איזון עומסים ובוחנים מחדש את ההחלטה לגבי סוג מאזן העומסים שבו רוצים להשתמש. במאזני עומסים ידניים, צריך להגדיר את מאזן העומסים לפני שיוצרים את אשכול הניהול.
אם אתם משתמשים ב-
gkectlכדי ליצור את אשכול האדמין, אתם צריכים להחליט אם להשתמש במרשם ציבורי או פרטי לרכיבים של Google Distributed Cloud. למידע על שימוש במרשם פרטי של Docker, ראוprivateRegistry. אי אפשר להשתמש במאגר פרטי של Docker לרכיבי מערכת ב-Terraform או במסוף Google Cloud .מחליטים איזה סוג של מערכת הפעלה רוצים להריץ בצמתים של אשכול האדמין.
אם הארגון שלכם דורש שתעבורת הנתונים היוצאת תעבור דרך שרת proxy, ודאו שהוספתם לרשימת ההיתרים את ממשקי ה-API הנדרשים ואת הכתובת של Artifact Registry.
בגרסה 1.29 ואילך, בדיקות מקדימות בצד השרת מופעלות כברירת מחדל. בדיקות מקדימות בצד השרת דורשות כללים נוספים של חומת האש. במאמר כללי חומת אש לאשכולות אדמין, חפשו את "בדיקות מקדימות" וודאו שכל כללי חומת האש הנדרשים מוגדרים. בדיקות מקדימות בצד השרת מופעלות באשכול ה-bootstrap במקום באופן מקומי בתחנת העבודה של האדמין.
סקירה כללית של התהליך
לפני שיוצרים את אשכול האדמין, צריך להריץ את הפקודה gkectl register bootstrap בתחנת העבודה של האדמין. הפקודה הזו פורסת אשכול Kubernetes ב-Docker (kind) בתחנת העבודה של האדמין. אשכול האתחול הזה מארח את בקרי Kubernetes שנדרשים כדי ליצור את אשכול האדמין. כשיוצרים את אשכול האדמין, הבקרים באשכול ה-bootstrap מקצים צמתים, מריצים בדיקות מקדימות ורושמים את אשכול האדמין ב-fleet. אשכול ה-bootstrap נמחק באופן אוטומטי אחרי שאשכול האדמין נוצר בהצלחה.
אלה השלבים הכלליים ליצירת אשכול אדמין באמצעות המסוף:
במסוף, מזינים את המידע שנדרש ל-
gkectl register bootstrap. במסוף תוצג הפקודהgkectl register bootstrapעם המידע שהזנתם. הפקודה שמוצגת כוללת גם דגלים לנתיבים שתצטרכו לציין לפני שתריצו את הפקודה.בתחנת העבודה של האדמין, מריצים את
gkectl register bootstrapכדי ליצור את אשכול ה-bootstrap. כשהפקודה מסיימת ליצור את אשכול ה-bootstrap, הפלט מודיע לכם לסיים את הגדרת אשכול האדמין. התהליך ממשיך לפעול עד ליצירת אשכול האדמין.חוזרים למסוף כדי לסיים את הזנת המידע שנדרש ליצירת האשכול. במהלך יצירת האשכול, הפקודה
gkectl register bootstrapמפיקה מידע על ההתקדמות וכותבת יומנים בתחנת העבודה של האדמין. אחרי שיוצרים את אשכול האדמין, אשכול ה-bootstrap נמחק באופן אוטומטי.
התחלת הגדרת האשכול
נכנסים לדף Create a cluster on VMware במסוף.
בוחרים את הפרויקט ב- Google Cloud שבו רוצים ליצור את האשכול.
כשיוצרים את אשכול ה-bootstrap בקטע הבא, מזהה הפרויקט שנבחר מוצג בפקודה
gkectl register bootstrapבדגל--project-id.מוודאים שהאפשרות Create an admin cluster מסומנת.
לוחצים על הבא: התקנת סביבת האתחול.
התקנת סביבת אתחול
בקטע הזה מזינים את המידע שנדרש לפקודה gkectl register bootstrap. כשמזינים ערכים בשדות של ממשק המשתמש, המסוף מעתיק את הערכים לדגלים התואמים של הפקודה gkectl register bootstrap שמוצגת בקטע Bootstrap environment from admin workstation בתחתית הדף.
מידע בסיסי על סביבת Bootstrap
מזינים שם לאשכול האדמין. המסוף משתמש בשם האשכול כערך של הדגל
--target-cluster-nameבפקודהgkectl register bootstrapשמוצגת בתחתית הדף. האורך המקסימלי של השם הוא 20 תווים.בשדה Google Cloud API Location, בוחרים אזור Google Cloudמהרשימה. ההגדרה הזו מציינת את האזור שבו פועלים ממשקי ה-API והשירותים הבאים:
- GKE On-Prem API (
gkeonprem.googleapis.com) - שירות Fleet (
gkehub.googleapis.com) - קישור השירות (
gkeconnect.googleapis.com)
ההגדרה הזו קובעת גם את האזור שבו יאוחסנו:
- המטא-נתונים של האשכול שנדרשים ל-GKE On-Prem API כדי לנהל את מחזור החיים של האשכול
- נתוני Cloud Logging ו-Cloud Monitoring של רכיבי המערכת
- יומן הביקורת של האדמין שנוצר על ידי יומני הביקורת של Cloud
השדה Google Cloud API Location תואם לדגל
--locationבפקודהgkectl register bootstrap.- GKE On-Prem API (
בשדה Admin cluster version, מזינים את הגרסה שבה רוצים להשתמש כדי ליצור את האשכול. הגרסה שבוחרים כאן צריכה להיות זהה לגרסה של החבילה שמציינים בדגל
--bundle-pathבפקודהgkectl register bootstrap.
הגדרת vCenter
אם השתמשתם ב-gkeadm כדי ליצור את תחנת העבודה של האדמין, פתחו את קובץ התצורה של תחנת העבודה של האדמין כדי להעתיק ערכים מהקטע vCenter לשדות במסוף. שימו לב שקובץ התצורה שנוצר לאשכול האדמין מכיל גם את המידע הזה.
רוב השדות בקטע הזה לא ניתנים לשינוי. אם אתם צריכים לדעת אם שדה מסוים ניתן לשינוי או לא, עיינו בקטע vCenter בקובץ העזר להגדרת אשכול האדמין.
בשדה Address, מזינים את כתובת שרת ה-vCenter.
קובץ תצורה של תחנת עבודה של אדמין: משתמשים בערך מהשדה
vCenter.credentials.address.השדה Address תואם לדגל
--vcenter-addressבפקודהgkectl register bootstrap.
בשדה Datacenter, מזינים את השם של מרכז הנתונים של vCenter.
קובץ התצורה של תחנת העבודה של האדמין: משתמשים בערך מהשדה
vCenter.datacenter.השדה Datacenter תואם לדגל
--vcenter-datacenterבפקודהgkectl register bootstrap.
בשדה Cluster Name, מזינים את השם של אשכול ה-vCenter.
קובץ תצורה של תחנת עבודה אדמין: משתמשים בערך מהשדה
vCenter.cluster.השדה Cluster Name תואם לדגל
--vcenter-clusterבפקודהgkectl register bootstrap.
בשדה Resource pool, מזינים את השם או הנתיב של מאגר המשאבים של vCenter.
קובץ תצורה של תחנת עבודה אדמין: משתמשים בערך מהשדה
vCenter.resourcePool.השדה Resource pool תואם לדגל
--vcenter-resource-poolבפקודהgkectl register bootstrap.
מגדירים אפשרות אחסון על ידי הזנה של אחת מהאפשרויות הבאות:
השדה Datastore: מזינים את השם של מאגר הנתונים של vCenter. הערך שאתם מציינים צריך להיות שם, לא נתיב. אם צריך להזין נתיב, מזינים אותו בשדה Folder.
קובץ תצורה של תחנת עבודה אדמין: משתמשים בערך מהשדה
vCenter.datastore.השדה Datastore תואם לדגל
--vcenter-datastoreבפקודהgkectl register bootstrap.
השדה Storage policy name: מזינים את השם של מדיניות האחסון של ה-VM לצומתי האשכול. מידע נוסף זמין במאמר הגדרת מדיניות אחסון.
קובץ תצורה של תחנת עבודה אדמין: משתמשים בערך מהשדה
vCenter.storagePolicyName.השדה Storage policy name תואם לדגל
--vcenter-storage-policyבפקודהgkectl register bootstrap.
צריך להזין ערך בשדה Datastore או בשדה Storage Policy Name, אבל לא בשניהם.
אם רוצים, בשדה Folder מזינים את השם של תיקיית vCenter שבה יהיו המכונות הווירטואליות של האשכול.
קובץ התצורה של תחנת העבודה של האדמין: משתמשים בערך מהשדה
vCenter.folder.השדה Folder תואם לדגל
--vcenter-folderבפקודהgkectl register bootstrap.
בשדה Network, מזינים את השם של רשת vCenter.
קובץ תצורה של תחנת עבודה אדמין: משתמשים בערך מהשדה
vCenter.network.השדה Network תואם לדגל
--vcenter-networkבפקודהgkectl register bootstrap.
בשדה CA certificate path, מזינים את הנתיב לאישור ה-CA הבסיסי של שרת ה-vCenter.
אם השתמשתם ב-
gkeadmכדי ליצור את תחנת הניהול,gkeadmהעתיק את קובץ אישור ה-CA שהיה לכם באופן מקומי לתחנת הניהול.השדה נתיב אישור CA תואם ל-
--vcenter-ca-cert-pathבפקודהgkectl register bootstrap.
קבלת אישור ה-CA
אחרי שיוצרים את אשכול ה-bootstrap, צריך לספק את אישור ה-CA של vCenter בפורמט PEM בשדה CA certificate data בדף Cluster basics. מריצים את הפקודה הבאה כדי להציג את האישור:
cat CA_CERT_PATH
מחליפים את CA_CERT_PATH בנתיב לאישור ה-CA ברמה הבסיסית (root) של שרת ה-vCenter. אם מריצים את הפקודה באופן מקומי, משתמשים בנתיב שבשדה vCenter.caCertPath בקובץ התצורה של תחנת העבודה של האדמין.
מעתיקים את כל האישור לכלי לעריכת טקסט כדי שתוכלו להדביק אותו בשדה נתוני אישור CA בדף Cluster basics אחרי שיוצרים את אשכול ה-bootstrap.
סביבת Bootstrap מתחנת עבודה של אדמין
כשמריצים את הפקודה gkectl register bootstrap, מופיעה בקשה להזין את שם המשתמש של חשבון vCenter ואת הסיסמה. חשוב לוודא שפרטי הכניסה זמינים. אם השתמשתם ב-gkeadm כדי ליצור את תחנת הניהול, שם המשתמש והסיסמה נמצאים בקובץ credential.yaml.
גוללים לקטע Bootstrap environment from admin workstation כדי להציג את הפקודה
gkectl register bootstrap.צריך להשאיר את הדף הזה פתוח בזמן שעוברים לתחנת העבודה של האדמין כדי ליצור את אשכול ה-bootstrap.
מעתיקים את הפקודה
gkectl register bootstrapומדביקים אותה בכלי לעריכת טקסט כדי שתוכלו לציין ערכים לדגלים הבאים:./gkectl register bootstrap \ ... --bundle-path=BUNDLE_PATH \ ... --component-access-service-account-key-path=COMPONENT_ACCESS_SA_PATH \ --register-service-account-key-path=CONNECT_REGISTER_SA_PATH \ --stackdriver-service-account-key-path=LOG_MON_SA_PATH \ --cloud-audit-logging-service-account-key-path=CLOUD_AUDIT_SA_PATH \ --admin-kubeconfig-out=KUBECONFIG_NAMEמחליפים את הערכים הבאים בנתיבים של תחנת העבודה של האדמין:
-
BUNDLE_PATH: הנתיב לקובץ החבילה. אם השתמשתם ב-gkeadmכדי ליצור את תחנת העבודה של האדמין, קובץ החבילה נמצא ב-/var/lib/gke/bundles/. שם הקובץ תלוי בגרסה של Google Distributed Cloud, לדוגמהgke-onprem-vsphere-1.31.0-gke.889-full.tgz. -
COMPONENT_ACCESS_SA_PATH: הנתיב לקובץ המפתח של חשבון השירות לגישה לרכיבים. -
CONNECT_REGISTER_SA_PATH: הנתיב לקובץ המפתח של חשבון השירות connect-register. -
LOG_MON_SA_PATH: הנתיב לקובץ המפתח של חשבון השירות למעקב אחרי רישום ביומן. -
CLOUD_AUDIT_SA_PATH: הנתיב לחשבון השירות של רישום ביומן הביקורת. אם לא יצרתם חשבון שירות ליומני ביקורת, ציינו את הנתיב לקובץ המפתח של חשבון השירות למעקב אחרי רישום ביומן. -
KUBECONFIG_NAME: השם של קובץ kubeconfig שנוצר על ידי הפקודהgkectl register bootstrap. אם לא מציינים את הדגל הזה, הפקודה יוצרת את הקובץ עם השםkubeconfigבספריית העבודה הנוכחית. אם כבר קיים קובץ בשםkubeconfig, הפקודה מחליפה את הקובץ.
בנוסף, אם השתמשתם ב-
gkeadmכדי ליצור את תחנת העבודה של האדמין,gkectlהורד לספרייה/usr/bin/. במקרה כזה, צריך להסיר את./מתחילת הפקודה כיgkectlלא נמצא בספריית העבודה הנוכחית.-
משתמשים ב-SSH כדי להתחבר לתחנת העבודה של האדמין.
מעתיקים את הפקודה ומדביקים אותה בחלון הטרמינל בתחנת העבודה של האדמין.
כשמוצגת בקשה, מזינים (או מעתיקים ומדביקים) את שם המשתמש ב-vCenter. שם המשתמש לא מוצג על המסך.
כשמופיעה בקשה, מזינים (או מעתיקים ומדביקים) את הסיסמה של vCenter. הסיסמה לא מוצגת על המסך.
הפקודה מריצה מספר אימותים. אחרי ש-gkectl יוצר את אשכול ה-bootstrap, מופיע פלט שדומה לזה שמופיע בהמשך, שקוצר כדי שיהיה קל יותר לקרוא אותו:
Running workstation validations
- Validation Category: Workstation
- [SUCCESS] Workstation OS
- [SUCCESS] Workstation Hardware
- [SUCCESS] Workstation Package
- [SUCCESS] Workstation NTP
- [SUCCESS] Workstation Docker
...
All validation results were SUCCESS.
Unpacking GKE on-prem bundle: /var/lib/gke/bundles/gke-onprem-vsphere-1.31.0-gke.889-full.tgz
...
Successfully created and registered the bootstrap cluster
...
Waiting for preflight checks to run or OnPremAdminCluster to be applied...... -
התהליך ממשיך לפעול עד ליצירת אשכול האדמין.
אם יוצאים מהפקודה gkectl register bootstrap לפני שנוצר אשכול האדמין, היצירה של אשכול האדמין נכשלת וצריך למחוק את אשכול ה-bootstrap באמצעות הפקודה הבאה:
gkectl delete bootstrap \
--target-cluster-name=ADMIN_CLUSTER_NAME \
--project-id=PROJECT_ID \
--location=REGION \
--register-service-account-key-path=CONNECT_REGISTER_SA_PATH
סיום ההגדרה של אשכול האדמין
חוזרים למסוף ומבצעים את הפעולות הבאות:
בדף Install bootstrap environment, לוחצים על Check Connection.
אם החיבור הצליח, במסוף תופיע ההודעה Connection established.
לפני שממשיכים, צריך ליצור את החיבור לאשכול ה-bootstrap. אם החיבור לא נוצר, בודקים את הארגומנטים שצוינו בפקודה
gkectl register bootstrap:חשוב לוודא שהערך של
--target-cluster-nameתואם לערך של Admin cluster name שמוצג בקטע Bootstrap environment basics.מוודאים שהערך של
--project-idתואם למזהה הפרויקט שבחרתם במסוף.
אם אתם צריכים לשנות את שם אשכול ה-bootstrap, את מזהה הפרויקט או ערכי דגלים אחרים:
- מקישים על
Ctrl-Cכדי לצאת מ-gkectl register bootstrap. מוחקים את אשכול ה-bootstrap:
gkectl delete bootstrap \ --target-cluster-name=ADMIN_CLUSTER_NAME \ --project-id=PROJECT_ID \ --location=REGION \ --register-service-account-key-path=CONNECT_REGISTER_SA_PATH
מריצים מחדש את הפקודה
gkectl register bootstrap.
לוחצים על Next: Cluster basics כדי להתחיל להגדיר את אשכול האדמין.
מידע בסיסי על אשכולות
בשדה CA certificate data, מעתיקים ומדביקים את כל אישור ה-CA של vCenter בפורמט PEM, כמו שמתואר בקטע קבלת אישור ה-CA.
בקטע Authorization, מזינים את כתובות האימייל של המשתמשים שרוצים לתת להם את התפקיד
clusterrole/viewשל Kubernetes לקריאה בלבד. שימו לב שכתובת האימייל שלכם נוספת באופן אוטומטי. כללי המדיניות של בקרת גישה מבוססת-תפקידים (RBAC) שחלים על המשתמשים מאפשרים להם להריץ פקודות לקריאה בלבד דרך שער הקישור.לוחצים על Next Control Plane.
מישור הבקרה
בודקים את הגדרות ברירת המחדל בקטע מישור הבקרה ומשנים אותן לפי הצורך.
בקטע Control plane node IPs, מזינים את כתובות ה-IP בשדות הבאים:
שער: כתובת ה-IP של שער ברירת המחדל של רשת המשנה שבה נמצאים צומתי האשכול.
מסכת רשת: מסכת הרשת של רשת המשנה שבה נמצאים צומתי האשכול.
כתובות IP: מזינים את כתובת ה-IP ואת שם המארח (אופציונלי) של שלושת הצמתים של מישור הבקרה.
לוחצים על Next: Networking.
Networking
בקטע הזה מציינים את פרטי הרשת שנדרשים כדי ליצור את אשכול האדמין.
בקטע Service and Pod CIDRs, מאשרים את ערכי ברירת המחדל של טווחי כתובות ה-IP של Kubernetes Service ו-Pod, או מזינים טווחי כתובות CIDR אחרים.
Service CIDR: הטווח הקטן ביותר האפשרי:
/24. הטווח הכי גדול שאפשר:/12.Pod CIDR: הטווח הקטן ביותר האפשרי:
/18. הטווח הגדול ביותר האפשרי: /8`.
בקטע Host config, מציינים את שרתי ה-NTP, שרתי ה-DNS ואת דומייני החיפוש ב-DNS (אופציונלי) שבהם משתמשים המכונות הווירטואליות שהן הצמתים באשכול. אחרי שיוצרים את האשכול, אי אפשר לשנות את הערכים האלה.
לוחצים על Next: מאזן עומסים.
מאזן עומסים
בקטע הזה בוחרים את סוג מאזן העומסים שבו רוצים להשתמש. למידע נוסף, קראו את הסקירה הכללית על איזון עומסים.
ברשימה Load balancer type, בוחרים מאזן עומסים:
מאזן העומסים MetalLB כלול בחבילה: מאזן העומסים MetalLB כלול בחבילה ודורש פחות הגדרות מאשר איזון עומסים ידני. הרכיבים של MetalLB פועלים בצומתי האשכול, כך שלא צריך ליצור מכונות וירטואליות נפרדות למאזן העומסים.
ידני: אתם יכולים להשתמש בכל מאזן עומסים שתרצו, כל עוד תגדירו אותו לפני יצירת האשכול. בכל מאזן עומסים שמגדירים באופן ידני, צריך להגדיר מיפויים בין כתובות IP וירטואליות (VIP), כתובות של צמתים וערכי nodePort.
בשדה VIP של מישור הבקרה, מזינים את ה-VIP שישמש לתעבורת נתונים שנשלחת לשרת ה-API של Kubernetes.
לוחצים על אימות ויצירה.
במסוף מוצגות הודעות סטטוס בזמן שההגדרות מאומתות והאשכול נוצר במרכז הנתונים.
אם יש בעיה בהגדרה, במסוף תוצג הודעת שגיאה שאמורה להיות ברורה מספיק כדי שתוכלו לתקן את הבעיה בהגדרה ולנסות שוב ליצור את האשכול.
פרטים על תהליך יצירת האשכול מופיעים בתחנת העבודה של האדמין. אם הבדיקות המקדימות עברו בהצלחה, תראו משהו כזה:
[2023-03-22 23:12:47+0000] Waiting for cluster kubeconfig to become ready OK [2023-03-22 23:15:47+0000] Writing kubeconfig file [2023-03-22 23:15:47+0000] kubeconfig of cluster being created is present at gkectl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig [2023-03-22 23:15:47+0000] Please restrict access to this file as it contains authentication credentials of your cluster. [2023-03-22 23:15:47+0000] Waiting for cluster to become ready OK [2023-03-22 23:20:17+0000] Please run [2023-03-22 23:20:17+0000] kubectl --kubeconfig gkectl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig get nodes [2023-03-22 23:20:17+0000] to get cluster nodes status. [2023-03-22 23:20:17+0000] Waiting for node pools to become ready OK [2023-03-22 23:20:37+0000] Waiting for metrics to become ready in GCP OK [2023-03-22 23:25:38+0000] Waiting for cluster API provider to install in the created admin cluster OK [2023-03-22 23:25:48+0000] Moving admin cluster resources to the created admin cluster [2023-03-22 23:25:51+0000] Waiting for node update jobs to finish OK [2023-03-22 23:27:41+0000] Flushing logs... OK [2023-03-22 23:27:41+0000] Deleting membership... OK [2023-03-22 23:27:42+0000] Deleting bootstrap cluster.
התחברות לאשכול האדמין
הפקודה gkectl register bootstrap יוצרת קובץ kubeconfig לאשכול האדמין בתחנת העבודה של האדמין. אם לא ציינתם את הדגל --admin-kubeconfig-out כשהרצתם את gkectl register bootstrap, הפקודה יוצרת קובץ kubeconfig בשם kubeconfig בספרייה שבה הרצתם את הפקודה.
צריך להגביל את הגישה ל-kubeconfig הזה כי הוא מכיל פרטי כניסה לאימות של האשכול.
בנוסף, אתם יכולים להריץ פקודות kubectl לקריאה בלבד דרך שער הקישור.
מריצים את הפקודה הבאה במחשב שמותקן בו ה-CLI של gcloud כדי לקבל רשומת
kubeconfigשיכולה לגשת לאשכול דרך שער הקישור.gcloud container fleet memberships get-credentials ADMIN_CLUSTER_NAME \ --project=PROJECT_IDהפלט אמור להיראות כך:
Starting to build Gateway kubeconfig... Current project_id: PROJECT_ID A new kubeconfig entry "connectgateway_PROJECT_ID_global_ADMIN_CLUSTER_NAME" has been generated and set as the current context.עכשיו אפשר להריץ פקודות
kubectlלקריאה בלבד דרך שער הקישור, כמו:kubectl get pods -Aאם אתם צריכים הרשאות אדמין מלאות לאשכול האדמין, תוכלו להיעזר במאמר הגדרת שער הקישור.