אשכולות היברידיים של Google Distributed Cloud מאפשרים להריץ עומסי עבודה של משתמשים, ובמקביל לנהל אשכולות אחרים ואת האשכול ההיברידי עצמו. שילוב של תפקידי אדמין ומשתמש מבטל את התקורה של אשכול אדמין ייעודי בסביבות עם משאבים מוגבלים. בניגוד לאשכולות עצמאיים, שמנהלים רק את עצמם, אשכולות היברידיים יכולים גם ליצור ולנהל אשכולות אחרים.
אירוח של עומסי עבודה לצד רכיבי בקרה מחליף את הבידוד של האבטחה בגמישות, ומגביר את הסיכון לחשיפה של נכסים רגישים כמו מפתחות SSH. אתם פורסים אשכולות היברידיים עם מישור בקרה בזמינות גבוהה (HA) באמצעות הכלי bmctl מתחנת עבודה נפרדת או ישירות בצומת יעד.
דרישות מוקדמות
- הגרסה האחרונה של
bmctl(gs://anthos-baremetal-release/bmctl/1.36.200-gke.118/linux-amd64/bmctl) יורדת מ-Cloud Storage. - לתחנת העבודה שבה פועל
bmctlיש קישוריות רשת לכל הצמתים באשכול ההיברידי המיועד. - לתחנת העבודה שבה פועל
bmctlיש קישוריות רשת ל-VIP של מישור הבקרה של אשכול היעד ההיברידי. - מפתח ה-SSH שמשמש ליצירת האשכול ההיברידי זמין ל-root, או שיש גישת משתמש SUDO לכל הצמתים באשכול ההיברידי המטורגט.
- חשבון השירות Connect-register מוגדר לשימוש עם Connect.
במדריך למתחילים של Google Distributed Cloud מופיעות הוראות מפורטות ליצירת אשכול היברידי.
הפעלת SELinux
אם רוצים להפעיל את SELinux כדי לאבטח את הקונטיינרים, צריך לוודא ש-SELinux מופעל במצב Enforced בכל המכונות המארחות. החל מגרסה 1.9.0 של Google Distributed Cloud, אפשר להפעיל או להשבית את SELinux לפני או אחרי שיוצרים או משדרגים את האשכול. SELinux מופעל כברירת מחדל ב-Red Hat Enterprise Linux (RHEL). אם SELinux מושבת במכונות המארחות או שאתם לא בטוחים, תוכלו לקרוא את המאמר אבטחת קונטיינרים באמצעות SELinux כדי להבין איך להפעיל אותו.
Google Distributed Cloud תומך ב-SELinux רק במערכות RHEL.
התחברות ל-gcloud ויצירת קובץ תצורה של אשכול
מתחברים ל-CLI של gcloud כמשתמשים באמצעות
gcloud auth application-default login:gcloud auth application-default loginכדי להשתמש בתכונות של הפעלת API אוטומטית ויצירת חשבון שירות, שמתוארות בקטעים הבאים, צריך להיות לכם תפקיד של Project Owner או עורך.
אפשר גם להוסיף למשתמש את התפקידים הבאים ב-IAM:
- אדמין של חשבון שירות
- אדמין של מפתח לחשבון שירות
- אדמין IAM של פרויקט
- צפייה ב-Compute
- אדמין של Service Usage
לחלופין, אם כבר יש לכם חשבון שירות עם התפקידים האלה, הריצו את הפקודה:
export GOOGLE_APPLICATION_CREDENTIALS=JSON_KEY_FILEמחליפים את
JSON_KEY_FILEבנתיב של קובץ המפתח בפורמט JSON של חשבון השירות.מאתרים את Google Cloud מזהה הפרויקט כדי להשתמש בו ליצירת אשכול:
export CLOUD_PROJECT_ID=$(gcloud config get-value project)
יצירת קובץ התצורה של האשכול באמצעות bmctl
אחרי שמתחברים ל-CLI של gcloud ומגדירים את הפרויקט, אפשר ליצור את קובץ התצורה של האשכול באמצעות הפקודה bmctl.
כדי ליצור קובץ תצורה של אשכול:
מריצים את הפקודה הבאה כדי ליצור את קובץ התצורה של האשכול, ליצור את כל חשבונות השירות הנדרשים ולהפעיל את כל ממשקי ה-API הנדרשים:
bmctl create config -c CLUSTER_NAME</var> --enable-apis \ --create-service-accounts --project-id=CLOUD_PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: שם האשכול שיוצרים. -
CLOUD_PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
כברירת מחדל, קובץ התצורה נכתב ב-
bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yaml.אם כבר הפעלתם ממשקי API ויצרתם חשבונות שירות, אתם יכולים ליצור קובצי תצורה בלי להפעיל ממשקי API וליצור חשבונות שירות. אתם גם לא צריכים להשתמש בדגל
--project-id. עם זאת, תצטרכו לציין את פרטי הכניסה בקובץ התצורה באופן ידני.למידע נוסף על אפשרויות הפקודה, ראו יצירת הגדרות אישיות.
-
עריכת קובץ התצורה של האשכול
עכשיו, כשיש לכם קובץ תצורה של אשכול, אתם יכולים לערוך אותו כדי לבצע את השינויים הבאים:
מזינים את המפתח הפרטי של SSH כדי לגשת לצומתי האשכול ההיברידי:
# bmctl configuration variables. Because this section is valid YAML but not a valid Kubernetes # resource, this section can only be included when using bmctl to # create the initial admin/hybrid cluster. Afterwards, when creating user clusters by directly # applying the cluster and node pool resources to the existing cluster, you must remove this # section. gcrKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-gcr.json sshPrivateKeyPath: /path/to/your/ssh_private_key gkeConnectAgentServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-connect.json gkeConnectRegisterServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-register.json cloudOperationsServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-cloud-ops.jsonרושמים את האשכולות ב-Fleet. מזהה הפרויקט שציינתם בפקודה
bmctl create configנוסף באופן אוטומטי לשדהgkeConnect.projectIDבקובץ התצורה של האשכול. הפרויקט הזה נקרא פרויקט המארח של ה-Fleet.- אם יצרתם את קובץ התצורה באמצעות התכונות להפעלה אוטומטית של ה-API וליצירת חשבון שירות, אתם יכולים לדלג על השלב הזה.
- אם יצרתם את קובץ התצורה בלי להשתמש בתכונות של הפעלת ה-API ויצירת חשבון השירות באופן אוטומטי, צריך להפנות למפתחות ה-JSON של חשבון השירות שהורדתם בשדות
gkeConnectAgentServiceAccountKeyPathו-gkeConnectRegisterServiceAccountKeyPathהתואמים של קובץ התצורה של האשכול.
משנים את ההגדרה כדי לציין סוג אשכול של
hybridבמקוםadmin:spec: # Cluster type. This can be: # 1) admin: to create an admin cluster. This can later be used to create user clusters. # 2) user: to create a user cluster. Requires an existing admin cluster. # 3) hybrid: to create a hybrid cluster that runs admin cluster components and user workloads. # 4) standalone: to create a cluster that manages itself, runs user workloads, but does not manage other clusters. type: hybridמשנים את ההגדרות כדי לציין מישור בקרה עם כמה צמתים וזמינות גבוהה. אתם רוצים לציין מספר אי-זוגי של צמתים כדי שיהיה רוב לקוורום לזמינות גבוהה:
# Control plane configuration controlPlane: nodePoolSpec: nodes: # Control plane node pools. Typically, this is either a single machine # or 3 machines if using a high availability deployment. - address: 10.200.0.4 - address: 10.200.0.5 - address: 10.200.0.6מציינים את צפיפות ה-Pod של צומתי האשכול:
.... # NodeConfig specifies the configuration that applies to all nodes in the cluster. nodeConfig: # podDensity specifies the pod density configuration. podDensity: # maxPodsPerNode specifies at most how many pods can be run on a single node. maxPodsPerNode: 250 ....באשכולות היברידיים, הערכים המותרים של
maxPodsPerNodeהם32-250לאשכולות HA ו-64-250לאשכולות שאינם HA. ערך ברירת המחדל שלmaxPodsPerNodeאם לא צוין הוא110. אחרי שיוצרים את האשכול, אי אפשר לעדכן את הערך הזה.צפיפות הפודים מוגבלת גם על ידי משאבי ה-IP הזמינים של האשכול. למידע נוסף, קראו את המאמר רשתות של Pods ו-Services.
יצירת האשכול ההיברידי באמצעות הגדרות האשכול
משתמשים בפקודה bmctl כדי ליצור את האשכול:
bmctl create cluster -c CLUSTER_NAME
מחליפים את CLUSTER_NAME בשם שבו השתמשתם כשיצרתם את קובץ התצורה של האשכול בקטע הקודם.
בדוגמה הבאה מוצגת פקודה ליצירת אשכול בשם hybrid1:
bmctl create cluster -c hybrid1
הגדרות לדוגמה של אשכולות היברידיים
במאמר אשכולות היברידיים שב דוגמאות להגדרות של אשכולות תוכלו לקרוא דוגמאות להגדרות של אשכולות היברידיים.