פריסת אפליקציה ב-GKE באמצעות Cloud Deploy
בדף הזה מוסבר איך להשתמש ב-Cloud Deploy כדי להעביר תמונה של אפליקציה לדוגמה בשם nginx לרצף של שני אשכולות Google Kubernetes Engine.
במדריך למתחילים הזה תבצעו את הפעולות הבאות:
יוצרים את שני האשכולות.
יוצרים הגדרה של Skaffold ומניפסט של Kubernetes כדי לציין את קובץ האימג' של הקונטיינר (שנוצר מראש) לפריסה.
מגדירים את צינור העברת הנתונים ואת יעדי הפריסה ב-Cloud Deploy, שמפנים לשני האשכולות.
כדי ליצור את צינור ההפצה, יוצרים גרסת הפצה שמופצת אוטומטית ליעד הראשון.
מקדמים את פריט התוכן ליעד השני.
אפשר לראות את שתי ההשקות במסוף Google Cloud .
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Deploy, Cloud Build, GKE, and Cloud Storage APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Deploy, Cloud Build, GKE, and Cloud Storage APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
התפקידים הנדרשים
כדי לוודא שלחשבון השירות של Cloud Deploy יש את ההרשאות הנדרשות להפעלת פעולות של Cloud Deploy ולפריסה ב-Cloud Run, צריך לבקש מהאדמין להקצות לחשבון השירות של Cloud Deploy את תפקידי ה-IAM הבאים בפרויקט:
- Google Kubernetes Engine Developer (
roles/container.developer) - משתמש בחשבון שירות ב-IAM (
roles/iam.serviceAccountUser) - Cloud Deploy Job Runner (
roles/clouddeploy.jobRunner)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שהאדמין גם יוכל לתת לחשבון השירות של Cloud Deploy את ההרשאות שנדרשות באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
יצירת אשכולות של Google Kubernetes Engine
יוצרים שני אשכולות: qsdev ו-qsprod, עם הגדרות ברירת מחדל. צריך להיות אפשר להגיע לנקודות הקצה של Kubernetes API באשכולות מהאינטרנט הציבורי.
כברירת מחדל, יש גישה חיצונית לאשכולות GKE.
gcloud container clusters create-auto quickstart-cluster-qsdev --project=PROJECT_ID --region=us-central1 && gcloud container clusters create-auto quickstart-cluster-qsprod --project=PROJECT_ID --region=us-central1
הכנת ההגדרות של Skaffold ומניפסט Kubernetes
Cloud Deploy משתמש ב-Skaffold כדי לספק את הפרטים לגבי מה לפרוס ואיך לפרוס אותו בצורה נכונה עבור יעדים נפרדים.
במדריך למתחילים הזה יוצרים קובץ skaffold.yaml שמזהה את מניפסט Kubernetes שבו יש להשתמש כדי לפרוס את האפליקציה לדוגמה.
פותחים חלון טרמינל.
יוצרים ספרייה חדשה בשם
deploy-gke-quickstartועוברים אליה.mkdir deploy-gke-quickstart cd deploy-gke-quickstartיוצרים קובץ בשם
skaffold.yamlעם התוכן הבא:apiVersion: skaffold/v4beta7 kind: Config manifests: rawYaml: - k8s-* deploy: kubectl: {}הקובץ הזה הוא הגדרת Skaffold מינימלית, שמזהה את המניפסט. במדריך הזה ליצירת קובץ, אתם יוצרים את הקובץ. אבל אפשר גם לבקש מ-Cloud Deploy ליצור אחד בשבילכם, עבור אפליקציות פשוטות שאינן בסביבת ייצור.
מידע נוסף על הקובץ הזה מופיע ב
skaffold.yamlמאמרי העזרה.יוצרים קובץ בשם
k8s-pod.yamlעם התוכן הבא:apiVersion: v1 kind: Pod metadata: name: getting-started spec: containers: - name: nginx image: my-app-imageהקובץ הזה הוא מניפסט בסיסי של Kubernetes, שמוחל על האשכול כדי לפרוס את האפליקציה. תמונת הקונטיינר לפריסה מוגדרת כאן כ-placeholder,
my-app-image, שמוחלף בתמונה הספציפית כשיוצרים את הגרסה.
יצירת צינור העברת נתונים ויעדים
אפשר להגדיר את הצינור ואת יעדי ההפצה בקובץ אחד או בקבצים נפרדים. במדריך למתחילים הזה, יוצרים קובץ יחיד.
בספרייה
deploy-gke-quickstart, יוצרים קובץ חדש:clouddeploy.yaml, עם התוכן הבא:apiVersion: deploy.cloud.google.com/v1 kind: DeliveryPipeline metadata: name: my-gke-demo-app-1 description: main application pipeline serialPipeline: stages: - targetId: qsdev profiles: [] - targetId: qsprod profiles: [] --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: qsdev description: development cluster gke: cluster: projects/PROJECT_ID/locations/us-central1/clusters/quickstart-cluster-qsdev --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: qsprod description: production cluster gke: cluster: projects/PROJECT_ID/locations/us-central1/clusters/quickstart-cluster-qsprodרושמים את צינור עיבוד הנתונים ואת היעדים בשירות Cloud Deploy:
gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_IDעכשיו יש לכם צינור, עם יעדים, שמוכן לפריסת האפליקציה ליעד הראשון.
מאשרים את הצנרת ואת היעדים:
במסוף Google Cloud , נכנסים לדף Delivery pipelines של Cloud Deploy כדי לראות רשימה של צינורות העברת הנתונים שזמינים לכם.
צינור העברת התוכן שיצרתם מוצג, ושני יעדי הטירגוט מופיעים בעמודה יעדים.

