יצירת אשכולות הדגמה של משתמשים ואדמינים ב-Google Distributed Cloud במכונות וירטואליות ב-Compute Engine

כדי ללמוד על Google Distributed Cloud (תוכנה בלבד) לשרת פיזי, אפשר ליצור אשכולות הדגמה במכונות וירטואליות (VM) של Compute Engine. במדריך הזה מריצים סקריפט שמבצע את הפעולות הבאות:

  • הכלי מקצה חמש מכונות וירטואליות ב-Compute Engine להתקנת אשכולות ההדגמה
  • הגדרה של רשת VPC כדי לספק קישוריות לאשכול

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

האשכולות להדגמה שיוצרים במדריך הזה עוזרים להעריך את התהליך של הקצאת משאבים והפעלה של אשכולות ב-Google Distributed Cloud, אבל הם לא מיועדים לשימוש בסביבת ייצור.

סקירה כללית של התהליך

במדריך הזה תבצעו את השלבים הבאים:

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

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

  3. יוצרים את אשכול האדמין באמצעות אחד מהלקוחות הנתמכים.

  4. יוצרים את אשכול המשתמשים באמצעות אחד מהלקוחות הנתמכים.

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

1. הכנת הסביבה המקומית

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

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. חשוב לשים לב למזהה הפרויקט, כי תצטרכו אותו כדי להגדיר משתנה סביבה שמשמש בסקריפט ובפקודות בדף הזה. אם בחרתם פרויקט קיים, ודאו שאתם בעלים או עורכים של הפרויקט.
  7. אפשר להריץ את הסקריפט ב-Cloud Shell או במחשב המקומי עם Linux או macOS. אם אתם משתמשים במחשב מקומי, ודאו שהכלים הנדרשים מותקנים בסביבה שלכם:
    1. מוודאים שהתקנתם את הגרסה האחרונה של Google Cloud CLI, כלי שורת הפקודה לאינטראקציה עם Google Cloud. מעדכנים את הרכיבים של ה-CLI של gcloud, אם צריך:
      gcloud components update

      בהתאם לאופן ההתקנה של ה-CLI של gcloud, יכול להיות שתופיע ההודעה הבאה:

      You cannot perform this action because the Google Cloud CLI component manager is disabled for this installation. You can run the following command to achieve the same result for this installation:

      פועלים לפי ההוראות כדי להעתיק את הפקודה ולהדביק אותה כדי לעדכן את הרכיבים.

    2. מוודאים ש-kubectl מותקן:
      kubectl
      אמור להופיע מידע על השימוש ב-kubectl. אם הפקודה לא זמינה, מתקינים את kubectl:
      gcloud components install kubectl
  8. מוודאים שלפרויקט יש רשת VPC בשם default.

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

  9. מוודאים שאילוצי מדיניות הארגון הבאים לא נאכפים:
    • constraints/iam.disableServiceAccountKeyCreation
    • constraints/compute.vmCanIpForward
    • constraints/compute.requireShieldedVm
    • constraints/compute.vmExternalIpAccess

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

  10. מגדירים משתני סביבה:
    export PROJECT_ID=PROJECT_ID
    export ADMIN_CLUSTER_NAME=ADMIN_CLUSTER_NAME
    export ON_PREM_API_REGION=ON_PREM_API_REGION
    export ZONE=ZONE
    • ADMIN_CLUSTER_NAME: השם שבוחרים לאשכול האדמין.
    • ON_PREM_API_REGION: Google Cloud האזור שבו ה-API של GKE On-Prem פועל ושבו מאוחסנים המטא-נתונים שלו. צריך לציין us-central1 או אזור נתמך אחר.
    • ZONE: Google Cloud האזור שבו נוצרות המכונות הווירטואליות של Compute Engine. אפשר להשתמש ב-us-central1-a או בכל אחד מהתחומים האחרים של Compute Engine.
  11. מריצים את הפקודות הבאות כדי להגדיר את פרויקט ברירת המחדל ואת האזור.
    gcloud config set project $PROJECT_ID
    gcloud config set compute/zone $ZONE

    אם מופיעה שגיאת PERMISSION_DENIED, צריך לבדוק שוב את מזהה הפרויקט שהזנתם. אם מזהה הפרויקט נכון, מריצים את הפקודה gcloud auth login כדי להיכנס ל-ה-CLI של gcloud באמצעות החשבון שיש לו גישה לפרויקט.

  12. כדי לקבל רשימה של גרסאות נתמכות שאפשר להתקין:
    gcloud container bare-metal admin-clusters query-version-config \
        --location=ON_PREM_API_REGION
  13. בוחרים גרסה מתוך הפלט של הפקודה הקודמת ומגדירים אותה במשתנה סביבה:
    export BMCTL_VERSION=BMCTL_VERSION

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

‫2. יצירת המכונות הווירטואליות והרשת

