פריסת משאבים בכל ה-Fleet

במדריך הזה נסביר איך להשתמש בחבילת צי כדי לפרוס מניפסטים של משאבי Kubernetes בצי של אשכולות. שימוש בכלי GitOps כמו חבילות Fleet של סנכרון תצורות יכול לעזור לכם להרחיב את ניהול ההגדרות במספר גדול של אשכולות.

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

  • חיבור מאגר Git ל-Cloud Build
  • יצירה ורישום של אשכולות ב-Fleet
  • התקנה של סנכרון תצורות כברירת מחדל ב-Fleet
  • פריסת משאבים מהמאגר ל-Fleet של אשכולות

לפני שמתחילים

  1. התקינו את ה-CLI של Google Cloud.

  2. הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.

    איך נכנסים ל-CLI של gcloud באמצעות הזהות המאוחדת?

  3. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  4. יוצרים או בוחרים Cloud de Confiance פרויקט.

    תפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים
    • יוצרים Cloud de Confiance פרויקט:

      gcloud projects create PROJECT_ID

      מחליפים את PROJECT_ID בשם של פרויקט Cloud de Confiance שיוצרים.

    • בוחרים את הפרויקט שיצרתם: Cloud de Confiance

      gcloud config set project PROJECT_ID

      מחליפים את PROJECT_ID בשם הפרויקט ב- Cloud de Confiance .

  5. מוודאים שהחיוב מופעל בפרויקט Cloud de Confiance .

  6. מפעילים את ממשקי ה-API של GKE,‏ Config Delivery (חבילות צי), Cloud Build ו-Developer Connect:

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    gcloud services enable container.googleapis.com  configdelivery.googleapis.com  cloudbuild.googleapis.com  developerconnect.googleapis.com
  7. ליצור חשבון ב-GitHub או לקבל גישה לחשבון קיים.

עלויות

במסמך הזה משתמשים ברכיבים הבאים של Cloud de Confiance by S3NS, והשימוש בהם כרוך בתשלום:

התחברות ל-Git

מאגר ה-Git מכיל את המשאבים שרוצים לפרוס ב-Fleet. כדי לפרוס את המשאבים האלה באמצעות חבילת Fleet, צריך לחבר את מאגר Git ל-Cloud Build.

יצירת מאגר Git

במדריך הזה משתמשים ב-GitHub כספק Git. כדי ליצור מאגר חדש ב-GitHub, מבצעים את השלבים הבאים:

  1. בדפדפן האינטרנט, פותחים את GitHub.

  2. אם צריך, נכנסים לחשבון GitHub. אם יש לכם גישה לארגונים או לצוותים אחרים ב-GitHub, ודאו שאתם יוצרים את המאגר באמצעות החשבון האישי שלכם.

  3. בסרגל הכלים, בוחרים באפשרות יצירת חדש... ואז לוחצים על מאגר חדש.

  4. מקלידים fleet-package-tutorial כשם המאגר.

  5. משאירים את האפשרות Public מסומנת כסטטוס החשיפה של המאגר.

  6. לוחצים על יצירת מאגר.

חיבור המאגר ל-Cloud Build

שירות חבילות הצי של Config Sync משתמש ב-Cloud Build כדי לסנכרן ולאחזר את משאבי Kubernetes ממאגר ה-Git שלכם.

