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

תוכנת Distributed Cloud ל-Bare Metal בלבד מאפשרת לכם להעריך את הפריסה והפעולות של האשכולות על ידי יצירת אשכולות הדגמה במכונות וירטואליות (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 האזור שבו GKE On-Prem API פועל ומאחסן את המטא-נתונים שלו. צריך לציין את 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 במאגר anthos-samples ב-GitHub. הסקריפט מבצע את הפעולות הבאות:

    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. יצירת רשת שכבת-על של Virtual Extensible LAN ‏ (VXLAN) לקישוריות של שכבה 2 בין המכונות הווירטואליות. רשת ה-VXLAN לא נשמרת, כך שאם מפעילים מחדש מכונה וירטואלית, הרשת נמחקת. הרשת מוגדרת להיות ברשת המשנה 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.

    כניסה לאשכולות GKE

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

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

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

    2. בוחרים באפשרות Use your Google identity to log in.

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

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

קובץ ה-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 של תחנת העבודה של האדמין כדי ליצור אשכול בוטסטראפ. בזמן שהפקודה bmctl register bootstrap פועלת, מבצעים את השלבים במסוף כדי ליצור את אשכול האדמין.

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

  1. במסוף Google Cloud , נכנסים לדף אשכולות GKE.

    כניסה לאשכולות GKE

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

  3. בתיבת הדו-שיח Create a cluster, בוחרים באפשרות On-premises ולוחצים על Configure לשרת פיזי.

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

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

  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.

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

יצירת אשכול ה-bootstrap

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

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

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

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

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

    gcloud auth application-default login
    

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

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

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

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

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

    [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 environment from admin workstation, לוחצים על Check Connection.

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

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

    • חשוב לוודא שהערך של --name תואם ל-Derived bootstrap name שמוצג בקטע 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. בקטע מאזן עומסים, מוודאים שהאפשרות Bundled מסומנת.

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

    10.200.0.48
    

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

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

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

    כשיוצרים את אשכול האדמין, אשכול ה-bootstrap בתחנת העבודה של האדמין נמחק. הפלט של הפקודה 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 כדי ליצור אשכול אתחול. בזמן שהפקודה bmctl register bootstrap פועלת, מריצים את הפקודה gcloud container bare-metal admin-clusters create בחלון טרמינל אחר כדי ליצור את אשכול האדמין.

יצירת אשכול ה-bootstrap

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

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

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

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

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

    gcloud auth application-default login
    

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

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

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

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

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

    [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. בחלון טרמינל חדש, מוודאים שאשכול ה-bootstrap רשום כחבר ב-fleet:

    gcloud container fleet memberships list \
        --project=PROJECT_ID
    

    הפקודה gcloud container bare-metal admin-clusters create בשלב הבא תלויה בזמינות של אשכול ה-bootstrap. הפקודה bmctl register bootstrap בחלון הטרמינל השני צריכה לפעול במשך כמה דקות לפני שאשכול ה-bootstrap יופיע כחבר רשום. אם אחרי כמה דקות הוא עדיין לא מופיע, בודקים את השם של אשכול ה-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
    

    כשיוצרים את אשכול האדמין, אשכול ה-bootstrap בתחנת העבודה של האדמין נמחק. הפלט של הפקודה 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 כדי ליצור אשכול אתחול. בזמן שהפקודה 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 = ["10.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.

יצירת אשכול ה-bootstrap

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

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

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

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

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

    gcloud auth application-default login
    

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

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

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

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

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

    [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 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.
    

    אחרי שיוצרים את אשכול האדמין, אשכול ה-bootstrap בתחנת העבודה של האדמין נמחק. הפלט של הפקודה 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.

    כניסה לאשכולות GKE

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

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

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

    2. בוחרים באפשרות Use your Google identity to log in.

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

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

קובץ ה-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 , ב-Google Cloud CLI או ב-Terraform. כדי לפשט את התהליך, השתמשו ב-abm-user-cluster-metallb כשם של אשכול המשתמש, כך שיתאים לשם שמוגדר בתוך הקוד בסקריפטים של Terraform.

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. במסוף Google Cloud , נכנסים לדף אשכולות GKE.

    כניסה לאשכולות GKE

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

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

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

    2. בוחרים באפשרות Use your Google identity to log in.

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

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

המסוף

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

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

    מעבר לדף Create a bare metal cluster

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

  3. לוחצים על Create Cluster.

  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. בסרגל הניווט הימני, לוחצים על default pool (מאגר ברירת המחדל).

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

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

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

    10.200.0.5
    

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

יצירת האשכול

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

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

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

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

    אחרי שהאשכול נוצר, מוצג הסטטוס Cluster status: running.

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

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

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

    2. בוחרים באפשרות Use your Google identity to log in.

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

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

‫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 בנושא המשאב clusters במדריך העזר ל-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. לוחצים על הקישור של שם האשכול, ובחלונית הצדדית לוחצים על Login.

    2. בוחרים באפשרות Use your Google identity to log in.

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

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

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 init
    

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

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

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

    terraform apply
    

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

  8. במסוף Google Cloud , נכנסים לדף אשכולות GKE.

    כניסה לאשכולות GKE

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

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

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

    2. בוחרים באפשרות Use your Google identity to log in.

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

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

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

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

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

bmctl

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

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

המסוף

  1. נכנסים לדף אשכולות GKE במסוף.

    כניסה לאשכולות GKE

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

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

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

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

  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 ואז מוחק את האשכול. צריך להמתין עד שהאשכול יימחק לפני שמוחקים את המכונות הווירטואליות.

  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
    

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