בקטע הזה מורידים ומריצים את הסקריפט install_admin_cluster.sh.

  1. משכפלים את מאגר anthos-samples ועוברים לספרייה שבה נמצא הסקריפט:

    git clone https://github.com/GoogleCloudPlatform/anthos-samples
    cd anthos-samples/anthos-bm-gcp-bash
    
  2. מריצים את הסקריפט:

    bash install_admin_cluster.sh
    
  3. בשורת הפקודה, מזינים 2 כדי להגדיר רק את התשתית של Compute Engine, ומאשרים את הבחירה כשמופיעה בקשה.

    הסקריפט יוצר מכונות וירטואליות ב-Compute Engine, יוצר רשת VXLAN ומגדיר את תחנת העבודה של האדמין ואת צמתי האשכול. ההגדרה של התשתית הזו נמשכת כ-5 דקות.

    כדי לקרוא מידע נוסף על התסריט, אפשר ללחוץ על הקישור הבא:

    מידע על הסקריפט

    אפשר לראות את הסקריפט בתיקייה anthos-bm-gcp-bash במאגר GitHub‏ anthos-samples. הסקריפט מבצע את הפעולות הבאות:

    1. הפעלת ממשקי ה-API הבאים: Google Cloud
      anthos.googleapis.com
      anthosaudit.googleapis.com
      anthosgke.googleapis.com
      cloudresourcemanager.googleapis.com
      connectgateway.googleapis.com
      container.googleapis.com
      compute.googleapis.com
      gkeconnect.googleapis.com
      gkehub.googleapis.com
      gkeonprem.googleapis.com
      serviceusage.googleapis.com
      stackdriver.googleapis.com
      monitoring.googleapis.com
      logging.googleapis.com
      kubernetesmetadata.googleapis.com
      iam.googleapis.com
      opsconfigmonitoring.googleapis.com
    2. במקום ליצור כמה חשבונות שירות לממשקי API ולשירותים שונים, הסקריפט יוצר חשבון שירות יחיד בשם baremetal-gcr ומקצה לו את התפקידים הבאים ב-IAM:
      • roles/gkehub.admin
      • roles/gkehub.connect
      • roles/logging.logWriter
      • roles/monitoring.dashboardEditor
      • roles/monitoring.metricWriter
      • roles/monitoring.viewer
      • roles/opsconfigmonitoring.resourceMetadata.writer
      • roles/serviceusage.serviceUsageViewer
      • roles/stackdriver.resourceMetadata.writer
    3. נוצרות מכונות וירטואליות מהסוגים הבאים:
      • מכונה וירטואלית אחת לתחנת העבודה של האדמין
      • מכונה וירטואלית אחת לצומת של מישור הבקרה של אשכול האדמין
      • שני מכונות וירטואליות לצמתים של העובדים באשכול המשתמשים
      • מכונה וירטואלית אחת לצומת של מישור הבקרה של אשכול המשתמשים
    4. מוודא ש-SSH מופעל בכל המכונות הווירטואליות, ושלתחנת העבודה של האדמין יש גישת SSH לכל המכונות הווירטואליות האחרות שנוצרו לצמתים של האשכול.
    5. יוצרת רשת שכבת-על של רשת LAN וירטואלית ניתנת להרחבה (VXLAN) לקישוריות בשכבה 2 בין המכונות הווירטואליות. רשת ה-VXLAN לא נשמרת, ולכן אם תפעילו מחדש מכונת VM, הרשת תיהרס. הרשת מוגדרת להיות ברשת המשנה 10.200.0.0/24. קישוריות בשכבה 2 היא דרישה לשימוש במאזן העומסים בחבילה.
    6. הכלי מתקין את הכלים הבאים בתחנת העבודה של האדמין:
      • bmctl
      • kubectl
      • Docker

      הסקריפט גם מוריד את המפתח של חשבון השירות של חשבון השירות baremetal-gcr לתחנת העבודה של האדמין.

    7. כדי לוודא ש-root@10.200.0.x מתחנת העבודה של האדמין פועל, מבצעים את הפעולות הבאות:
      1. המערכת יוצרת מפתח SSH חדש בתחנת העבודה של האדמין.
      2. המפתח הציבורי מתווסף לכל המכונות הווירטואליות האחרות בפריסה.

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

    ✅ Successfully set up SSH access from admin workstation to cluster node VMs.
    
    ✅ GCE Infrastructure setup complete. Please check the logs for any errors!!!
    
    ✅ If you do not see any errors in the output log, then you now have the following setup:
    
    |---------------------------------------------------------------------------------------------------------|
    | VM Name               | L2 Network IP (VxLAN) | INFO                                                    |
    |---------------------------------------------------------------------------------------------------------|
    | abm-admin-cluster-cp  | 10.200.0.3            | 🌟 Ready for use as control plane for the admin cluster |
    | abm-user-cluster-cp   | 10.200.0.4            | 🌟 Ready for use as control plane for the user cluster  |
    | abm-user-cluster-w1   | 10.200.0.5            | 🌟 Ready for use as worker for the user cluster         |
    | abm-user-cluster-w2   | 10.200.0.6            | 🌟 Ready for use as worker for the user cluster         |
    |---------------------------------------------------------------------------------------------------------|
    

3. יצירת אשכול האדמין

bmctl

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

  1. משתמשים ב-SSH כדי לגשת למכונה הווירטואלית של תחנת העבודה לאדמין, abm-ws, כמשתמש root:

    gcloud compute ssh root@abm-ws --zone ZONE
    
  2. מגדירים את פרטי הכניסה של המשתמש כ-Application Default Credentials‏ (ADC):

    gcloud auth application-default login
    

    פועלים לפי ההנחיות כדי לבחור את חשבון Google ל-ADC.

  3. יוצרים קובץ תצורה של האשכול:

    bmctl create config -c ADMIN_CLUSTER_NAME --project-id=PROJECT_ID
    
  4. בודקים את קובץ ההגדרות של אשכול האדמין:

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

    • התגובות הוסרו מהדוגמה הזו כדי לשפר את הקריאות.
    • הסקריפט יוצר חשבון שירות יחיד עם כל ההרשאות הנדרשות ומוריד את המפתח bm-gcr.json שאליו יש הפניה בקובץ ההגדרות.
    gcrKeyPath: /root/bm-gcr.json
    sshPrivateKeyPath: /root/.ssh/id_rsa
    gkeConnectAgentServiceAccountKeyPath: /root/bm-gcr.json
    gkeConnectRegisterServiceAccountKeyPath: /root/bm-gcr.json
    cloudOperationsServiceAccountKeyPath: /root/bm-gcr.json
    ---
    apiVersion: v1
    kind: Namespace
    metadata:
      name: cluster-ADMIN_CLUSTER_NAME
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: ADMIN_CLUSTER_NAME
      namespace: cluster-ADMIN_CLUSTER_NAME
    spec:
      type: admin
      profile: default
      anthosBareMetalVersion: BMCTL_VERSION
      gkeConnect:
        projectID: PROJECT_ID
      controlPlane:
        nodePoolSpec:
          nodes:
          - address: 10.200.0.3
      clusterNetwork:
        pods:
          cidrBlocks:
          - 192.168.0.0/16
        services:
          cidrBlocks:
          - 10.96.0.0/20
      loadBalancer:
        mode: bundled
        ports:
          controlPlaneLBPort: 443
        vips:
          controlPlaneVIP: 10.200.0.48
      clusterOperations:
        projectID: PROJECT_ID
        location: ON_PREM_API_REGION
      storage:
        lvpNodeMounts:
          path: /mnt/localpv-disk
          storageClassName: local-disks
        lvpShare:
          path: /mnt/localpv-share
          storageClassName: local-shared
          numPVUnderSharedPath: 5
      nodeConfig:
        podDensity:
          maxPodsPerNode: 110
    
  5. מחליפים את התוכן של קובץ ההגדרות שנוצר בתחנת העבודה של האדמין בתוכן מהדוגמה הקודמת.

    פותחים את הקובץ שנוצר, bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME.yaml ומחליפים את התוכן שלו בתוכן של הדוגמה שבדקתם בשלב הקודם.

  6. יוצרים את אשכול האדמין:

    bmctl create cluster -c ADMIN_CLUSTER_NAME

    הפקודה bmctl מציגה פלט על המסך בזמן שהיא מריצה בדיקות מקדימות ויוצרת את האשכול. מידע מפורט נכתב ליומנים בתיקייה baremetal/bmctl-workspace/abm-user-cluster-metallb/log במחשב של האדמין.

    יצירת האשכול יכולה להימשך כמה דקות.

  7. במסוף, עוברים לדף GKE clusters.

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

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

  8. נכנסים לאשכול הניהול:

    1. לוחצים על הקישור בשם האשכול ובחלונית הצדדית לוחצים על כניסה.

    2. בוחרים באפשרות שימוש בזהות שלכם ב-Google כדי להיכנס.

    3. לוחצים על התחברות.

אימות של אשכול האדמין

קובץ ה-kubeconfig של אשכול האדמין נמצא בתחנת העבודה של האדמין בספרייה bmctl-workspace של חשבון הבסיס. כדי לאמת את הפריסה, מבצעים את השלבים הבאים:

  1. משתמשים ב-SSH כדי לגשת לתחנת העבודה של האדמין כ-root:

    gcloud compute ssh root@abm-ws --zone ZONE
    
  2. מוודאים שנוצר אשכול אדמין והוא פועל:

    kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig get nodes
    

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

    NAME                   STATUS   ROLES              AGE      VERSION
    abm-admin-cluster-cp   Ready    control-plane      94m      1.31.300-gke.81
    
  3. כשמסיימים את הבדיקה, מזינים exit כדי להתנתק מתחנת העבודה של האדמין.

המסוף

