שימוש בפרמטרים של פריסה
בדף הזה מוסבר איך להשתמש ב-Cloud Deploy כדי לפרוס אפליקציה לדוגמה ל-2 יעדים בו-זמנית (פריסה מקבילה), תוך העברת ערך פרמטר שונה לכל מניפסט או הגדרת שירות שעברו עיבוד, באמצעות 3 שיטות שונות.
במדריך למתחילים הזה תבצעו את הפעולות הבאות:
יוצרים שני אשכולות GKE או שני שירותים של Cloud Run.
אפשר גם להשתמש באשכולות GKE מצורפים, אבל במדריך למתחילים הזה משתמשים רק ב-GKE וב-Cloud Run.
יוצרים הגדרת Skaffold ומניפסט של Kubernetes או הגדרת שירות של Cloud Run.
קובץ המניפסט או הגדרת השירות יהיו זהים עבור שני יעדי הצאצא, אבל בזמן הפריסה, קובץ המניפסט או הגדרת השירות שעברו עיבוד עבור כל יעד צאצא יכללו ערכים שונים לפרמטרים הספציפיים שהוגדרו במדריך הזה למתחילים.
הגדרת צינור עיבוד הנתונים לפריסה ויעדי הפריסה ב-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.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
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.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init - מוודאים שלחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine יש הרשאות מספיקות.
יכול להיות שלחשבון השירות כבר יש את ההרשאות הנדרשות. השלבים האלה מיועדים לפרויקטים שבהם השבתתם את מתן התפקידים האוטומטי לחשבונות שירות שמוגדרים כברירת מחדל.
- קודם מוסיפים את התפקיד
clouddeploy.jobRunner:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/clouddeploy.jobRunner" - מוסיפים את תפקיד המפתח לזמן הריצה הספציפי.
- ב-GKE:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/container.developer" - ל-Cloud Run:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/run.developer" -
מוסיפים את התפקיד
iam.serviceAccountUser, שכולל את ההרשאהactAsלפריסה בסביבת זמן הריצה:gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/iam.serviceAccountUser" \ --project=PROJECT_ID
- קודם מוסיפים את התפקיד
אם ה-CLI כבר מותקן, צריך לוודא שאתם מריצים את הגרסה העדכנית:
gcloud components update
יצירת סביבות זמן ריצה
אם אתם מבצעים פריסה ב-Cloud Run, אתם יכולים לדלג על הפקודה הזו.
ב-GKE, יוצרים שני אשכולות: deploy-params-cluster-prod1
ו-deploy-params-cluster-prod2, עם הגדרות ברירת מחדל. נקודות הקצה של Kubernetes API באשכולות צריכות להיות נגישות ברשת מהאינטרנט הציבורי.
כברירת מחדל, יש גישה חיצונית לאשכולות GKE.
gcloud container clusters create-auto deploy-params-cluster-prod1 \
--project=PROJECT_ID \
--region=us-central1 \
&& gcloud container clusters create-auto deploy-params-cluster-prod2 \
--project=PROJECT_ID \
--region=us-west1
הכנת ההגדרות וקבצי המניפסט של Skaffold
Cloud Deploy משתמש ב-Skaffold כדי לספק את הפרטים לגבי מה לפרוס ואיך לפרוס אותו בצורה נכונה עבור יעדים נפרדים.
במדריך למתחילים הזה, יוצרים קובץ skaffold.yaml שמזהה את מניפסט Kubernetes או את הגדרת השירות של Cloud Run שבהם יש להשתמש כדי לפרוס את האפליקציה לדוגמה.
פותחים חלון טרמינל.
יוצרים ספרייה חדשה ועוברים אליה.
GKE
mkdir deploy-params-gke-quickstart cd deploy-params-gke-quickstartCloud Run
mkdir deploy-params-run-quickstart cd deploy-params-run-quickstartיוצרים קובץ בשם
skaffold.yamlעם התוכן הבא:GKE
apiVersion: skaffold/v4beta7 kind: Config manifests: rawYaml: - kubernetes.yaml deploy: kubectl: {}Cloud Run
apiVersion: skaffold/v4beta7 kind: Config manifests: rawYaml: - service.yaml deploy: cloudrun: {}הקובץ הזה הוא קובץ תצורה מינימלי של Skaffold. במדריך למתחילים הזה, אתם יוצרים את הקובץ. אבל אפשר גם לבקש מ-Cloud Deploy ליצור אחד בשבילכם, עבור אפליקציות פשוטות שאינן בסביבת ייצור.
מידע נוסף על הקובץ הזה מופיע ב
skaffold.yamlמאמרי העזרה.יוצרים את ההגדרה של האפליקציה – הגדרת שירות ל-Cloud Run או מניפסט של Kubernetes ל-GKE.
GKE
יוצרים קובץ בשם
kubernetes.yamlעם התוכן הבא:apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment spec: replicas: 1 # from-param: ${replicaCount} selector: matchLabels: app: my-app template: metadata: labels: app: my-app annotations: commit: defaultShaValue # from-param: ${git-sha} spec: containers: - name: nginx image: my-app-image env: - name: envvar1 value: default1 # from-param: ${application_env1} - name: envvar2 value: default2 # from-param: ${application_env2}הקובץ הזה הוא מניפסט של Kubernetes, שמוחל על האשכול כדי לפרוס את האפליקציה. קובץ האימג' של הקונטיינר לפריסה מוגדר כאן כ-placeholder,
my-app-image, שמוחלף באימג' הספציפי כשיוצרים את הגרסה.Cloud Run
יוצרים קובץ בשם
service.yamlעם התוכן הבא:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: my-parallel-run-service spec: autoscaling.knative.dev/minScale: 1 # from-param: ${minInstances} selector: matchLabels: app: my-app template: metadata: annotations: commit: defaultShaValue # from-param: ${git-sha} spec: containers: - image: my-app-image env: - name: envvar1 value: defaultValue1 # from-param: ${application_env1} - name: envvar2 value: defaultValue2 # from-param: ${application_env2}הקובץ הזה הוא הגדרה בסיסית של שירות Cloud Run, שמשמשת לפריסת האפליקציה. קובץ האימג' של הקונטיינר שרוצים לפרוס מוגדר כאן כפלייסהולדר,
my-app-image, שמוחלף באימג' הספציפי כשיוצרים את הגרסה.
יצירת פייפליין של משלוחים ויעדים
אפשר להגדיר את צינור הנתונים ואת יעדי הנתונים בקובץ אחד או בקבצים נפרדים. במדריך הזה ליצירה מהירה, אנחנו יוצרים קובץ אחד.
יוצרים את צינור ההפצה ואת הגדרת היעד:
GKE
בספרייה
deploy-params-gke-quickstart, יוצרים קובץ חדש:clouddeploy.yaml, עם התוכן הבא:apiVersion: deploy.cloud.google.com/v1 kind: DeliveryPipeline metadata: name: my-params-demo-app-1 description: main application pipeline serialPipeline: stages: - targetId: params-prod-multi deployParameters: - values: replicaCount: "2" # Apply the deploy parameter replicaCount: "2" to the target with this label matchTargetLabels: label1: label1 - values: replicaCount: "3" # Apply the deploy parameter replicaCount: "3" to the target with this label matchTargetLabels: label2: label2 --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: params-prod-multi description: production clusters multiTarget: targetIds: [params-prod-a, params-prod-b] --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: params-prod-a labels: label1: label1 description: production cluster 1 deployParameters: application_env1: "sampleValue1" gke: cluster: projects/PROJECT_ID/locations/us-central1/clusters/deploy-params-cluster-prod1 --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: params-prod-b labels: label2: label2 description: production cluster 2 deployParameters: application_env2: "sampleValue2" gke: cluster: projects/PROJECT_ID/locations/us-west1/clusters/deploy-params-cluster-prod2Cloud Run
בספרייה
deploy-params-run-quickstart, יוצרים קובץ חדש:clouddeploy.yaml, עם התוכן הבא:apiVersion: deploy.cloud.google.com/v1 kind: DeliveryPipeline metadata: name: my-params-demo-app-1 description: main application pipeline serialPipeline: stages: - targetId: params-prod-multi deployParameters: - values: minInstances: "2" # Apply the deploy parameter minInstances: "2" to the target with this label matchTargetLabels: label1: label1 - values: minInstances: "3" # Apply the deploy parameter minInstances: "3" to the target with this label matchTargetLabels: label2: label2 --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: params-prod-multi description: production clusters multiTarget: targetIds: [params-prod-a, params-prod-b] --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: params-prod-a labels: label1: label1 description: production cluster 1 deployParameters: application_env1: "sampleValue1" run: location: projects/PROJECT_ID/locations/us-central1 --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: params-prod-b labels: label2: label2 description: production cluster 2 deployParameters: application_env2: "sampleValue2" run: location: projects/PROJECT_ID/locations/us-west1רושמים את צינור עיבוד הנתונים ואת היעדים בשירות Cloud Deploy:
gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_IDעכשיו יש לכם צינור עיבוד נתונים עם יעד מרובה אחד שכולל שני יעדים של GKE או Cloud Run, והוא מוכן לפריסת האפליקציה.
מאשרים את הצנרת ואת היעדים:
במסוף Google Cloud , נכנסים לדף Delivery pipelines של Cloud Deploy כדי לראות רשימה של צינורות העברת הנתונים שזמינים לכם.
מוצג צינור העברת הנתונים שיצרתם. שימו לב שבעמודה Targets (יעדים) מופיע יעד אחד, למרות שהגדרתם שלושה יעדים (יעד אחד מרובה ויעדי צאצא).
clouddeploy.yaml
שימו לב שהיעד היחיד שמופיע הוא היעד המרובה
params-prod-multi. יעדים של ילדים לא מוצגים.
יצירת גרסה
הפצה היא המשאב המרכזי ב-Cloud Deploy שמייצג את השינויים שנפרסים. צינור העברת התוכן מגדיר את מחזור החיים של הגרסה הזו. פרטים על מחזור החיים הזה מופיעים במאמר ארכיטקטורת שירות Cloud Deploy.
GKE
מריצים את הפקודה הבאה מהספרייה deploy-gke-parallel-quickstart כדי ליצור משאב release שמייצג את קובץ האימג' של הקונטיינר לפריסה:
gcloud deploy releases create test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=my-params-demo-app-1 \
--images=my-app-image=gcr.io/google-containers/nginx@sha256:f49a843c290594dcf4d193535d1f4ba8af7d56cea2cf79d1e9554f077f1e7aaa \
--deploy-parameters="git-sha=f787cac"
שימו לב לדגל --images=, שמשמש להחלפת ה-placeholder (my-app-image) במניפסט בתמונה ספציפית עם SHA. Google ממליצה ליצור תבניות למניפסטים בדרך הזו, ולהשתמש בשמות תמונות שעומדים בדרישות של SHA כשיוצרים גרסת הפצה.
Cloud Run
מריצים את הפקודה הבאה מהספרייה deploy-run-parallel-quickstart כדי ליצור משאב release שמייצג את קובץ האימג' של הקונטיינר לפריסה:
gcloud deploy releases create test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=my-params-demo-app-1 \
--images=my-app-image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a \
--deploy-parameters="git-sha=f787cac"
שימו לב לדגל --images=, שבו משתמשים כדי להחליף את ה-placeholder (my-app-image) בהגדרת השירות בתמונה הספציפית שמוגדרת באמצעות SHA. Google ממליצה ליצור תבניות להגדרות של השירותים והמשימות בדרך הזו, ולהשתמש בשמות תמונות שעומדים בדרישות של SHA כשיוצרים מהדורות.
כמו תמיד, כשיוצרים מהדורה, נוצרת פריסה אוטומטית ליעד הראשון בצינור (אלא אם מציינים יעד ספציפי באמצעות --to-target=). במדריך הזה, היעד הזה הוא יעד מרובה, ולכן rollout הוא 'פריסת בקרה' לשני יעדי צאצא, ואין יעדים נוספים בצינור ההפצה.
המשמעות היא שהפריסה של האפליקציה מתבצעת בכל מקום כשיוצרים את ההשקה.
צפייה בתוצאות במסוף Google Cloud
אחרי שיצרתם את הגרסה ואת הפריסה של בקר התנועה ואת פריסות המשנה, פריסות המשנה האלה נפרסות (או נמצאות בתהליך פריסה) באשכולות GKE או בשירותי Cloud Run המתאימים.
במסוף Google Cloud , עוברים לדף Delivery pipelines של Cloud Deploy כדי לראות את צינור העברת התוכן my-parallel-demo-app-1.
לוחצים על השם של צינור העברת הנתונים 'my-parallel-demo-app-1'.
הוויזואליזציה של הצינור מראה את סטטוס הפריסה של האפליקציה. בגלל שיש רק שלב אחד בצינור, בתצוגה החזותית מוצג רק צומת אחד.

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

