אימות האפליקציה אחרי הפריסה
במדריך למתחילים הזה נסביר איך להשתמש ב-Cloud Deploy כדי לאמת את האפליקציה שנפרסה, כחלק מצינור העברת הנתונים.
במדריך למתחילים הזה תבצעו את הפעולות הבאות:
יוצרים אשכול GKE אחד או שירות Cloud Run אחד.
אפשר להשתמש באימות פריסה גם באשכולות GKE מצורפים, אבל במדריך למתחילים הזה נעשה שימוש רק ב-GKE וב-Cloud Run.
מגדירים את צינור עיבוד הנתונים לפריסה ואת יעד הפריסה ב-Cloud Deploy.
צינור ההפצה כולל שלב אחד בלבד ומשתמש רק ביעד אחד. מגדירים את התצורה של אימות הפריסה בקטע
stage.יוצרים הגדרת Skaffold שנדרשת לגרסה, ומניפסט של Kubernetes או הגדרת שירות של Cloud Run.
יוצרים גרסת הפצה, שנפרסת באופן אוטומטי ביעד.
אפשר לראות את תוצאות האימות ביומני Cloud Build, באמצעות הדף Rollout details של 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-verification-cluster,
עם הגדרות ברירת מחדל. נקודת קצה ל-API של Kubernetes באשכול צריכה להיות נגישה מהאינטרנט הציבורי. אשכולות GKE נגישים חיצונית כברירת מחדל.
gcloud container clusters create-auto deploy-verification-cluster \
--project=PROJECT_ID \
--region=us-central1
יצירת פייפליין של משלוחים ויעדים
אפשר להגדיר את צינור הנתונים ואת יעדי הנתונים בקובץ אחד או בקבצים נפרדים. במדריך למתחילים הזה מוסבר איך ליצור קובץ יחיד.
פותחים חלון טרמינל.
יוצרים ספרייה חדשה ועוברים אליה.
GKE
mkdir deploy-verification-gke-quickstart cd deploy-verification-gke-quickstartCloud Run
mkdir deploy-verification-run-quickstart cd deploy-verification-run-quickstartיוצרים את צינור ההפצה ואת הגדרת היעד:
GKE
בספרייה
deploy-verification-gke-quickstart, יוצרים קובץ חדש:clouddeploy.yaml, עם התוכן הבא:apiVersion: deploy.cloud.google.com/v1 kind: DeliveryPipeline metadata: name: deploy-verification-demo-app-gke-1 description: main application pipeline serialPipeline: stages: - targetId: verify-staging profiles: [] strategy: standard: verify: tasks: - type: container image: ubuntu command: ["/bin/sh"] args: ["-c", 'echo "Your test or tests would go here."' ] --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: verify-staging description: verification staging cluster gke: cluster: projects/PROJECT_ID/locations/us-central1/clusters/deploy-verification-clusterCloud Run
בספרייה
deploy-verification-run-quickstart, יוצרים קובץ חדש:clouddeploy.yaml, עם התוכן הבא:apiVersion: deploy.cloud.google.com/v1 kind: DeliveryPipeline metadata: name: deploy-verification-demo-app-run-1 description: main application pipeline serialPipeline: stages: - targetId: verify-staging profiles: [] strategy: standard: verify: tasks: - type: container image: ubuntu command: ["/bin/sh"] args: ["-c", 'echo "Your test or tests would go here."' ] --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: verify-staging description: staging Run service run: location: projects/PROJECT_ID/locations/us-central1הקובץ הזה כולל את קטע הטקסט
verifyבהגדרה שלstrategyבצינור העברת הנתונים. הוא מגדיר את הקונטיינר ואת הפקודה להפעלה אחרי פריסת האפליקציה. במקרה הזה, אנחנו פורסים קונטיינר של Ubuntu ומריצים פקודה פשוטה שלecho. אפשר לראות את התוצאות של הפקודה הזו ביומנים. בתרחיש מציאותי יותר, תריצו בדיקות על האפליקציה שפרסתם.רושמים את צינור עיבוד הנתונים ואת היעדים בשירות Cloud Deploy:
gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_ID
עכשיו יש לכם צינור עיבוד נתונים לפריסה עם יעד אחד, שמוכן לפריסת האפליקציה ולאימות הפריסה.
מאשרים את הצנרת ואת היעדים:
במסוף Google Cloud , נכנסים לדף Delivery pipelines של Cloud Deploy כדי לראות רשימה של צינורות העברת הנתונים שזמינים לכם.
צינור העברת הנתונים שיצרתם מוצג, עם יעד אחד שמופיע בעמודה יעדים.