כדי ליצור אשכול אדמין במסוף, צריך להריץ את הפקודה bmctl register bootstrap ממכונת ה-VM של תחנת העבודה של האדמין כדי ליצור אשכול bootstrap. בזמן שהפקודה bmctl register bootstrap פועלת, מבצעים את השלבים במסוף כדי ליצור את אשכול האדמין.

הזנת נתונים בסיסיים של סביבת האתחול

  1. נכנסים לדף GKE clusters במסוף Google Cloud .

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

  2. לוחצים על יצירה.

  3. בתיבת הדו-שיח יצירת אשכול, בוחרים באפשרות On-premises (במקום) ולוחצים על הגדרה לשרת פיזי.

  4. חשוב לבחור את הפרויקט PROJECT_ID מהרשימה.

  5. בסרגל הניווט הימני, לוחצים על Install bootstrap environment (התקנת סביבת bootstrap).

  6. מזינים ADMIN_CLUSTER_NAME בתור שם אשכול האדמין.

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

  8. בשדה Google Cloud API Location, בוחרים באפשרות ON_PREM_API_REGION מהרשימה. ההגדרה הזו מציינת את האזור שבו פועל GKE On-Prem API, ואת האזור שבו מאוחסנים הרכיבים הבאים:

    • מטא-נתונים של האשכול שנדרשים ל-GKE On-Prem API כדי לנהל את מחזור החיים של האשכול
    • הנתונים של רכיבי המערכת ב-Cloud Logging וב-Cloud Monitoring
    • יומן הביקורת של האדמין שנוצר על ידי יומני הביקורת של Cloud

    השם, הפרויקט והמיקום של האשכול מזהים אותו באופן ייחודי ב- Google Cloud.

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

יצירת אשכול האתחול

