מידע על Codelab זה
1. סקירה כללית
בשיעור ה-Lab הזה תיצרו טריגר של Eventarc שמחבר נושא Pub/Sub לשירות Workflows. באמצעות Eventarc תוכלו להפריד בין השירותים לתקשורת בין השירותים, כך שהפתרון שלכם יהיה מבוסס יותר על אירועים ומורחב יותר. צריך ליצור תהליך עבודה שכולל כמה שלבים לביצוע תהליך עסקי כדי לחשב את נקודות הפרסים של הלקוחות על הזמנה ב-Cymbal Eats. תהליך העבודה ישלח מספר בקשות לאפליקציה שפועלת ב-GKE Autopilot, ותפרסם הודעה בנושא Pub/Sub כדי להודיע לאפליקציית שירות ההזמנות על נקודות תגמול מחושבות.
מה זה GKE Autopilot?
GKE Autopilot הוא מצב פעולה ב-GKE, שבו Google מנהלת את תצורת האשכול, כולל הצמתים, ההתאמה לעומס (scaling), האבטחה והגדרות אחרות שנקבעו מראש. אשכולות Autopilot מותאמים להרצת רוב עומסי העבודה (workloads) בייצור, ומאפשרים הקצאה של משאבי מחשוב על סמך המניפסטים שלכם ב-Kubernetes. התצורה המשופרת מבוססת על השיטות המומלצות וההמלצות של GKE לגבי הגדרה, מדרגיות ואבטחה של אשכולות ועומסי עבודה. בטבלה Autopilot והשוואה רגילה אפשר למצוא רשימה של ההגדרות המובנות.
באמצעות GKE Standard, המשתמשים אחראים לנהל צמתים של עובדים והגדרות של מאגרי צמתים, והשאר מטופל על ידי GKE.
האחריות של הלקוח לעומת האחריות של Google כשהוא פועל במצב GKE Standard
באמצעות GKE Autopilot, ההגדרה והניהול של מאגרי צמתים הם באחריות Google. כך אפשר להתמקד באפליקציות ובשירותים שפועלים מעל האשכול.
מה זה Eventarc?
Eventarc מאפשר לפתח ארכיטקטורות מבוססות-אירועים בלי שתצטרכו להטמיע, להתאים אישית או לתחזק את התשתית עצמה. חברת Eventarc מציעה פתרון סטנדרטי לניהול זרימת השינויים במצב (State) שנקרא 'אירועים', בין מיקרו-שירותים (microservices) מופרדים. כשהאירוע מופעל, Eventarc מנתב את האירועים האלה דרך מינויי Pub/Sub ליעדים שונים (לדוגמה: תהליכי עבודה, Cloud Run) תוך כדי ניהול של תהליכי מסירה, אבטחה, הרשאות, ניראות (observability) וטיפול בשגיאות.
ספקי אירועים של Google
- יותר מ-90 ספקים של Google Cloud. הספקים האלה שולחים אירועים ישירות מהמקור (למשל מ-Cloud Storage) או דרך רשומות ביומני הביקורת של Cloud.
- ספקי Pub/Sub. הספקים האלה שולחים אירועים ל-Eventarc באמצעות הודעות Pub/Sub.
ספקי צד שלישי
ספקי צד שלישי הם ישויות שאינן של Google שמציעות מקור של Eventarc.
טריגרים של Eventarc
- אירועי Cloud Pub/Sub. אפשר להפעיל Eventarc על ידי הודעות שפורסמו בנושאי Pub/Sub.
- אירועים של יומני ביקורת של Cloud (CAL). יומני הביקורת של Cloud מספקים את יומני הביקורת Admin Activity ו-Data Access לכל פרויקט, תיקייה וארגון ב-Cloud.
- אירועים ישירים. אפשר להפעיל את Eventarc על ידי אירועים ישירים שונים, כמו עדכון לקטגוריה של Cloud Storage או עדכון של תבנית להגדרת תצורה מרחוק ב-Firebase.
יעדי אירועים
- תהליכי עבודה
- Cloud Run
- GKE
- Cloud Functions( דור שני)
מהם תהליכי עבודה?
Workflows הוא שירות מנוהל שמאפשר לשלב מיקרו-שירותים, משימות וממשקי API. Workflows הוא שירות ללא שרת (serverless), וההיקף שלו ישתנה כדי לעמוד בביקוש.
תרחישים לדוגמה של תהליכי עבודה:
- תהליכי עבודה מבוססי-אירועים מופעלים בטריגרים מוגדרים. לדוגמה, אם נשלחת הזמנה חדשה ואתם רוצים לחשב את נקודות הנאמנות של הלקוח. אם ההזמנה מבוטלת, אפשר לפרסם את האירוע וכל השירותים הרלוונטיים יטפלו באירוע.
- תהליכי עבודה של משימות באצווה מריצים משימות על בסיס קבוע באמצעות Cloud Scheduler. לדוגמה, משימה לילית שבודקת אם יש אפשרויות בתפריט בסטטוס 'נכשל' ומוחקת אותן.
תהליכי עבודה אידיאליים לתהליכי עבודה מתזמרים שירותים. ניתן להפוך תהליכים אוטומטיים לתהליכים שכוללים המתנה וניסיונות חוזרים למשך עד שנה.
היתרונות של תהליכי עבודה:
- הגדרה באמצעות קוד: מצמצמים את החובות הטכניים על ידי העברת הלוגיקה להגדרה במקום כתיבת קוד.
- ארכיטקטורה פשוטה יותר. תהליכי עבודה עם שמירת מצב מאפשרים לכם לראות תצוגה חזותית של שילובי שירותים מורכבים ולעקוב אחריהם ללא יחסי תלות נוספים.
- שילוב של אמינות עמידות בכשלים. שליטה בכשלים עם לוגיקת ברירת מחדל או מותאמת אישית של ניסיונות חוזרים וטיפול בשגיאות גם כשמערכות אחרות נכשלות. כדי לעזור לכם לעקוב אחרי ההתקדמות, צריך לבצע בדיקה של כל שלב ל-Cloud Spanner.
- ללא תחזוקה. שנה גודל לפי הצורך: אין מה לתקן או לתחזק. משלמים רק כשתהליכי העבודה פועלים, ללא עלות בזמן המתנה או ללא פעילות.
בשיעור ה-Lab הזה תגדירו תהליך עבודה מבוסס-אירועים.
מה תלמדו
בשיעור Lab זה תלמדו איך:
- הגדרת נושא Pub/Sub ו-Eventarc כדי להפעיל תהליכי עבודה
- הגדרת תהליך עבודה לביצוע קריאות ל-API לאפליקציות שפועלות ב-GKE Autopilot
- הגדרת תהליך העבודה לפרסום הודעות ב-Pub/Sub
- איך שולחים שאילתות על יומנים מובנים של Workflows ב-Cloud Logging ומשתמשים ב-CLI של gcloud
דרישות מוקדמות
- שיעור ה-Lab הזה מבוסס על היכרות עם הסביבות של Cloud Console ו-Cloud Shell.
- החוויה הקודמת ב-GKE וב-Cloud Pub/Sub מועילה אבל לא נדרשת.
2. הגדרה ודרישות
הגדרת פרויקט ב-Cloud
- נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. אם אין לכם עדיין חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.
- Project name הוא השם המוצג של המשתתפים בפרויקט. זו מחרוזת תווים שלא משמשת את Google APIs. אפשר לעדכן אותו בכל שלב.
- Project ID הוא ייחודי בכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו (אי אפשר לשנות אותו אחרי שמגדירים אותו). מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי; בדרך כלל לא מעניין אותך מה זה. ברוב ה-Codelabs תצטרכו להפנות אל מזהה הפרויקט (בדרך כלל הוא מזוהה כ-
PROJECT_ID
). אם המזהה שנוצר לא מוצא חן בעיניך, יש לך אפשרות ליצור מזהה אקראי אחר. לחלופין, אפשר לנסות תבנית משלך ולבדוק אם היא זמינה. לא ניתן לשנות אותו אחרי השלב הזה, והוא יישאר למשך הפרויקט. - לידיעתך, יש ערך שלישי – Project Number (מספר פרויקט), שחלק מממשקי ה-API משתמשים בו. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי התיעוד.
- בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים או בממשקי API של Cloud. מעבר ב-Codelab הזה לא אמור לעלות הרבה, אם בכלל. כדי להשבית את המשאבים ולא לצבור חיובים מעבר למדריך הזה, אתם יכולים למחוק את המשאבים שיצרתם או למחוק את הפרויקט כולו. משתמשים חדשים ב-Google Cloud זכאים להצטרף לתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.
הגדרת סביבה
לוחצים על הסמל שמופיע מימין לסרגל החיפוש כדי להפעיל את Cloud Shell.
משכפלים את המאגר, עוברים לספרייה, מעתיקים ומדביקים את הפקודה שמתחת לטרמינל ומקישים על Enter:
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/customer-service
פורסים את יחסי התלות הנדרשים באמצעות הרצה של gke-lab-setup.sh
המערכת תיצור את המשאבים הבאים:
- אשכול AlloyDB ומכונה
- אשכול GKE Autopilot
./gke-lab-setup.sh
אם מתבקשים לאשר, לוחצים על 'הרשאה' כדי להמשיך.
ההגדרה תימשך כ-10 דקות.
לפני שמפעילים שלבים נוספים, צריך להמתין עד שהסקריפט יהיה מוכן ורואים את הפלט למטה.
NAME: client-instance ZONE: us-central1-c MACHINE_TYPE: e2-medium PREEMPTIBLE: INTERNAL_IP: 10.128.0.9 EXTERNAL_IP: 35.232.109.233 STATUS: RUNNING
3. אשכול GKE Autopilot
בדיקת אשכול GKE Autopilot
הגדרה של משתני סביבה של פרויקט:
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export PROJECT_NAME=$(gcloud projects describe $PROJECT_ID --format='value(name)')
כחלק מההגדרה הראשונית, האשכול נוצר באמצעות הפקודה הבאה (אין צורך להריץ את הפקודה הזו):
gcloud container clusters create-auto $CLUSTER_NAME --region $REGION
מריצים את הפקודה כדי להציג את אשכול GKE Autopilot שנוצר:
gcloud container clusters list
פלט לדוגמה:
מריצים את הפקודה כדי לאחסן פרטי כניסה לאשכול:
CLUSTER_NAME=rewards-cluster
REGION=us-central1
gcloud container clusters get-credentials $CLUSTER_NAME --region=$REGION
פריסת אפליקציה
לאחר מכן פורסים אפליקציה של שירות לקוחות. זהו מיקרו-שירות מבוסס-Java שמשתמש ב-Quarkus framework.
עוברים לתיקייה cymbal-eats/customer-service
ומריצים את הפקודות הבאות כדי ליצור ולהעלות קובץ אימג' בקונטיינר:
./mvnw clean package -DskipTests
export CUSTOMER_SERVICE_IMAGE=gcr.io/$PROJECT_ID/customer-service:1.0.0
gcloud builds submit --tag $CUSTOMER_SERVICE_IMAGE .
מגדירים את כתובת ה-IP הפרטית של AlloyDB:
export DB_HOST=$(gcloud beta alloydb instances describe customer-instance \
--cluster=customer-cluster \
--region=$REGION \
--format=json | jq \
--raw-output ".ipAddress")
echo $DB_HOST
מריצים את הפקודות הבאות כדי ליצור אובייקט Secret ב-Kubernetes, לאחסון פרטי כניסה של מסד נתונים, שישמשו את אפליקציית שירות הלקוחות כדי להתחבר למסד הנתונים:
DB_NAME=customers
DB_USER=postgres
DB_PASSWORD=password123
kubectl create secret generic gke-alloydb-secrets \
--from-literal=database=$DB_NAME \
--from-literal=username=$DB_USER \
--from-literal=password=$DB_PASSWORD \
--from-literal=db_host=$DB_HOST
מריצים את הפקודה כדי להחליף את CUSTOMER_SERVICE_IMAGE בקובץ המתאיםDeploy.yaml:
sed "s@CUSTOMER_SERVICE_IMAGE@$CUSTOMER_SERVICE_IMAGE@g" deployment.yaml.tmpl > customer-service-deployment.yaml
מריצים את הפקודה כדי לפרוס את האפליקציה:
kubectl apply -f customer-service-deployment.yaml
האפליקציה תעבור למצב RUNNING בעוד כמה רגעים.
סקירה של קובץ מפרט הפריסה:
deployment.yaml.tmpl
זהו החלק של התצורה שמציין את המשאבים הנדרשים להפעלת האפליקציה.
spec: containers: - name: customer-service image: CUSTOMER_SERVICE_IMAGE resources: requests: cpu: 250m memory: 512Mi ephemeral-storage: 512Mi limits: cpu: 500m memory: 1024Mi ephemeral-storage: 1Gi
מריצים את הפקודה כדי ליצור כתובת IP חיצונית שתשמש בתהליך העבודה:
SERVICE_NAME=customer-service
kubectl expose deployment $SERVICE_NAME \
--type LoadBalancer --port 80 --target-port 8080
מריצים את הפקודה כדי לאמת את המשאבים שנוצרו:
kubectl get all
פלט לדוגמה:
4. בדיקת תהליך העבודה
מושגי ליבה של תהליכי עבודה
תהליך עבודה מורכב מסדרה של שלבים שמתוארים באמצעות התחביר של תהליכי עבודה( YAML או JSON).
לאחר יצירת תהליך העבודה, הוא נפרס כדי להכין את תהליך העבודה לביצוע.
הפעלה היא הרצה אחת של הלוגיקה שכלולה בהגדרה של תהליך עבודה. תהליך עבודה שלא הופעל לא יוצר חיובים. כל תהליכי העבודה הם בלתי תלויים, וההתאמה המהירה לעומס של המוצר מאפשרת מספר רב של ביצוע בו-זמנית.
אמצעי בקרה לביצוע
- שלבים - כדי ליצור תהליך עבודה, מגדירים את
steps
ואת סדר הביצוע הרצויים באמצעות התחביר של תהליכי עבודה. כל תהליך עבודה חייב לכלול שלב אחד לפחות. - תנאים – ניתן להשתמש בבלוק
switch
כמנגנון בחירה המאפשר לערך של ביטוי לשלוט בתהליך הביצוע של תהליך עבודה. - איטרציות - אפשר להשתמש בלולאת
for
כדי לחזור על רצף של מספרים או באמצעות אוסף של נתונים, כמו רשימה או מפה. - תהליכי עבודה משניים – תהליך משנה פועל באופן דומה לתרחיש או לפונקציה בשפת תכנות, ומאפשר לכם לבצע שלב או קבוצה של שלבים שחוזרים על עצמם כמה פעמים.
הפעלת הפעלות
- ידני – אפשר לנהל את תהליכי העבודה ממסוף Google Cloud או משורת הפקודה באמצעות Google Cloud CLI.
- פרוגרמטי – אפשר להשתמש בספריות הלקוח ב-Cloud של Workflows API, או ב-API ל-REST, כדי לנהל תהליכי עבודה.
- Scheduled (תזמון) – אפשר להשתמש ב-Cloud Scheduler כדי להריץ תהליך עבודה לפי לוח זמנים מסוים.
ארגומנטים של זמן ריצה
כדי לגשת לנתונים שמועברים בזמן הריצה, צריך להוסיף שדה params
לתהליך העבודה הראשי (הם ממוקמים בבלוק ראשי). הבלוק הראשי מקבל ארגומנט יחיד, שהוא כל סוג חוקי של נתוני JSON. שדה הפרמטרים מציין את שם המשתנה שבו תהליך העבודה משתמש כדי לאחסן את הנתונים שאתם מעבירים.
לוגיקה של תהליך העבודה
אם אין לקוח קיים, תהליך העבודה יבצע קריאה ל-API כדי ליצור קודם לקוח ולאחר מכן לעדכן את נקודות התגמולים. על סמך הסכום הכולל של ההזמנה, תהליך העבודה יבחר מכפיל שיחשב את נקודות התגמולים של הלקוח. פרטים נוספים מופיעים בדוגמה שבהמשך.
- calculate_multiplier: switch: - condition: ${totalAmount < 10} steps: - set_multiplier1: assign: - multiplier: 2 - condition: ${totalAmount >= 10 and totalAmount < 25} steps: - set_multiplier2: assign: - multiplier: 3 - condition: ${totalAmount >= 25} steps: - set_multiplier3: assign: - multiplier: 5 - calculate_rewards: assign: - rewardPoints: ${customerRecord.rewardPoints + multiplier}
5. הגדרה ופריסה של תהליך העבודה
מריצים את הפקודה כדי לראות את כתובת ה-IP החיצונית של השירות:
kubectl get svc
פלט לדוגמה:
מגדירים את משתנה הסביבה שלמטה באמצעות הערך של 'כתובת IP חיצונית' מהפלט הקודם.
CUSTOMER_SERVICE_URL=http://$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
החלפת כתובת ה-URL של אפליקציית שירות הלקוחות בתבנית של תהליך העבודה:
sed "s@CUSTOMER_SERVICE_URL@$CUSTOMER_SERVICE_URL@g" gkeRewardsWorkflow.yaml.tmpl > gkeRewardsWorkflow.yaml
הגדרת המיקום של השירות ומשתני הסביבה של הפרויקט של Workflows:
gcloud config set workflows/location ${REGION}
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export PROJECT_NAME=$(gcloud projects describe $PROJECT_ID --format='value(name)')
יוצרים חשבון שירות בהתאמה אישית לתהליך העבודה עם ההרשאות הבאות:
- ממשקי API לרישום שיחות
- פרסום הודעות בנושא PubSub
export WORKFLOW_SERVICE_ACCOUNT=workflows-sa
gcloud iam service-accounts create ${WORKFLOW_SERVICE_ACCOUNT}
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member "serviceAccount:${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com" \
--role "roles/logging.logWriter"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member "serviceAccount:${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com" \
--role "roles/pubsub.publisher"
פריסת תהליך העבודה. תהליך העבודה מוגדר לשימוש בחשבון השירות שנוצר בשלב הקודם:
export WORKFLOW_NAME=rewardsWorkflow
gcloud workflows deploy ${WORKFLOW_NAME} \
--source=gkeRewardsWorkflow.yaml \
--service-account=${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com
בודקים את המקור של תהליך העבודה ופרטים נוספים(הכרטיסייה 'טריגרים'). כרגע אין טריגרים שהוגדרו להפעלה של תהליך העבודה הזה. בשלב הבא מגדירים אותה.
6. הגדרת נושאי Pub/Sub וטריגר Eventarc
בשלב הבא צריך ליצור שני נושאי Pub/Sub ולהגדיר טריגר אחד של Eventarc.
אפליקציית Order Service תפרסם הודעות ב-order-topic
עם מידע על הזמנות חדשות.
תהליך העבודה תפרסם הודעות אל order-points-topic
עם מידע על הנקודות בפרסים על ההזמנה והסכום הכולל. שירות Order Service (לא נפרס חלק משיעור ה-Lab הזה) חושף נקודת קצה (endpoint) שמשמשת במינוי Push ל-order-points-topic,
לעדכון נקודות התגמול והסכום הכולל לכל הזמנה.
יצירת נושאי Pub/Sub חדשים:
export TOPIC_ID=order-topic
export ORDER_POINTS_TOPIC_ID=order-points-topic
gcloud pubsub topics create $TOPIC_ID --project=$PROJECT_ID
gcloud pubsub topics create $ORDER_POINTS_TOPIC_ID --project=$PROJECT_ID
הגדרת מיקום לשירות Eventarc:
gcloud config set eventarc/location ${REGION}
יוצרים חשבון שירות בהתאמה אישית שישמש את הטריגר של Eventarc להרצת תהליכי עבודה.
export TRIGGER_SERVICE_ACCOUNT=eventarc-workflow-sa
gcloud iam service-accounts create ${TRIGGER_SERVICE_ACCOUNT}
כדי להפעיל תהליכי עבודה, צריך לתת לחשבון השירות גישה.
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${TRIGGER_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role="roles/workflows.invoker"
יוצרים טריגר של Eventarc כדי להאזין להודעות Pub/Sub ולהעביר אותן לתהליכי עבודה.
gcloud eventarc triggers create new-orders-trigger \
--destination-workflow=${WORKFLOW_NAME} \
--destination-workflow-location=${REGION} \
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
--service-account="${TRIGGER_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--transport-topic=$TOPIC_ID
פלט לדוגמה:
Creating trigger [new-orders-trigger] in project [qwiklabs-gcp-01-1a990bfcadb3], location [us-east1]...done. Publish to Pub/Sub topic [projects/qwiklabs-gcp-01-1a990bfcadb3/topics/order-topic] to receive events in Workflow [rewardsWorkflow]. WARNING: It may take up to 2 minutes for the new trigger to become active.
בודקים את המינוי שנוצר עבור הטריגר.
בודקים את השינויים בצד תהליך העבודה. נוסף טריגר חדש.
7. בדיקת תהליך העבודה
כדי לדמות את שירות ההזמנות, עליכם לשלוח הודעות לנושא Pub/Sub מ-Cloud Shell ולאמת את יומני שירות הלקוחות במסוף Cloud.
export TOPIC_ID=order-topic
gcloud pubsub topics publish $TOPIC_ID --message '{"userId":"id1","orderNumber":123456,"name":"Angela Jensen","email":"ajensen9090+eats@gmail.com","address":"1845 Denise St","city":"Mountain View","state":"CA","zip":"94043","orderItems":[{"id":7,"createDateTime":"2022-03-17T21:51:44.968584","itemImageURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","itemName":"Curry Plate","itemPrice":12.5,"itemThumbnailURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","spiceLevel":0,"status":"Ready","tagLine":"Spicy touch for your taste buds","updateDateTime":"2022-03-18T01:30:29.340584","inventory":8,"quantity":1}]}'
פלט לדוגמה:
messageIds: - '5063709859203105'
לבדוק את פרטי הביצוע של תהליך העבודה ואת היומנים.
8. רישום מובנה של תהליך העבודה
תהליך העבודה מוגדר לכתיבת יומנים מובנים בפורמט JSON. היומנים נכתבים באמצעות Cloud Logging API, המשאב workflows.googleapis.com/Workflow
ומתחת לשם היומן projects/${PROJECT_ID}/logs/Workflows
.
אפשר לבדוק את הגדרות הרישום ביומן שבהמשך.
- log_totalAmount: call: sys.log args: json: orderNumber: ${order.orderNumber} totalAmount: ${totalAmount} multiplier: ${multiplier} totalRewardPoints: ${rewardPoints} orderRewardPoints: ${orderRewardPoints} severity: INFO
פותחים את Logs Explorer במסוף Cloud ומריצים שאילתה כדי למצוא הזמנות מעובדות בסכום כולל גבוה מ-2 דולר.
כדי להציג את השדה של שאילתת החיפוש, לוחצים על 'הצגת שאילתה'.
resource.type="workflows.googleapis.com/Workflow" AND
jsonPayload.totalAmount > 2 AND
timestamp >= "2023-01-01T00:00:00Z" AND
timestamp <= "2024-12-31T23:59:59Z"
פלט לדוגמה:
פותחים את Cloud Shell ומשתמשים ב-CLI של gcloud כדי לקרוא יומנים עם הפקודות הבאות.
gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND jsonPayload.totalAmount > 2 AND timestamp >= "2023-01-01T00:00:00Z" AND timestamp <= "2023-12-31T23:59:59Z"' --limit 10 --format="table(jsonPayload.orderNumber,jsonPayload.totalAmount,jsonPayload.orderRewardPoints,jsonPayload.totalRewardPoints,jsonPayload.multiplier)"
פלט לדוגמה באמצעות הפורמט table
:
כדי להחזיר יומנים בפורמט JSON, מריצים את הפקודה הבאה:
gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND jsonPayload.totalAmount > 2 AND timestamp >= "2023-01-01T00:00:00Z" AND timestamp <= "2023-12-31T23:59:59Z"' --limit 10 --format=json | jq
פלט לדוגמה באמצעות הפורמט json
:
9. סקירת הרשומות של הלקוחות
(שלבים אופציונליים)
מריצים את הפקודות הבאות כדי להגדיר את משתנה הסביבה של כתובת ה-URL של שירות הלקוחות.
CUSTOMER_SERVICE_URL=http://$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
curl $CUSTOMER_SERVICE_URL/customer | jq
פלט לדוגמה:
[ { "address": "1845 Denise St", "city": "Mountain View", "createDateTime": "2023-01-31T17:22:08.853644", "email": "ajensen9090+eats@gmail.com", "id": "id1", "name": "Angela Jensen", "rewardPoints": 4, "state": "CA", "updateDateTime": "2023-01-31T17:22:09.652117", "zip": "94043" } ]
מריצים את הפקודה כדי לפרסם הזמנה חדשה כמה פעמים ולאמת את נקודות התגמול של הלקוח באמצעות פקודת curl.
פרסום הודעת הזמנה חדשה:
export TOPIC_ID=order-topic
gcloud pubsub topics publish $TOPIC_ID --message '{"userId":"id1","orderNumber":123456,"name":"Angela Jensen","email":"ajensen9090+eats@gmail.com","address":"1845 Denise St","city":"Mountain View","state":"CA","zip":"94043","orderItems":[{"id":7,"createDateTime":"2022-03-17T21:51:44.968584","itemImageURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","itemName":"Curry Plate","itemPrice":12.5,"itemThumbnailURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","spiceLevel":0,"status":"Ready","tagLine":"Spicy touch for your taste buds","updateDateTime":"2022-03-18T01:30:29.340584","inventory":8,"quantity":1}]}'
מאמתים את נקודות התגמול של הלקוחות:
curl $CUSTOMER_SERVICE_URL/customer | jq
כדי לבדוק את היומנים האחרונים, מריצים את הפקודה הבאה:
gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND jsonPayload.totalAmount > 2 AND timestamp >= "2023-01-01T00:00:00Z" AND timestamp <= "2023-12-31T23:59:59Z"' --limit 10 --format="table(jsonPayload.orderNumber,jsonPayload.totalAmount,jsonPayload.orderRewardPoints,jsonPayload.totalRewardPoints,jsonPayload.multiplier)"
10. מעולה!
כל הכבוד, סיימת את ה-Codelab!
נושאים שטיפלנו בהם:
- איך להגדיר את נושא Pub/Sub ואת Eventarc כך שיפעילו תהליכי עבודה
- איך להגדיר את תהליך העבודה לביצוע קריאות ל-API לאפליקציות שפועלות ב-GKE Autopilot
- איך להגדיר את תהליך העבודה לפרסום הודעות ב-Pub/Sub
- איך שולחים שאילתות על יומנים מובנים של Workflows ב-Cloud Logging ומשתמשים ב-CLI של gcloud
השלב הבא:
בקישורים הבאים תוכלו למצוא עוד מעבדי קוד Labs של Cymbal Eats:
- הפעלת Cloud Workflows באמצעות Eventarc
- הפעלת עיבוד אירועים מ-Cloud Storage
- התחברות ל-Cloud SQL פרטי מ-Cloud Run
- התחברות למסדי נתונים מנוהלים מ-Cloud Run
- אפליקציה מאובטחת ללא שרת (serverless) עם שרת proxy לאימות זהויות (IAP)
- הפעלת משימות של Cloud Run באמצעות Cloud Scheduler
- פריסה מאובטחת ב-Cloud Run
- אבטחת תעבורת נתונים נכנסת (ingress) ב-Cloud Run
הסרת המשאבים
כדי להימנע מצבירת חיובים בחשבון Google Cloud על המשאבים שנעשה בהם שימוש במדריך הזה, צריך למחוק את הפרויקט שמכיל את המשאבים או לשמור את הפרויקט ולמחוק את המשאבים הספציפיים.
מחיקת הפרויקט
הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך הזה.