בקטע Release details, בוחרים בכרטיסייה Artifacts.
בטבלה Deploy parameters (פרמטרים לפריסה) מפורטים כל הפרמטרים שהגדרתם במניפסט והערכים שסיפקתם לפרמטרים האלה:
GKE

Cloud Run

בנוסף לפרמטרים ולערכים, בטבלה מפורטות מטרות ההמרה שאליהן כל פרמטר מתייחס.
בעמודה כלי לבדיקת גרסאות, לוחצים על הצגת פריטי מידע שנוצרו בתהליך פיתוח (Artifacts) עבור יעד כלשהו.
לוחצים על הצגת ההשוואה, בוחרים באפשרות
params-prod-aליעד אחד ובאפשרותparams-prod-bליעד השני.מוצג הבדל בין שני יעדים, כולל הערכים שציינתם, בהשוואה בין המניפסטים שעברו עיבוד:
GKE

Cloud Run

הסרת המשאבים
כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם בדף הזה, פועלים לפי השלבים הבאים:
מחיקה של אשכולות GKE או שירותי Cloud Run:
GKE
gcloud container clusters delete deploy-params-cluster-prod1 --region=us-central1 --project=PROJECT_ID \ && gcloud container clusters delete deploy-params-cluster-prod2 --region=us-west1 --project=PROJECT_IDCloud Run
gcloud run services delete my-parallel-run-service --region=us-central1 --project=PROJECT_ID \ && gcloud run services delete my-parallel-run-service --region=us-west1 --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.
סיימתם את המדריך למתחילים!