פריסת משאבים בכל ה-Fleet
במדריך הזה נסביר איך להשתמש בחבילת צי כדי לפרוס מניפסטים של משאבי Kubernetes בצי של אשכולות. שימוש בכלי GitOps כמו חבילות Fleet של סנכרון תצורות יכול לעזור לכם להרחיב את ניהול ההגדרות במספר גדול של אשכולות.
במדריך הזה תבצעו את המשימות הבאות:
- חיבור מאגר Git ל-Cloud Build
- יצירה ורישום של אשכולות ב-Fleet
- התקנה של סנכרון תצורות כברירת מחדל ל-Fleet
- פריסת משאבים מהמאגר ל-Fleet של אשכולות
לפני שמתחילים
-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים 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 .
מפעילים את ממשקי ה-API של GKE, Config Delivery (חבילות צי), Cloud Build ו-Developer Connect, אם אחד מהם לא מופעל:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםgcloud services enable container.googleapis.com
configdelivery.googleapis.com cloudbuild.googleapis.com developerconnect.googleapis.com - צריך ליצור חשבון ב-GitHub או לקבל גישה לחשבון קיים.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Cloud de Confiance by S3NS, והשימוש בהם כרוך בתשלום:
חיבור ל-Git
מאגר ה-Git מכיל את המשאבים שרוצים לפרוס ב-Fleet. כדי לפרוס את המשאבים האלה באמצעות חבילת Fleet, צריך לקשר את מאגר Git ל-Cloud Build.
יצירת מאגר Git
במדריך הזה משתמשים ב-GitHub כספק Git. כדי ליצור מאגר חדש ב-GitHub, מבצעים את השלבים הבאים:
פותחים את GitHub בדפדפן האינטרנט.
אם צריך, נכנסים לחשבון ב-GitHub. אם יש לכם גישה לארגונים או לצוותים אחרים ב-GitHub, ודאו שאתם יוצרים את המאגר באמצעות החשבון האישי שלכם.
בסרגל הכלים, בוחרים באפשרות יצירת חדש... add ואז לוחצים על מאגר חדש.
מקלידים
fleet-package-tutorialכשם המאגר.משאירים את האפשרות Public (גלוי לכולם) מסומנת כסטטוס החשיפה של המאגר.
לוחצים על יצירת מאגר.
חיבור המאגר ל-Cloud Build
שירות חבילות הצי של Config Sync משתמש ב-Cloud Build כדי לסנכרן ולאחזר את משאבי Kubernetes ממאגר ה-Git שלכם.
כדי לחבר את המאגר שלכם ב-GitHub ל-Cloud Build:
פותחים את הדף Cloud Build במסוף Cloud de Confiance ולוחצים על Repositories.
מוודאים שאתם בדף מאגרים מהדור השני. אם צריך, לוחצים על View repositories (2nd gen) (הצגת מאגרי מידע (דור שני)).
לוחצים על יצירת קישור למארח.
בתפריט Region, בוחרים באפשרות us-central1 (Iowa) כאזור.
בשדה Name, מקלידים
fleet-package-quickstart-connectionכשם החיבור.לוחצים על Connect.
אם זו הפעם הראשונה שאתם מקשרים את Cloud Build לחשבון GitHub שלכם, אתם צריכים לבצע את השלבים הבאים:
- מאשרים את הבקשה לטוקן OAuth של GitHub. האסימון מאוחסן ב-Secret Manager לשימוש בחיבור GitHub של Cloud Build. לוחצים על Continue.
- מתקינים את Cloud Build במאגר שלכם ב-GitHub. בוחרים באפשרות התקנה בחשבון חדש.
- בחלון החדש של GitHub שנפתח, בוחרים את החשבון ב-GitHub שבו יצרתם קודם את הפיצול של Cymbal Bank. בסביבת ייצור, יכול להיות שתבחרו חשבונות או מאגרי מידע אחרים שהענקתם להם גישה.
- פועלים לפי ההנחיות לאימות כדי לאשר את הזהות ב-GitHub.
- בחלון GitHub לגישה למאגר Cloud Build, בוחרים באפשרות Only select repositories (רק מאגרים נבחרים).
- בתפריט הנפתח שבו מופיעים המאגרים, בוחרים את מאגר
fleet-package-tutorial. - לוחצים על Save.
בדף Cloud Build במסוף Cloud de Confiance , לוחצים על Link repository כדי לקשר מאגר Git חדש ל-Cloud Build.
בתפריט Connection (חיבור), לוחצים על
fleet-package-quickstart-connection.בתפריט Repositories, בוחרים את המאגר
fleet-package-tutorialהרצוי.לוחצים על קישור.
הגדרת Fleet
בקטע הזה מגדירים את Fleet על ידי יצירת אשכולות, רישום שלהם ל-Fleet והתקנת סנכרון תצורות כחבילת Fleet.
יצירת אשכולות
כדי להדגים איך אפשר להשתמש בחבילות של Fleet כדי לפרוס משאבים בכמה אשכולות, במדריך הזה מוסבר איך ליצור שני אשכולות.
כדי ליצור את שני האשכולות ולרשום אותם ב-Fleet של הפרויקט:
יוצרים אשכול GKE:
gcloud container clusters create-auto cluster1 \ --project=PROJECT_ID \ --region=REGION \ --fleet-project=PROJECT_ID \ --release-channel=rapidמחליפים את מה שכתוב בשדות הבאים:
PROJECT_IDבמזהה הפרויקט.-
REGIONבאזור שבו רוצים ליצור את האשכול, כמוus-central1.
יוצרים אשכול GKE שני:
gcloud container clusters create-auto cluster2 \ --project=PROJECT_ID \ --region=REGION \ --fleet-project=PROJECT_ID \ --release-channel=rapid
התקנה של סנכרון תצורות כברירת מחדל ל-Fleet
כדי להשתמש בשירות חבילות ה-Fleet, צריך להתקין את סנכרון תצורות בשני האשכולות. כדי להתקין את סנכרון תצורות בכמה אשכולות בבת אחת, ובכל אשכול עתידי שיירשם ל-Fleet, צריך לבצע את השלבים הבאים:
נכנסים לדף Feature Manager במסוף Cloud de Confiance .
בחלונית סנכרון תצורות, לוחצים על Configure.
לוחצים על התאמה אישית של הגדרות הצי. בתיבת הדו-שיח שמופיעה, בוחרים את הגרסה של סנכרון תצורות שרוצים להתקין.
לוחצים על Configure (הגדרה).
בתיבת הדו-שיח לאישור הגדרת הגדרות הצי, לוחצים על אישור. אם לא הפעלתם בעבר את סנכרון תצורות, לחיצה על Confirm תפעיל גם את
anthosconfigmanagement.googleapis.comAPI.בטבלה Clusters in the fleet, בוחרים את שני האשכולות ואז לוחצים על Sync to fleet settings. הפעולה הזו תתקין את סנכרון תצורות בשני האשכולות עם ההגדרות שהגדרתם.
יכול להיות שיחלפו כמה דקות עד שהאשכולות יסתנכרנו. אפשר להמשיך לשלבים הבאים כשמופיע הסטטוס Installed (הותקן) ב-סנכרון תצורות.
הגדרה של חשבון שירות ל-Cloud Build
כדי ליצור את חשבון השירות ולהעניק ל-Cloud Build את ההרשאות הנדרשות, מבצעים את השלבים הבאים:
יוצרים את חשבון השירות:
gcloud iam service-accounts create "quickstart-service-account"כדי לתת לחשבון השירות הרשאה לאחזר משאבים ממאגר Git, מוסיפים קישור למדיניות IAM לתפקיד Resource Bundle 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כתנאי למדיניות.נותנים לחשבון השירות הרשאה לכתוב יומנים על ידי הוספת קישור למדיניות 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כתנאי למדיניות.מוסיפים קישור למדיניות 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כתנאי למדיניות.
פריסת משאבים בכלל המכשירים בארגון
במדריך הזה מוסיפים מניפסט של Kubernetes עם פריסת nginx למאגר Git, מפרסמים גרסה ואז יוצרים חבילת צי כדי לפרוס את אפליקציית nginx.
שמירת מניפסט של Kubernetes במאגר
כדי להוסיף את המשאבים שלכם ל-GitHub ולפרסם גרסה, מבצעים את השלבים הבאים:
בחלון של מאגר GitHub בדפדפן אינטרנט, לוחצים על Add file ואז על Create new file.
נותנים לקובץ את השם
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לוחצים על Commit changes... (ביצוע השינויים).
בתיבת הדו-שיח לאישור, משאירים את האפשרות Commit directly to the
mainbranch (ביצוע קומיט ישירות לענףmain) מסומנת ולוחצים על Commit changes (ביצוע קומיט של השינויים).בדף הראשי של המאגר, בוחרים באפשרות Releases (פריטי תוכן) בסרגל הצד.
בראש הדף, לוחצים על יצירת טיוטה של גרסה חדשה.
בוחרים בתפריט בחירת תג ומקלידים
v1.0.0בתור התג. לוחצים על יצירת תג חדש.לוחצים על פרסום הגרסה.
פריסת משאב באשכולות באמצעות חבילת Fleet
כדי לפרוס את המשאב החדש, יוצרים חבילת Fleet חדשה:
חבילת ה-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.כדי להתחיל את ההשקה, יוצרים את חבילת Fleet:
gcloud container fleet packages create fp-nginx \ --source=fleet-package.yaml \ --project=PROJECT_IDמוודאים שחבילת ה-Fleet נוצרה:
gcloud container fleet packages listאפשר ללחוץ על הקישור שמופיע כדי לראות את יומני הסטרימינג של משימת Cloud Build.
הפריסה של חבילת הצי מתחילה בפריסת משאבי Kubernetes בצי.
בדף Google Kubernetes Engine במסוף Cloud de Confiance , עוברים לדף Workloads כדי לראות תצוגה מצטברת של עומסי העבודה שנפרסים בכל אשכולות GKE:
יכול להיות שיחלפו כמה דקות עד שעומסי העבודה יהיו זמינים. יכול להיות שתראו גם שגיאות זמינות בזמן שהטייס האוטומטי מתאים את בקשות המשאבים לפריסה החדשה.
שימו לב: מכיוון שהערך של
maxConcurrent:מוגדר כ-1בהגדרת חבילת ה-Fleet, ה-API של חבילת ה-Fleet ממתין עד ש-nginx-deploymentייפרס במלואו באשכול אחד לפני שהוא מתחיל את הפריסה באשכול השני. אם שיניתם את אסטרטגיית ההשקה ל-maxConcurrent: 2ומעלה, המשאבים יופעלו בשני האשכולות בו-זמנית.אחרי כמה דקות, תראו שתי עומסי עבודה חדשים עבור
nginx-deploymentבשני האשכולות. יכול להיות שתצטרכו לרענן את הדף.
אתם יכולים להמשיך לבדוק אסטרטגיות פריסה שונות באמצעות חבילות Fleet. לדוגמה, אפשר להוסיף אשכול חדש ל-Fleet כדי לראות שעומס העבודה נפרס אוטומטית באשכול החדש הזה. מידע נוסף על אסטרטגיות פריסה ועל וריאציות זמין במאמר פריסת חבילות צי.
הסרת המשאבים
כדי לא לצבור חיובים בחשבון Cloud de Confiance על המשאבים שבהם השתמשתם בדף הזה, אתם צריכים למחוק את הפרויקט Cloud de Confiance יחד עם המשאבים.
- במסוף Cloud de Confiance , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
כדי למחוק את המאגר:
בחלון דפדפן האינטרנט של מאגר GitHub, מתחת לשם המאגר, לוחצים על Settings.
בדף ההגדרות הכלליות (שנבחר כברירת מחדל), עוברים לקטע Danger Zone (אזור מסוכן) ולוחצים על Delete this repository (מחיקת המאגר הזה).
לוחצים על I want to delete this repository (אני רוצה למחוק את המאגר הזה).
קוראים את האזהרות ולוחצים על קראתי את ההשפעות האלה והבנתי אותן.
כדי לוודא שאתם מוחקים את המאגר הנכון, בשדה הטקסט, מקלידים את שם המאגר.
לוחצים על Delete this repository (מחיקת המאגר הזה).
המאמרים הבאים
- מידע נוסף על חבילות Fleet
- איך פורסים חבילות Fleet
- אפשר לנסות את המדריך לאפליקציות שניתנות להרחבה, סדרת מדריכים שמסבירה איך לפרוס, להפעיל ולנהל סביבות אפליקציות מודרניות ב-GKE. הוא כולל את המדריך Centralize change management שבו מוסבר איך להרחיב את השימוש בשינויי תצורה באמצעות חבילות צי.