יצירת קובץ התצורה של Skaffold ומניפסט האפליקציה
Cloud Deploy משתמש ב-Skaffold כדי לזהות את המניפסט שבו יש להשתמש כדי לפרוס את האפליקציה לדוגמה אל יעד.
יוצרים קובץ בשם
skaffold.yamlעם התוכן הבא:GKE
apiVersion: skaffold/v4beta7 kind: Config manifests: rawYaml: - k8s-pod.yaml deploy: kubectl: {}Cloud Run
apiVersion: skaffold/v4beta7 kind: Config manifests: rawYaml: - service.yaml deploy: cloudrun: {}מידע נוסף על קובץ ההגדרה הזה מופיע ב
skaffold.yamlמאמר בנושא הפניה.יוצרים את ההגדרה של האפליקציה – הגדרת שירות ל-Cloud Run או מניפסט של Kubernetes ל-GKE.
GKE
יוצרים קובץ בשם
k8s-pod.yamlעם התוכן הבא:apiVersion: v1 kind: Pod metadata: name: my-verification-pod spec: containers: - name: nginx image: my-app-imageהקובץ הזה הוא מניפסט בסיסי של Kubernetes, שמוחל על האשכול כדי לפרוס את האפליקציה. קובץ האימג' של הקונטיינר לפריסה מוגדר כאן כ-placeholder,
my-app-image, שמוחלף באימג' הספציפי כשיוצרים את הגרסה.Cloud Run
יוצרים קובץ בשם
service.yamlעם התוכן הבא:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: my-verification-run-service spec: template: spec: containers: - image: my-app-imageהקובץ הזה הוא הגדרה בסיסית של שירות Cloud Run, שמשמשת לפריסת האפליקציה. קובץ האימג' של הקונטיינר שרוצים לפרוס מוגדר כאן כפלייסהולדר,
my-app-image, שמוחלף באימג' הספציפי כשיוצרים את הגרסה.
יצירת גרסה
הפצה היא המשאב המרכזי ב-Cloud Deploy שמייצג את השינויים שנפרסים. צינור העברת התוכן מגדיר את מחזור החיים של הגרסה הזו. פרטים על מחזור החיים הזה מופיעים במאמר ארכיטקטורת שירות Cloud Deploy.
GKE
מריצים את הפקודה הבאה מהספרייה deploy-verification-gke-quickstart כדי ליצור משאב release שמייצג את קובץ האימג' של הקונטיינר לפריסה:
gcloud deploy releases create test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=deploy-verification-demo-app-gke-1 \
--images=my-app-image=gcr.io/google-containers/nginx@sha256:f49a843c290594dcf4d193535d1f4ba8af7d56cea2cf79d1e9554f077f1e7aaa
שימו לב לדגל --images=, שמשמש להחלפת ה-placeholder (my-app-image) במניפסט בתמונה ספציפית עם SHA. Google ממליצה ליצור תבניות למניפסטים בדרך הזו, ולהשתמש בשמות תמונות שעומדים בדרישות של SHA כשיוצרים גרסת הפצה.
Cloud Run
מריצים את הפקודה הבאה מהספרייה deploy-verification-run-quickstart כדי ליצור משאב release שמייצג את קובץ האימג' של הקונטיינר לפריסה:
gcloud deploy releases create test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=deploy-verification-demo-app-run-1 \
--images=my-app-image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a
שימו לב לדגל --images=, שבו משתמשים כדי להחליף את ה-placeholder (my-app-image) בהגדרת השירות בתמונה הספציפית שמוגדרת באמצעות SHA. Google ממליצה ליצור תבניות להגדרות השירות בדרך הזו, ולהשתמש בשמות תמונות עם הסמכה של SHA כשיוצרים גרסת הפצה.
בדומה לכל פריטי התוכן (אלא אם הם כוללים --disable-initial-rollout),
מערכת Cloud Deploy יוצרת באופן אוטומטי גם משאב פריסת גרסה. האפליקציה נפרסת באופן אוטומטי ליעד אחד שהוגדר לצורך צינור אספקת התוכן הזה.
משימת האימות שציינו בצינור העברת הנתונים לפריסה מופעלת כחלק מההשקה הזו, אחרי פריסת האפליקציה.
צפייה בתוצאות במסוף Google Cloud
אחרי כמה דקות, הגרסה שלכם נפרסת בסביבת זמן הריצה של היעד.
משימת האימות שהגדרנו (לצורך הדוגמה) מדפיסה מחרוזת ביומן של Cloud Build. אנחנו יכולים לראות את היומן הזה כדי לוודא שהאימות פעל כמצופה.
במסוף Google Cloud , עוברים לדף Delivery pipelines (צינורות העברה) של Cloud Deploy כדי לראות את צינור העברה ("deploy-verification-demo-app-gke-1" או "deploy-verification-demo-app-run-1").
לוחצים על השם של צינור העברת הנתונים של הפריסה ("deploy-verification-demo-app-gke-1" או "deploy-verification-demo-app-run-1").
הוויזואליזציה של הצינור מראה את סטטוס הפריסה של האפליקציה. בגלל שיש רק שלב אחד בצינור, בתצוגה החזותית מוצג רק צומת אחד.

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

אימות מופיע ברשימת המשרות.
לוחצים על אימות.
יוצג יומן ההרצה של העבודה.
גוללים למטה ברשימת רשומות היומן כדי למצוא את
verification-testולוחצים עליה.
שימו לב ל
textPayload. זו המחרוזת שהוגדרה בקטעVerifyבצינור ההפצה.
הסרת המשאבים
כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם בדף הזה, פועלים לפי השלבים הבאים:
מחיקה של אשכול GKE או שירות Cloud Run:
GKE
gcloud container clusters delete deploy-verification-cluster --region=us-central1 --project=PROJECT_IDCloud Run
gcloud run services delete my-verification-run-service --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.
סיימתם את המדריך למתחילים!