כשמשתמשים בלקוח GKE On-Prem API, כמו המסוף, כדי ליצור אשכול אדמין, צריך ליצור אשכול bootstrap בתחנת העבודה של האדמין. אשכול האתחול מארח את בקרי Kubernetes שנדרשים ליצירת אשכול האדמין.

  1. משורת הפקודה, משתמשים ב-SSH כדי לגשת למכונה הווירטואלית של תחנת העבודה של האדמין כ-root:

    gcloud compute ssh root@abm-ws --zone ZONE
    

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

  2. מגדירים את פרטי הכניסה של המשתמש כ-Application Default Credentials‏ (ADC):

    gcloud auth application-default login
    

    פועלים לפי ההנחיות כדי לבחור את חשבון Google ל-ADC.

  3. עוברים לספרייה baremetal/ ומריצים את הפקודה הבאה כדי ליצור את אשכול האתחול.

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

    bmctl register bootstrap \
      --ssh-key=/root/.ssh/id_rsa \
      --name=bootstrap-ADMIN_CLUSTER_NAME \
      --project-id=PROJECT_ID
    

    אחרי ש-bmctl יוצר בהצלחה את אשכול האתחול, מוצגת פלט שדומה לזה:

    [2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK
    [2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster
    [2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..
    

יצירת אשכול האדמין

  1. בדף Install bootstrap environment (התקנת סביבת bootstrap) בקטע Bootstrap environment from admin workstation (סביבת bootstrap מתחנת עבודה של אדמין), לוחצים על Check Connection (בדיקת החיבור).

    אם הפעולה מצליחה, מוצגת בהודעה הבאה במסוף: Connection established.

    צריך ליצור את החיבור לאשכול bootstrap לפני שממשיכים. אם החיבור לא נוצר, צריך לבדוק את הארגומנטים שציינתם בפקודה bmctl register bootstrap:

    • מוודאים שהערך של --name זהה לשם ה-bootstrap הנגזר שמוצג בקטע Bootstrap environment basics.

    • מוודאים שהערך של --project-id תואם למזהה של הפרויקט שבחרתם במסוף.

    אם אתם צריכים לשנות את שם אשכול ה-bootstrap או את מזהה הפרויקט, מזינים Ctrl-C כדי לצאת מ-bmctl register bootstrap ומריצים מחדש את הפקודה.

Networking

  1. בסרגל הניווט הימני, לוחצים על Networking (רשת).

  2. בקטע מישור הבקרה, מזינים את הכתובת הבאה בשדה Control plane node IP 1:

    10.200.0.3
    

    זו כתובת ה-IP של המכונה הווירטואלית abm-admin-cluster-cp ב-VXLAN שנוצר על ידי הסקריפט.

  3. בקטע Load balancer, מוודאים שהאפשרות Bundled מסומנת.

  4. בקטע Virtual IPs (VIPs), מזינים את הפרטים הבאים בשדה VIP של מישור הבקרה:

    10.200.0.48
    

    השלב הבא תלוי בזמינות של אשכול האתחול. הפקודה bmctl register bootstrap בחלון הטרמינל צריכה לפעול כמה דקות לפני שקלאסטר האתחול יופיע כחבר רשום. אם אחרי כמה דקות הוא עדיין לא זמין, צריך לבדוק את שם אשכול ה-bootstrap ואת מזהה הפרויקט שבהם השתמשתם. אם אתם צריכים לשנות את שם אשכול ה-bootstrap או את מזהה הפרויקט, מזינים Ctrl-C בחלון הטרמינל השני כדי לצאת מ-bmctl register bootstrap ולהריץ מחדש את הפקודה.

  5. לוחצים על אימות ויצירה.

    במסוף מוצגות הודעות סטטוס בזמן שההגדרות מאומתות והאשכול נוצר.

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

    ...
    [2024-04-15 23:10:48+0000] Waiting for cluster to become ready OK
    [2024-04-15 23:16:38+0000] Please run
    [2024-04-15 23:16:38+0000] kubectl --kubeconfig bmctl-workspace/gce-admin-gcloud-001/gce-admin-gcloud-001-kubeconfig get nodes
    [2024-04-15 23:16:38+0000] to get cluster nodes status.
    [2024-04-15 23:16:38+0000] Waiting for node pools to become ready OK
    [2024-04-15 23:16:58+0000] Waiting for metrics to become ready in GCP OK
    [2024-04-15 23:21:58+0000] Waiting for cluster API provider to install in the created admin cluster OK
    [2024-04-15 23:22:08+0000] Moving admin cluster resources to the created admin cluster
    [2024-04-15 23:22:10+0000] Waiting for node update jobs to finish OK
    [2024-04-15 23:24:30+0000] Flushing logs... OK
    [2024-04-15 23:24:30+0000] Unregistering bootstrap cluster.
    [2024-04-15 23:24:30+0000] Deleting membership... OK
    [2024-04-15 23:24:32+0000] Deleting bootstrap cluster.
    

אימות של אשכול האדמין

קובץ ה-kubeconfig של אשכול האדמין נמצא בתחנת העבודה של האדמין בספרייה bmctl-workspace של חשבון הבסיס. כדי לאמת את הפריסה, מבצעים את השלבים הבאים:

  1. משתמשים ב-SSH כדי לגשת לתחנת העבודה של האדמין כ-root:

    gcloud compute ssh root@abm-ws --zone ZONE
    
  2. מוודאים שנוצר אשכול אדמין והוא פועל:

    kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig get nodes
    

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

    NAME                   STATUS   ROLES              AGE      VERSION
    abm-admin-cluster-cp   Ready    control-plane      94m      1.31.300-gke.81
    
  3. כשמסיימים את הבדיקה, מזינים exit כדי להתנתק מתחנת העבודה של האדמין.

‫CLI של gcloud

כדי לבצע את הפעולות האלה תצטרכו להשתמש בשני חלונות טרמינל. בחלון מסוף אחד, מריצים את הפקודה bmctl register bootstrap כדי ליצור אשכול bootstrap. בזמן שהפקודה bmctl register bootstrap פועלת, מריצים את הפקודה gcloud container bare-metal admin-clusters create בחלון טרמינל אחר כדי ליצור את אשכול האדמין.

יצירת אשכול האתחול

כשמשתמשים בלקוח API של GKE On-Prem, כמו ה-CLI של gcloud, כדי ליצור אשכול אדמין, צריך ליצור אשכול bootstrap בתחנת העבודה של האדמין. אשכול האתחול מארח את בקרי Kubernetes שנדרשים ליצירת אשכול האדמין.

  1. משורת הפקודה, משתמשים ב-SSH כדי לגשת למכונה הווירטואלית של תחנת העבודה של האדמין כ-root:

    gcloud compute ssh root@abm-ws --zone ZONE
    

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

  2. מגדירים את פרטי הכניסה של המשתמש כ-Application Default Credentials‏ (ADC):

    gcloud auth application-default login
    

    פועלים לפי ההנחיות כדי לבחור את חשבון Google ל-ADC.

  3. עוברים לספרייה baremetal/ ומריצים את הפקודה הבאה כדי ליצור את אשכול האתחול.

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

    bmctl register bootstrap \
      --ssh-key=/root/.ssh/id_rsa \
      --name=bootstrap-ADMIN_CLUSTER_NAME \
      --project-id=PROJECT_ID
    

    אחרי ש-bmctl יוצר בהצלחה את אשכול האתחול, מוצגת פלט שדומה לזה:

    [2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK
    [2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster
    [2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..
    

יצירת אשכול האדמין

  1. בחלון מסוף חדש, מוודאים שאשכול האתחול נרשם כחבר ב-Fleet:

    gcloud container fleet memberships list \
        --project=PROJECT_ID
    

    הפקודה gcloud container bare-metal admin-clusters create בשלב הבא תלויה בזמינות של אשכול האתחול. הפקודה bmctl register bootstrap בחלון הטרמינל השני צריכה לפעול במשך כמה דקות לפני שקלאסטר ה-bootstrap יוצג כחבר רשום. אם אחרי כמה דקות הוא עדיין לא מופיע, צריך לבדוק את שם אשכול האתחול ואת מזהה הפרויקט שבהם השתמשתם. אם אתם צריכים לשנות את שם אשכול האתחול או את מזהה הפרויקט, מזינים Ctrl-C בחלון הטרמינל השני כדי לצאת מ-bmctl register bootstrap ולהריץ מחדש את הפקודה.

  2. יוצרים את אשכול האדמין באמצעות מאזן העומסים שצורף:

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

    gcloud container bare-metal admin-clusters create ADMIN_CLUSTER_NAME \
        --project=PROJECT_ID \
        --location=ON_PREM_API_REGION \
        --version=BMCTL_VERSION \
        --max-pods-per-node=110 \
        --control-plane-vip=10.200.0.48 \
        --control-plane-load-balancer-port=443 \
        --control-plane-node-configs node-ip=10.200.0.3 \
        --island-mode-service-address-cidr-blocks=10.96.0.0/20 \
        --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \
        --lvp-share-path=/mnt/localpv-share \
        --lvp-share-storage-class=local-shared \
        --lvp-node-mounts-config-path=/mnt/localpv-disk \
        --lvp-node-mounts-config-storage-class=local-disks
    

    בפקודה הזו:

    • --control-plane-vip: הערך שהוגדר הוא 10.200.0.48. זוהי כתובת ה-IP הווירטואלית (VIP) במאזן העומסים של שרת ה-API של Kubernetes באשכול.

    • --control-plane-node-configs: הערך של node-ip הוא 10.200.0.3. זו כתובת ה-IP של המכונה הווירטואלית abm-admin-cluster-cp ב-VXLAN שנוצר על ידי הסקריפט.

    רשימה מלאה של הדגלים והתיאורים שלהם זמינה במאמרי העזרה של ה-CLI של gcloud.

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

    Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.

    בפלט לדוגמה, המחרוזת operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179 היא OPERATION_ID של הפעולה ארוכת הטווח. כדי לברר את סטטוס הפעולה, מריצים את הפקודה הבאה בחלון מסוף אחר:

    gcloud container bare-metal operations describe OPERATION_ID \
        --project=PROJECT_ID \
        --location=ON_PREM_API_REGION
    

    אם הפקודה gcloud container bare-metal admin-clusters create מסתיימת בלי שגיאות, הפלט שלה ייראה כך:

    Created Anthos on bare metal Admin Cluster
    [https://gkeonprem.googleapis.com/v1/projects/anonuser-anonproject/locations/us-central1/bareMetalAdminClusters/gce-admin-gcloud-001].
    NAME           LOCATION     VERSION           MEMBERSHIP     STATE
    abm-cluster-1  us-central1      1.31.300-gke.81 abm-cluster-1  RUNNING
    

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

    ...
    [2024-04-15 23:10:48+0000] Waiting for cluster to become ready OK
    [2024-04-15 23:16:38+0000] Please run
    [2024-04-15 23:16:38+0000] kubectl --kubeconfig bmctl-workspace/gce-admin-gcloud-001/gce-admin-gcloud-001-kubeconfig get nodes
    [2024-04-15 23:16:38+0000] to get cluster nodes status.
    [2024-04-15 23:16:38+0000] Waiting for node pools to become ready OK
    [2024-04-15 23:16:58+0000] Waiting for metrics to become ready in GCP OK
    [2024-04-15 23:21:58+0000] Waiting for cluster API provider to install in the created admin cluster OK
    [2024-04-15 23:22:08+0000] Moving admin cluster resources to the created admin cluster
    [2024-04-15 23:22:10+0000] Waiting for node update jobs to finish OK
    [2024-04-15 23:24:30+0000] Flushing logs... OK
    [2024-04-15 23:24:30+0000] Unregistering bootstrap cluster.
    [2024-04-15 23:24:30+0000] Deleting membership... OK
    [2024-04-15 23:24:32+0000] Deleting bootstrap cluster.
    

אימות של אשכול האדמין

קובץ ה-kubeconfig של אשכול האדמין נמצא בתחנת העבודה של האדמין בספרייה bmctl-workspace של חשבון הבסיס. כדי לאמת את הפריסה, מבצעים את השלבים הבאים:

  1. משתמשים ב-SSH כדי לגשת לתחנת העבודה של האדמין כ-root:

    gcloud compute ssh root@abm-ws --zone ZONE
    
  2. מוודאים שנוצר אשכול אדמין והוא פועל:

    kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig get nodes
    

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

    NAME                   STATUS   ROLES              AGE      VERSION
    abm-admin-cluster-cp   Ready    control-plane      94m      1.31.300-gke.81
    
  3. כשמסיימים את הבדיקה, מזינים exit כדי להתנתק מתחנת העבודה של האדמין.

Terraform

כדי לבצע את הפעולות האלה תצטרכו להשתמש בשני חלונות טרמינל. בחלון מסוף אחד, מריצים את הפקודה bmctl register bootstrap כדי ליצור אשכול bootstrap. בזמן שהפקודה bmctl register bootstrap פועלת, מריצים את פקודות Terraform בחלון טרמינל אחר כדי ליצור את אשכול האדמין.

שינוי קובצי דוגמה של אשכול משתמשים כדי שיתאימו לאשכול אדמין

מאגר anthos-samples לא כולל דוגמה שמתייחסת ספציפית ליצירת אשכול אדמין ב-Google Distributed Cloud. בשלבים הבאים מוסבר איך ליצור אשכול אדמין על ידי שינוי דוגמה קיימת של Terraform לאשכול משתמשים.

  1. בספרייה שבה שיבטתם את anthos-samples, מריצים את הפקודה הבאה כדי להעתיק את קובצי הדוגמה של אשכול המשתמשים של MetalLB לתיקייה חדשה של אשכול הניהול:

    cp -r anthos-samples/anthos-onprem-terraform/abm_user_cluster_metallb \
        anthos-samples/anthos-onprem-terraform/abm_admin_cluster_basic
    
  2. עוברים לספרייה abm_admin_cluster_basic:

    cd anthos-samples/anthos-onprem-terraform/abm_admin_cluster_basic
    
  3. עורכים את קובצי Terraform:

    • variables.tf:

      • מגדירים משתנה לכתובות ה-IP של הצומת במישור הבקרה (למרות שבסרטון ההדגמה הזה אנחנו משתמשים רק באחת). המשתנה הזה צריך להיות דומה לרשומה variable "control_plane_ips" { ... }.

      • מגדירים משתנה לכתובת ה-VIP של מישור הבקרה. המשתנה הזה צריך להיות דומה לרשומה variable "control_plane_vip" { ... }.

    • terraform.tfvars:

      • הקצאת ערכי משתנים להגדרות הבאות של אשכולות אדמין:

        • כתובות ה-IP של צומתי מישור הבקרה: 10.200.0.3

        • כתובת VIP של מישור הבקרה: 10.200.0.48

    • main.tf:

      • מחליפים את המשאב google_gkeonprem_bare_metal_cluster במשאב google_gkeonprem_bare_metal_admin_cluster.

      • מוחקים את המשאב google_gkeonprem_bare_metal_node_pool ואת הקטע lifecycle שקשור אליו.

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

    דוגמה לאופן שבו קובץ main.tf עשוי להיראות אחרי עריכה כדי ליצור אשכול אדמין:

    /**
    * Copyright 2023 Google LLC
    *
    * Licensed under the Apache License, Version 2.0 (the "License");
    * you may not use this file except in compliance with the License.
    * You may obtain a copy of the License at
    *
    *      http://www.apache.org/licenses/LICENSE-2.0
    *
    * Unless required by applicable law or agreed to in writing, software
    * distributed under the License is distributed on an "AS IS" BASIS,
    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    * See the License for the specific language governing permissions and
    * limitations under the License.
    */
    
    #[START anthos_onprem_terraform_bare_metal_admin_cluster_basic_main]
    
    module "enable_google_apis_primary" {
      source     = "terraform-google-modules/project-factory/google//modules/project_services"
      version    = "~> 14.0"
      project_id = var.project_id
      activate_apis = [
        "anthos.googleapis.com",
        "anthosaudit.googleapis.com",
        "anthosgke.googleapis.com",
        "cloudresourcemanager.googleapis.com",
        "compute.googleapis.com",
        "connectgateway.googleapis.com",
        "container.googleapis.com",
        "file.googleapis.com",
        "gkehub.googleapis.com",
        "iam.googleapis.com",
        "kubernetesmetadata.googleapis.com",
        "logging.googleapis.com",
        "monitoring.googleapis.com",
        "opsconfigmonitoring.googleapis.com",
        "serviceusage.googleapis.com",
        "stackdriver.googleapis.com"
      ]
      disable_services_on_destroy = false
    }
    
    # Enable GKE OnPrem API
    resource "google_project_service" "default" {
      project            = var.project_id
      service            = "gkeonprem.googleapis.com"
      disable_on_destroy = false
    }
    
    # Create a baremetal admin cluster and enroll it with the gkeonprem API
    resource "google_gkeonprem_bare_metal_admin_cluster" "admin-cluster-basic" {
      name                     = var.admin_cluster_name
      description              = "Bare metal admin cluster"
      provider                 = google
      depends_on               = [google_project_service.default]
      location                 = var.region
      bare_metal_version       = var.bare_metal_version
      network_config {
        island_mode_cidr {
          service_address_cidr_blocks = ["0.96.0.0/20"]
          pod_address_cidr_blocks     = ["192.168.0.0/16"]
        }
      }
      node_config {
        max_pods_per_node = 250
      }
      control_plane {
        control_plane_node_pool_config {
          node_pool_config {
            operating_system = "LINUX"
            dynamic "node_configs" {
              for_each = var.admin_cp_ips
              content {
                node_ip = node_configs.value
              }
            }
          }
        }
      }
      load_balancer {
        port_config {
          control_plane_load_balancer_port = 443
        }
        vip_config {
          control_plane_vip = var.admin_cp_vip
        }
      }
      storage {
        lvp_share_config {
          lvp_config {
            path = "/mnt/localpv-share"
            storage_class = "local-shared"
          }
          shared_path_pv_count = 5
        }
        lvp_node_mounts_config {
          path = "/mnt/localpv-disk"
          storage_class = "local-disks"
        }
      }
    
      dynamic "security_config" {
        for_each = length(var.admin_user_emails) == 0 ? [] : [1]
        content {
          authorization {
            dynamic "admin_users" {
              for_each = var.admin_user_emails
              content {
                username = admin_users.value
              }
            }
          }
        }
      }
    
      lifecycle {
        ignore_changes = [
          annotations["onprem.cluster.gke.io/user-cluster-resource-link"],
          annotations["alpha.baremetal.cluster.gke.io/cluster-metrics-webhook"],
          annotations["baremetal.cluster.gke.io/operation"],
          annotations["baremetal.cluster.gke.io/operation-id"],
          annotations["baremetal.cluster.gke.io/start-time"],
          annotations["baremetal.cluster.gke.io/upgrade-from-version"]
        ]
      }
    }
    
    #[END anthos_onprem_terraform_bare_metal_admin_cluster_basic_main]
    

    מידע נוסף על משאב Terraform לאשכולות אדמין זמין במאמר google_gkeonprem_bare_metal_admin_cluster במאגר Terraform.

יצירת אשכול האתחול

כשמשתמשים בלקוח GKE On-Prem API, כמו Terraform, כדי ליצור אשכול אדמין, צריך ליצור אשכול bootstrap בתחנת העבודה של האדמין. אשכול האתחול מארח את בקרי Kubernetes שנדרשים ליצירת אשכול האדמין.

  1. משורת הפקודה, משתמשים ב-SSH כדי לגשת למכונה הווירטואלית של תחנת העבודה של האדמין כ-root:

    gcloud compute ssh root@abm-ws --zone ZONE
    

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

  2. מגדירים את פרטי הכניסה של המשתמש כ-Application Default Credentials‏ (ADC):

    gcloud auth application-default login
    

    פועלים לפי ההנחיות כדי לבחור את חשבון Google ל-ADC.

  3. עוברים לספרייה baremetal/ ומריצים את הפקודה הבאה כדי ליצור את אשכול האתחול.

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

    bmctl register bootstrap \
      --ssh-key=/root/.ssh/id_rsa \
      --name=bootstrap-ADMIN_CLUSTER_NAME \
      --project-id=PROJECT_ID
    

    אחרי ש-bmctl יוצר בהצלחה את אשכול האתחול, מוצגת פלט שדומה לזה:

    [2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK
    [2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster
    [2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..
    

יצירת אשכול האדמין

  1. מפעילים את Terraform ויוצרים תוכנית ב-Terraform:

    terraform init
    

    ‫Terraform מתקין את כל הספריות הנדרשות, כמו פלאגין שמתממשק עם שירותים חיצוניים Google Cloud .

  2. בודקים את ההגדרות ומבצעים שינויים לפי הצורך:

    terraform plan
    
  3. מחילים את תוכנית Terraform כדי ליצור את אשכול האדמין:

    terraform apply
    

    יצירת אשכול האדמין נמשכת 15 דקות או יותר. בסיום יצירת האשכול, תופיע הודעה כמו הבאה:

    ...
    google_gkeonprem_bare_metal_admin_cluster.admin-cluster-basic: Still creating... [20m10s elapsed]
    google_gkeonprem_bare_metal_admin_cluster.admin-cluster-basic: Creation complete after 20m11s
    [id=projects/anonuser-anonproject/locations/us-central1/bareMetalAdminClusters/gce-admin-terra002]
    
    Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
    

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

    ...
    [2024-04-15 23:10:48+0000] Waiting for cluster to become ready OK
    [2024-04-15 23:16:38+0000] Please run
    [2024-04-15 23:16:38+0000] kubectl --kubeconfig bmctl-workspace/gce-admin-gcloud-001/gce-admin-gcloud-001-kubeconfig get nodes
    [2024-04-15 23:16:38+0000] to get cluster nodes status.
    [2024-04-15 23:16:38+0000] Waiting for node pools to become ready OK
    [2024-04-15 23:16:58+0000] Waiting for metrics to become ready in GCP OK
    [2024-04-15 23:21:58+0000] Waiting for cluster API provider to install in the created admin cluster OK
    [2024-04-15 23:22:08+0000] Moving admin cluster resources to the created admin cluster
    [2024-04-15 23:22:10+0000] Waiting for node update jobs to finish OK
    [2024-04-15 23:24:30+0000] Flushing logs... OK
    [2024-04-15 23:24:30+0000] Unregistering bootstrap cluster.
    [2024-04-15 23:24:30+0000] Deleting membership... OK
    [2024-04-15 23:24:32+0000] Deleting bootstrap cluster.
    

  4. במסוף, עוברים לדף GKE clusters.

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

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

  5. נכנסים לאשכול הניהול:

    1. לוחצים על הקישור בשם האשכול ובחלונית הצדדית לוחצים על כניסה.

    2. בוחרים באפשרות שימוש בזהות שלכם ב-Google כדי להיכנס.

    3. לוחצים על התחברות.

אימות של אשכול האדמין

קובץ ה-kubeconfig של אשכול האדמין נמצא בתחנת העבודה של האדמין בספרייה bmctl-workspace של חשבון הבסיס. כדי לאמת את הפריסה, מבצעים את השלבים הבאים:

  1. משתמשים ב-SSH כדי לגשת לתחנת העבודה של האדמין כ-root:

    gcloud compute ssh root@abm-ws --zone ZONE
    
  2. מוודאים שנוצר אשכול אדמין והוא פועל:

    kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig get nodes
    

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

    NAME                   STATUS   ROLES              AGE      VERSION
    abm-admin-cluster-cp   Ready    control-plane      94m      1.31.300-gke.81
    
  3. כשמסיימים את הבדיקה, מזינים exit כדי להתנתק מתחנת העבודה של האדמין.

4. יצירת אשכול המשתמשים

אפשר להשתמש במסוף, ב-Google Cloud CLI או ב-Terraform כדי ליצור את אשכול המשתמשים. כדי לפשט את התהליך, משתמשים ב-abm-user-cluster-metallb כשם של אשכול המשתמשים, כדי שיתאים לשם שמוגדר בהארדקוד בסקריפטים של Terraform. Google Cloud

bmctl

  1. משתמשים ב-SSH כדי לגשת למכונה הווירטואלית של תחנת העבודה לאדמין, abm-ws, כמשתמש root:

    gcloud compute ssh root@abm-ws --zone ZONE
    
  2. יוצרים קובץ תצורה של האשכול:

    bmctl create config -c abm-user-cluster-metallb \
        --project-id=PROJECT_ID
  3. בקובץ ההגדרות של אשכול המשתמשים הבא, מגדירים את כתובת האימייל בקטע clusterSecurity ומאמתים את שאר ההגדרות:

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

    • התגובות הוסרו מהדוגמה הזו כדי לשפר את הקריאות.
    • הוסר הקטע של פרטי הכניסה, כמו שקורה בדרך כלל באשכולות משתמשים.
    • סוג האשכול, spec.type, הוגדר לערך user.
    • השדה spec.clusterSecurity.authorization.clusterAdmin.gcpAccounts נוסף כדי להעניק לחשבון שלך את התפקיד clusterrole/cluster-admin. בין היתר, השדה הזה מאפשר לכם להיכנס לאשכול במסוףGoogle Cloud כדי לראות פרטים נוספים על האשכול.
    ---
    apiVersion: v1
    kind: Namespace
    metadata:
      name: cluster-abm-user-cluster-metallb
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: abm-user-cluster-metallb
      namespace: cluster-abm-user-cluster-metallb
    spec:
      type: user
      profile: default
      anthosBareMetalVersion: BMCTL_VERSION
      gkeConnect:
        projectID: PROJECT_ID
      controlPlane:
        nodePoolSpec:
          nodes:
          - address: 10.200.0.4
      clusterNetwork:
        pods:
          cidrBlocks:
          - 192.168.0.0/16
        services:
          cidrBlocks:
          - 10.96.0.0/20
      loadBalancer:
        mode: bundled
        ports:
          controlPlaneLBPort: 443
        vips:
          controlPlaneVIP: 10.200.0.50
          ingressVIP: 10.200.0.51
        addressPools:
        - name: pool1
          addresses:
          - 10.200.0.51-10.200.0.70
      clusterOperations:
        projectID: PROJECT_ID
        location: ON_PREM_API_REGION
      clusterSecurity:
        authorization:
          clusterAdmin:
            gcpAccounts:
            - YOUR_EMAIL_ADDRESS
      storage:
        lvpNodeMounts:
          path: /mnt/localpv-disk
          storageClassName: local-disks
        lvpShare:
          path: /mnt/localpv-share
          storageClassName: local-shared
          numPVUnderSharedPath: 5
      nodeConfig:
        podDensity:
          maxPodsPerNode: 250
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: NodePool
    metadata:
      name: node-pool-1
      namespace: cluster-abm-user-cluster-metallb
    spec:
      clusterName: abm-user-cluster-metallb
      nodes:
      - address: 10.200.0.5
    
  4. מחליפים את התוכן של קובץ ההגדרות שנוצר בתחנת העבודה של האדמין בתוכן מהדוגמה הקודמת.

    פותחים את הקובץ שנוצר, bmctl-workspace/abm-user-cluster-metallb/abm-user-cluster-metallb.yaml, ומחליפים את התוכן שלו בתוכן של הדוגמה שבדקתם בשלב הקודם.

  5. יוצרים את אשכול המשתמשים:

    bmctl create cluster -c abm-user-cluster-metallb \
      --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig

    הפקודה bmctl מציגה פלט על המסך בזמן שהיא מריצה בדיקות מקדימות ויוצרת את האשכול. מידע מפורט נכתב ליומנים בתיקייה baremetal/bmctl-workspace/abm-user-cluster-metallb/log במחשב של האדמין.

    יצירת האשכול יכולה להימשך כמה דקות.

  6. נכנסים לדף GKE clusters במסוף Google Cloud .

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

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

  7. נכנסים אל אשכול המשתמשים:

    1. לוחצים על הקישור בשם האשכול ובחלונית הצדדית לוחצים על כניסה.

    2. בוחרים באפשרות שימוש בזהות שלכם ב-Google כדי להיכנס.

    3. לוחצים על התחברות.

    חוזרים על אותם השלבים כדי להיכנס לאשכול הניהול.

המסוף

כדי ליצור אשכול משתמשים במסוף:

  1. במסוף, נכנסים לדף Create a bare metal cluster.

    כניסה לדף Create a bare metal cluster

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

  3. לוחצים על יצירת אשכול.

  4. בתיבת הדו-שיח, לוחצים על On-premises (בשרת מקומי).

  5. לצד Bare metal, לוחצים על Configure (הגדרה). יוצג הדף Prerequisites (דרישות מוקדמות).

  6. בקטע Choose your cluster type (בחירת סוג האשכול), בוחרים באפשרות Create a user cluster for an existing admin cluster (יצירת אשכול משתמשים עבור אשכול אדמין קיים).

  7. לוחצים על הבא.

מידע בסיסי על אשכולות

  1. מזינים שם לאשכול המשתמשים או משתמשים בשם ברירת המחדל.

  2. מוודאים שנבחרה קבוצת האדמינים החדשה שיצרתם. אפשר להשתמש בהגדרות ברירת המחדל לכל שאר ההגדרות בדף הזה.

  3. בסרגל הניווט הימני, לוחצים על Networking (רשת).

Networking

הסקריפט שהפעלתם כדי ליצור מכונות וירטואליות ואת אשכול האדמין יצר גם VXLAN בשכבה 2 עם כתובות IP ברשת המשנה 10.200.0.0/24.

  1. בקטע מישור הבקרה, מזינים את הפרטים הבאים בשדה Control plane node IP 1:

    10.200.0.4
    

    זו כתובת ה-IP של המכונה הווירטואלית abm-user-cluster-cp1 ב-VXLAN שנוצר על ידי הסקריפט.

  2. בקטע Load balancer, משתמשים במאזן העומסים שמוגדר כברירת מחדל, Bundled with MetalLB.

  3. בקטע New address pool, מזינים את טווח כתובות ה-IP הבא בשדה IP address range 1:

    10.200.0.51-10.200.0.70
    
  4. לוחצים על סיום.

  5. בקטע Virtual IPs, מזינים את כתובת ה-IP הבאה בשדה Control Plane VIP:

    10.200.0.50
    
  6. מזינים את כתובת ה-IP הבאה בשדה Ingress VIP:

    10.200.0.51
    
  7. משתמשים בכתובות ה-IP שמוגדרות כברירת מחדל בקטע Service and Pod CIDRs.

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

יצירת מאגר צמתים

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

  1. מזינים את כתובת ה-IP הבאה בשדה Nodes address 1:

    10.200.0.5
    

    זו כתובת ה-IP של המכונה הווירטואלית abm-user-cluster-w1 ב-VXLAN שנוצר על ידי הסקריפט.

יצירת האשכול

  1. לוחצים על Verify and Create (אימות ויצירה) כדי ליצור את אשכול המשתמשים.

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

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

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

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

  2. אחרי שיוצרים את האשכול, לוחצים על Clusters כדי לחזור לדף Clusters.

  3. נכנסים אל אשכול המשתמשים:

    1. לוחצים על הקישור בשם האשכול ובחלונית הצדדית לוחצים על כניסה.

    2. בוחרים באפשרות שימוש בזהות שלכם ב-Google כדי להיכנס.

    3. לוחצים על התחברות.

    חוזרים על אותם השלבים כדי להיכנס לאשכול הניהול.

‫CLI של gcloud

כדי ליצור את אשכול המשתמשים:

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

    gcloud container bare-metal clusters create abm-user-cluster-metallb \
        --project=PROJECT_ID \
        --admin-cluster-membership=projects/PROJECT_ID/locations/ON_PREM_API_REGION/memberships/ADMIN_CLUSTER_NAME \
        --location=ON_PREM_API_REGION \
        --version=BMCTL_VERSION \
        --admin-users=YOUR_EMAIL_ADDRESS \
        --metal-lb-address-pools='pool=lb-pool-1,manual-assign=True,addresses=10.200.0.51-10.200.0.70' \
        --control-plane-node-configs='node-ip=10.200.0.4' \
        --control-plane-vip=10.200.0.50 \
        --control-plane-load-balancer-port=443 \
        --ingress-vip=10.200.0.51 \
        --island-mode-service-address-cidr-blocks=10.96.0.0/20 \
        --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \
        --lvp-share-path=/mnt/localpv-share \
        --lvp-share-storage-class=local-shared \
        --lvp-node-mounts-config-path=/mnt/localpv-disk \
        --lvp-node-mounts-config-storage-class=local-disks
    

    אחרי הרצת הפקודה, הפלט אמור להיראות כך:

    Waiting for operation [projects/PROJECT_ID/locations/ON_PREM_API_REGION/operations/operation-1678304606537-5f668bde5c57e-341effde-b612ff8a] to complete...
    

    בפלט לדוגמה, המחרוזת operation-1678304606537-5f668bde5c57e-341effde-b612ff8a היא OPERATION_ID של הפעולה ארוכת הטווח.

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

    gcloud container bare-metal operations describe OPERATION_ID \
        --project=PROJECT_ID \
        --location=ON_PREM_API_REGION
    

    מחליפים את OPERATION_ID במחרוזת המתאימה מהפלט של השלב הקודם.

    יצירת האשכול נמשכת כ-15 דקות או יותר. במהלך יצירת האשכול, אפשר להריץ את הפקודה הקודמת מדי פעם כדי לקבל את הסטטוס הנוכחי.

    כשיוצרים את האשכול, מוצג פלט כמו זה:

    Created Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/ON_PREM_API_REGION/bareMetalClusters/abm-user-cluster-metallb].

    מידע נוסף על הפקודה gcloud container bare-metal clusters create, כולל תיאורים של כל דגל, זמין בדף container bare-metal clusters create של משאב האשכולות במדריך העזר ל-CLI של gcloud.

יצירת מאגר צמתים

אחרי שהאשכול נוצר בהצלחה, אפשר ליצור מאגר צמתים לאשכול.

כדי ליצור מאגר צמתים:

  1. מריצים את הפקודה הבאה כדי ליצור מאגר צמתים:

    gcloud container bare-metal node-pools create NODE_POOL_NAME \
        --cluster=abm-user-cluster-metallb \
        --project=PROJECT_ID \
        --location=ON_PREM_API_REGION \
        --node-configs='node-ip=10.200.0.5'
    

    מחליפים את NODE_POOL_NAME בשם של מאגר הצמתים.

    אחרי הרצת הפקודה, הפלט אמור להיראות כך:

    Waiting for operation [projects/PROJECT_ID/locations/ON_PREM_API_REGION/operations/operation-1678308682052-5f669b0d132cb-6ebd1c2c-816287a7] to complete...
    

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

    Created node pool in Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/ON_PREM_API_REGION/bareMetalClusters/abm-user-cluster-metallb/bareMetalNodePools/NODE_POOL_NAME].
    
  2. נכנסים לדף Kubernetes clusters במסוף:

    כניסה לדף Create a bare metal cluster

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

  3. נכנסים אל אשכול המשתמשים:

    1. לוחצים על הקישור בשם האשכול ובחלונית הצדדית לוחצים על כניסה.

    2. בוחרים באפשרות שימוש בזהות שלכם ב-Google כדי להיכנס.

    3. לוחצים על התחברות.

    חוזרים על אותם השלבים כדי להיכנס לאשכול הניהול.

Terraform

אפשר להשתמש בדוגמה הבסיסית הבאה להגדרה כדי ליצור אשכול משתמשים עם איזון עומסים של MetalLB בחבילה. מידע נוסף מופיע בgoogle_gkeonprem_bare_metal_clusterמאמרי העזרה.

  1. בספרייה שבה שיבטתם את anthos-samples, עוברים לספרייה שבה נמצאת הדוגמה של Terraform:

    cd anthos-samples/anthos-onprem-terraform/abm_user_cluster_metallb
    

    בדוגמה יש קובץ משתנים לדוגמה שאפשר להעביר אל main.tf.

  2. יוצרים עותק של הקובץ terraform.tfvars.sample:

    cp terraform.tfvars.sample terraform.tfvars
    
  3. בודקים את הערכים בדוגמה הבאה.

    קובץ המשתנים הבא של Terraform, ‏ terraform.tfvars.sample, מאוכלס מראש בכתובות IP ובערכים שהזנתם בקטעים הקודמים של המדריך הזה.

    
    project_id          = "PROJECT_ID"
    region              = "ON_PREM_API_REGION"
    admin_cluster_name  = "ADMIN_CLUSTER_NAME"
    bare_metal_version  = "VERSION"
    admin_user_emails   = ["YOUR_EMAIL_ADDRESS", "ADMIN_2_EMAIL_ADDRESS"]
    cluster_name        = "abm-user-cluster-metallb"
    control_plane_ips   = ["10.200.0.4"]
    worker_node_ips     = ["10.200.0.5", "10.200.0.6"]
    control_plane_vip   = "10.200.0.50"
    ingress_vip         = "10.200.0.51"
    lb_address_pools    = [
        { name = "lbpool_1", addresses = ["10.200.0.51-10.200.0.70"] }
    ]
    

    מחליפים את ADMIN_2_EMAIL_ADDRESS בכתובת אימייל שמשויכת לחשבון Google Cloud , או מסירים אותה כשעורכים את קובץ המשתנים.

    למידע נוסף על הארגומנטים בדוגמה הזו שבהם מגדירים משתנים, אפשר לעיין בהפניה לארגומנטים במסמכי Terraform בנושא אשכולות משתמשים של Bare Metal.

  4. מחליפים את התוכן של העותק של קובץ המשתנים בתוכן מהדוגמה הקודמת.

  5. מפעילים את Terraform ויוצרים תוכנית ב-Terraform:

    terraform init
    

    ‫Terraform מתקין את כל הספריות הנדרשות, כמו פלאגין שמתממשק עם שירותים חיצוניים Google Cloud .

  6. בודקים את ההגדרות ומבצעים שינויים לפי הצורך:

    terraform plan
    
  7. מחילים את התוכנית של Terraform כדי ליצור את אשכול המשתמשים:

    terraform apply
    

    יצירת אשכול המשתמשים נמשכת 15 דקות או יותר. אפשר לראות את האשכול במסוף Google Cloud בדף GKE clusters.

  8. נכנסים לדף GKE clusters במסוף Google Cloud .

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

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

  9. נכנסים אל אשכול המשתמשים:

    1. לוחצים על הקישור בשם האשכול ובחלונית הצדדית לוחצים על כניסה.

    2. בוחרים באפשרות שימוש בזהות שלכם ב-Google כדי להיכנס.

    3. לוחצים על התחברות.

    חוזרים על אותם השלבים כדי להיכנס לאשכול הניהול.

5. הסרת המשאבים

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

מחיקת אשכול המשתמש

bmctl

  • כדי למחוק את אשכול המשתמשים באמצעות bmctl, מריצים את הפקודה הבאה ממכונת ה-VM של תחנת העבודה של האדמין, abm-ws:

    bmctl reset \
        --cluster abm-user-cluster-metallb \
        --admin-kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
    

המסוף

  1. במסוף, עוברים לדף GKE clusters.

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

  2. ברשימת האשכולות, לוחצים על אשכול המשתמשים.

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

  4. בחלק העליון של החלון, לוחצים על מחיקה.

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

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

‫CLI של gcloud

  • מחיקת האשכול:

    gcloud container bare-metal clusters delete abm-user-cluster-metallb \
        --project=PROJECT_ID \
        --location=ON_PREM_API_REGION \
        --force
    

    הדגל --force מאפשר למחוק אשכול שיש בו מאגרי צמתים. בלי הדגל --force, צריך למחוק קודם את מאגרי הצמתים ואז למחוק את האשכול.

מידע על דגלים אחרים זמין במאמר בנושא gcloud container bare-metal clusters delete.

Terraform

הפקודה terraform destroy מסיימת את המשאבים שנוצרו כשמריצים את הפקודה terraform apply כדי ליצור את אשכול המשתמשים.

  • מריצים את הפקודה הבאה מהספרייה שבה נמצאים קובצי הדוגמה של אשכול משתמשים ב-Terraform, כמו main.tf:

    terraform destroy
    

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

מחיקת אשכול האדמין והמכונות הווירטואליות

  1. ביטול ההרשמה של אשכול הניהול ל-GKE On-Prem API:

    gcloud container bare-metal admin-clusters unenroll ADMIN_CLUSTER_NAME \
        --project=PROJECT_ID \
        --location=ON_PREM_API_REGION
    
  2. מתחברים לתחנת העבודה של האדמין:

    gcloud compute ssh root@abm-ws --zone ZONE
    
  3. מוחקים את אשכול האדמין:

    bmctl reset -c ADMIN_CLUSTER_NAME
    

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

  4. יוצאים מתחנת העבודה לאדמינים:

    exit
    
  5. מציגים רשימה של כל המכונות הווירטואליות שהשם שלהן כולל את abm:

    gcloud compute instances list | grep 'abm'
    
  6. מוודאים שאתם רוצים למחוק את כל המכונות הווירטואליות שמכילות את abm בשם.

    אחרי האימות, אפשר למחוק מכונות וירטואליות של abm על ידי הפעלת הפקודה הבאה:

    gcloud compute instances list --format="value(name)" | \
        grep 'abm' | \
        xargs gcloud compute instances delete --quiet --zone ZONE
    
  7. מריצים את הפקודה הבאה כדי למחוק את חשבון השירות, וכשמופיעה בקשה, מזינים y:

    gcloud iam service-accounts delete baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com
    

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