פריסת משאבים בכל ה-Fleet
במדריך הזה נסביר איך להשתמש בחבילת צי כדי לפרוס מניפסטים של משאבי Kubernetes בצי של אשכולות. שימוש בכלי GitOps כמו חבילות Fleet של סנכרון תצורות יכול לעזור לכם להרחיב את ניהול ההגדרות במספר גדול של אשכולות.
במדריך הזה תבצעו את המשימות הבאות:
- חיבור מאגר Git ל-Cloud Build
- יצירה ורישום של אשכולות ב-Fleet
- התקנה של סנכרון תצורות כברירת מחדל ב-Fleet
- פריסת משאבים מהמאגר ל-Fleet של אשכולות
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
מפעילים את ממשקי ה-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 -
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
מפעילים את ממשקי ה-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 - ליצור חשבון ב-GitHub או לקבל גישה לחשבון קיים.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.
התחברות ל-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 במסוף Google Cloud ולוחצים על 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 במסוף Google Cloud , לוחצים על Link repository כדי לקשר מאגר Git חדש ל-Cloud Build.
בתפריט Connection (חיבור), בוחרים באפשרות
fleet-package-quickstart-connection.בתפריט Repositories, בוחרים את המאגר
fleet-package-tutorialהרצוי.לוחצים על קישור.
הגדרת המאגר
בקטע הזה מגדירים את 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 במסוף Google Cloud .
בחלונית סנכרון תצורות, לוחצים על 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 לתפקיד ResourceBundle Publisher:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:quickstart-service-account@PROJECT_ID.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.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.iam.gserviceaccount.com" \ --role='roles/artifactregistry.writer'אם מוצגת בקשה לעשות זאת, בוחרים באפשרות
Noneבתור התנאי למדיניות.
פריסת משאבים בכל ה-Fleet
במדריך הזה מוסיפים מניפסט של 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... (ביצוע השינויים).
בתיבת הדו-שיח לאישור, משאירים את הסימון בתיבת הסימון ביצוע ישיר של הקומיט בענף
mainולוחצים על ביצוע קומיט של השינויים.בדף הראשי של המאגר, בוחרים באפשרות 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.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.כדי להתחיל את ההשקה, יוצרים את חבילת הצי:
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 במסוף Google Cloud , עוברים לדף Workloads כדי לראות תצוגה מצטברת של עומסי העבודה שנפרסים בכל אשכולות GKE:
יכול להיות שיחלפו כמה דקות עד שעומסי העבודה יהיו זמינים. יכול להיות שתראו גם שגיאות זמינות בזמן שהטייס האוטומטי מתאים את בקשות המשאבים לפריסה החדשה.
שימו לב: מכיוון שהערך של
maxConcurrent:מוגדר כ-1בהגדרת חבילת ה-Fleet, ה-API של חבילת ה-Fleet ממתין עד ש-nginx-deploymentייפרס במלואו באשכול אחד לפני שהוא מתחיל את הפריסה באשכול השני. אם שיניתם את אסטרטגיית ההשקה ל-maxConcurrent: 2ומעלה, המשאבים יופעלו בשני האשכולות בו-זמנית.אחרי כמה דקות, תראו שתי עומסי עבודה חדשים עבור
nginx-deploymentבשני האשכולות. יכול להיות שתצטרכו לרענן את הדף.
אתם יכולים להמשיך לבדוק אסטרטגיות פריסה שונות באמצעות חבילות Fleet. לדוגמה, אפשר להוסיף אשכול חדש ל-Fleet כדי לראות שעומס העבודה נפרס באופן אוטומטי באשכול החדש הזה. מידע נוסף על אסטרטגיות פריסה ועל וריאציות זמין במאמר פריסת חבילות צי.
הסרת המשאבים
כדי לא לצבור חיובים בחשבון על המשאבים שבהם השתמשתם בדף הזה, אתם צריכים למחוק את הפרויקט יחד עם המשאבים. Google Cloud Google Cloud
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
כדי למחוק את המאגר, מבצעים את השלבים הבאים:
בחלון דפדפן האינטרנט של מאגר GitHub, מתחת לשם המאגר, לוחצים על Settings.
בדף ההגדרות הכלליות (שנבחר כברירת מחדל), עוברים לקטע Danger Zone (אזור מסוכן) ולוחצים על Delete this repository (מחיקת המאגר הזה).
לוחצים על I want to delete this repository (אני רוצה למחוק את המאגר הזה).
קוראים את האזהרות ולוחצים על קראתי והבנתי את ההשפעות האלה.
כדי לוודא שאתם מוחקים את המאגר הנכון, מקלידים את שם המאגר בשדה הטקסט.
לוחצים על מחיקת המאגר הזה.
המאמרים הבאים
- מידע נוסף על חבילות Fleet
- איך פורסים חבילות Fleet
- אפשר לנסות את המדריך לאפליקציות שניתנות להרחבה, סדרת מדריכים שמלמדת איך לפרוס, להפעיל ולנהל סביבות אפליקציות מודרניות ב-GKE. הוא כולל את המדריך ריכוז ניהול השינויים, שבו מוסבר איך להרחיב את השינויים בהגדרות באמצעות חבילות צי.