יצירת גרסה
הפצה היא המשאב המרכזי ב-Cloud Deploy שמייצג את השינויים שנפרסים. צינור העברת התוכן מגדיר את מחזור החיים של הגרסה הזו. פרטים על מחזור החיים הזה מופיעים במאמר ארכיטקטורת שירות Cloud Deploy.
מריצים את הפקודה הבאה מהספרייה deploy-gke-quickstart כדי ליצור משאב release שמייצג את קובץ האימג' של הקונטיינר לפריסה:
gcloud deploy releases create test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=my-gke-demo-app-1 \
--images=my-app-image=gcr.io/google-containers/nginx@sha256:f49a843c290594dcf4d193535d1f4ba8af7d56cea2cf79d1e9554f077f1e7aaa
שימו לב לדגל --images=, שמשמש להחלפת ה-placeholder (my-app-image) במניפסט בתמונה ספציפית עם חתימת SHA. Google ממליצה ליצור תבניות של קובצי המניפסט בדרך הזו, ולהשתמש בשמות תמונות עם הסמכת SHA כשיוצרים גרסת הפצה.
בדומה לכל פריטי התוכן (אלא אם הם כוללים --disable-initial-rollout),
גם Cloud Deploy יוצר באופן אוטומטי משאב פריסת גרסה. האפליקציה נפרסת אוטומטית ביעד הראשון ברצף.
קידום הגרסה
בדף צינורות להעברת נתונים, לוחצים על צינור
my-gke-demo-app-1.בדף הפרטים של צינור ההפצה מוצגת תצוגה גרפית של ההתקדמות בצינור ההפצה. במקרה הזה, רואים שהגרסה הופצה ליעד
qsdev.
במטרה הראשונה בתרשים של צינור העברת הנתונים, לוחצים על קידום.
מופיעה תיבת הדו-שיח קידום גרסה. מוצגים בו פרטים על היעד שמקדמים.
לוחצים על קידום.
הגרסה החדשה נמצאת עכשיו בתור לפריסה ב-
qsprod. כשהפריסה מסתיימת, ההדמיה של צינור העברת הנתונים מראה שהיא נפרסה:
הצגת התוצאות במסוף Google Cloud
במסוף Google Cloud , עוברים לדף Cloud Deploy Delivery pipelines כדי לראות את צינור העברת התוכן my-gke-demo-app-1.
לוחצים על השם של צינור העברת הנתונים 'my-gke-demo-app-1'.
הוויזואליזציה של צינור העיבוד מראה את ההתקדמות של האפליקציה בצינור העיבוד.

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

הסרת המשאבים
כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם בדף הזה:
מוחקים את מקבץ
qsdev:gcloud container clusters delete quickstart-cluster-qsdev --region=us-central1 --project=PROJECT_IDמוחקים את מקבץ
qsprod:gcloud container clusters delete quickstart-cluster-qsprod --region=us-central1 --project=PROJECT_IDמחיקת צינור עיבוד הנתונים לפריסה, היעדים, הגרסה וההשקות:
gcloud deploy delete --file=clouddeploy.yaml --force --region=us-central1 --project=PROJECT_IDמוחקים את הקטגוריות של Cloud Storage שנוצרו על ידי Cloud Deploy.
אחד מסתיים ב-
_clouddeploy, והשני הוא[region].deploy-artifacts.[project].appspot.com.
סיימתם את המדריך למתחילים.