כדי לחבר את המאגר שלכם ב-GitHub ל-Cloud Build:

  1. פותחים את הדף Cloud Build במסוף Cloud de Confiance ולוחצים על Repositories.

    פתיחת הדף Repositories

  2. מוודאים שאתם נמצאים בדף מאגרים בדור השני. אם צריך, לוחצים על View repositories (2nd gen) (הצגת מאגרי מידע (דור שני)).

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

  4. בתפריט Region, בוחרים באפשרות us-central1 (Iowa) כאזור.

  5. בשדה Name, מקלידים fleet-package-quickstart-connection כשם החיבור.

  6. לוחצים על Connect.

  7. אם זו הפעם הראשונה שאתם מקשרים את Cloud Build לחשבון GitHub שלכם, אתם צריכים לבצע את השלבים הבאים:

    1. מאשרים את הבקשה לטוקן OAuth של GitHub. האסימון מאוחסן ב-Secret Manager לשימוש בחיבור GitHub של Cloud Build. לוחצים על Continue.
    2. מתקינים את Cloud Build במאגר שלכם ב-GitHub. בוחרים באפשרות התקנה בחשבון חדש.
    3. בחלון החדש של GitHub שנפתח, בוחרים את החשבון ב-GitHub שבו יצרתם קודם את הפיצול של Cymbal Bank. בסביבת ייצור, יכול להיות שתבחרו חשבונות או מאגרי מידע אחרים שהענקתם להם גישה.
    4. פועלים לפי ההנחיות לאימות כדי לאשר את הזהות ב-GitHub.
    5. בחלון GitHub לגישה למאגר Cloud Build, בוחרים באפשרות Only select repositories (רק מאגרים נבחרים).
    6. בתפריט הנפתח שבו מופיעים המאגרים, בוחרים את מאגר fleet-package-tutorial.
    7. לוחצים על Save.
  8. בדף Cloud Build במסוף Cloud de Confiance , לוחצים על Link repository כדי לקשר מאגר Git חדש ל-Cloud Build.

  9. בתפריט Connection (חיבור), בוחרים באפשרות fleet-package-quickstart-connection.

  10. בתפריט Repositories, בוחרים את המאגר fleet-package-tutorial הרצוי.

  11. לוחצים על קישור.

הגדרת המאגר

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

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

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

כדי ליצור את שני האשכולות ולרשום אותם ב-Fleet של הפרויקט:

  1. יוצרים אשכול GKE:

    gcloud container clusters create-auto cluster1 \
      --project=PROJECT_ID \
      --region=REGION \
      --fleet-project=PROJECT_ID \
      --release-channel=rapid
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID במזהה הפרויקט.
    • REGION באזור שבו רוצים ליצור את האשכול, כמו us-central1.
  2. יוצרים אשכול GKE שני:

    gcloud container clusters create-auto cluster2 \
      --project=PROJECT_ID \
      --region=REGION \
      --fleet-project=PROJECT_ID \
      --release-channel=rapid
    

התקנה של סנכרון תצורות כברירת מחדל ב-Fleet

כדי להשתמש בשירות חבילות ה-Fleet, צריך להתקין את סנכרון תצורות בשני האשכולות. כדי להתקין את סנכרון תצורות בכמה אשכולות בבת אחת, ובכל אשכול עתידי שיירשם ל-Fleet, צריך לבצע את השלבים הבאים:

  1. נכנסים לדף Feature Manager במסוף Cloud de Confiance .

    מעבר אל Feature Manager

  2. בחלונית סנכרון תצורות, לוחצים על Configure.

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

  4. לוחצים על Configure (הגדרה).

  5. בתיבת הדו-שיח לאישור הגדרת הגדרות הצי, לוחצים על אישור. אם לא הפעלתם בעבר את סנכרון תצורות, לחיצה על Confirm תפעיל גם את anthosconfigmanagement.googleapis.com API.

  6. בטבלה Clusters in the fleet, בוחרים את שני האשכולות ואז לוחצים על Sync to fleet settings. הפעולה הזו מתקינה את סנכרון תצורות בשני האשכולות עם ההגדרות שהגדרתם.

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

הגדרה של חשבון שירות ל-Cloud Build

כדי ליצור את חשבון השירות ולתת ל-Cloud Build את ההרשאות הנדרשות, מבצעים את השלבים הבאים:

  1. יוצרים את חשבון השירות:

    gcloud iam service-accounts create "quickstart-service-account"
    
  2. נותנים לחשבון השירות הרשאה לאחזר משאבים ממאגר Git על ידי הוספת קישור למדיניות IAM לתפקיד ResourceBundle Publisher:

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member="serviceAccount:quickstart-service-account@PROJECT_ID.s3ns.iam.gserviceaccount.com" \
       --role='roles/configdelivery.resourceBundlePublisher'
    

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

  3. נותנים לחשבון השירות הרשאה לכתוב יומנים על ידי הוספת קישור למדיניות IAM לתפקיד Logs Writer:

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member="serviceAccount:quickstart-service-account@PROJECT_ID.s3ns.iam.gserviceaccount.com" \
       --role='roles/logging.logWriter'
    

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

  4. מוסיפים קישור למדיניות IAM לתפקיד Artifact Registry Writer:

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member="serviceAccount:quickstart-service-account@PROJECT_ID.s3ns.iam.gserviceaccount.com" \
       --role='roles/artifactregistry.writer'
    

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

פריסת משאבים בכל ה-Fleet

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

שמירת מניפסט של Kubernetes במאגר

כדי להוסיף את המשאבים שלכם ל-GitHub ולפרסם גרסה, פועלים לפי השלבים הבאים:

  1. בחלון של מאגר GitHub בדפדפן אינטרנט, לוחצים על Add file ואז על Create new file.

  2. נותנים לקובץ את השם deployment.yaml ומדביקים בו את התוכן הבא:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - image: nginx:1.14.2
            name: nginx
            ports:
            - containerPort: 80
    
  3. לוחצים על Commit changes... (ביצוע השינויים).

  4. בתיבת הדו-שיח לאישור, משאירים את הסימון בתיבת הסימון ביצוע ישיר של הקומיט בענף main ולוחצים על ביצוע קומיט של השינויים.

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

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

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

  8. לוחצים על פרסום הגרסה.

פריסת משאב באשכולות באמצעות חבילת Fleet

כדי לפרוס את המשאב החדש, יוצרים חבילת Fleet חדשה:

  1. חבילת ה-Fleet הזו מיועדת לכל האשכולות ב-Fleet, כי היא לא מגדירה בורר אשכולות (בקטע target.fleet). היא מוגדרת לפריסת וריאציית הפריסה (שנגזרת מקובץ deployment.yaml) בכל האשכולות האלה.

    ב-Cloud Shell, יוצרים קובץ בשם fleet-package.yaml עם התוכן הבא:

    resourceBundleSelector:
      cloudBuildRepository:
        name: projects/PROJECT_ID/locations/us-central1/connections/fleet-package-quickstart-connection/repositories/REPOSITORY_NAME
        tag: v1.0.0
        serviceAccount: projects/PROJECT_ID/serviceAccounts/quickstart-service-account@PROJECT_ID.s3ns.iam.gserviceaccount.com
        path:
        # Match all files (including deployment.yaml) to generate variants
        variantsPattern: "*.yaml"
    target:
      fleet:
        project: projects/PROJECT_ID
    rolloutStrategy:
      rolling:
        maxConcurrent: 1
    variantSelector:
      # Explicitly match the variant generated from "deployment.yaml"
      variantNameTemplate: "deployment"
    

    מחליפים את REPOSITORY_NAME בשם המאגר מ-Cloud Build. בדרך כלל בפורמט USERNAME-REPOSITORY_NAME.

  2. כדי להתחיל את ההשקה, יוצרים את חבילת הצי:

    gcloud container fleet packages create fp-nginx \
       --source=fleet-package.yaml \
       --project=PROJECT_ID
    
  3. מוודאים שחבילת ה-Fleet נוצרה:

    gcloud container fleet packages list
    

    אפשר ללחוץ על הקישור שמופיע כדי לראות את יומני הסטרימינג של משימת Cloud Build.

    הפריסה של חבילת הצי מתחילה בפריסה של משאבי Kubernetes בצי.

  4. בדף Google Kubernetes Engine במסוף Cloud de Confiance , עוברים לדף Workloads כדי לראות תצוגה מצטברת של עומסי העבודה שנפרסים בכל אשכולות GKE:

    פתיחת הדף Workloads

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

    שימו לב: מכיוון שהערך של maxConcurrent: מוגדר כ-1 בהגדרת חבילת ה-Fleet, ה-API של חבילת ה-Fleet ממתין עד ש-nginx-deployment ייפרס במלואו באשכול אחד לפני שהוא מתחיל את הפריסה באשכול השני. אם שיניתם את אסטרטגיית ההשקה ל-maxConcurrent: 2 ומעלה, המשאבים יופעלו בשני האשכולות בו-זמנית.

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

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

הסרת המשאבים

כדי לא לצבור חיובים בחשבון על המשאבים שבהם השתמשתם בדף הזה, אתם צריכים למחוק את הפרויקט יחד עם המשאבים. Cloud de Confiance Cloud de Confiance

  1. במסוף Cloud de Confiance , נכנסים לדף Manage resources.

    כניסה לדף Manage resources

  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.

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

  1. בחלון דפדפן האינטרנט של מאגר GitHub, מתחת לשם המאגר, לוחצים על Settings.

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

  3. לוחצים על I want to delete this repository (אני רוצה למחוק את המאגר הזה).

  4. קוראים את האזהרות ולוחצים על קראתי והבנתי את ההשפעות האלה.

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

  6. לוחצים על מחיקת המאגר הזה.

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