מידע על Codelab זה
1. סקירה כללית
בשיעור ה-Lab הזה תצרו מסד נתונים AlloyDB עם המשימה ב-Cloud Run. מגדירים גישה לשירותים פרטיים וגישה ל-VPC ללא שרת כדי לאפשר קישוריות בין Cloud Run Job למסד הנתונים AlloyDB באמצעות כתובת IP פרטית.
מה תלמדו
בשיעור Lab זה תלמדו איך:
- הגדרת אשכול AlloyDB והמכונה
- פריסת משימה ב-Cloud Run ליצירת מסד נתונים של AlloyDB
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.
כדי להפעיל את ממשקי ה-API של השירות, צריך להעתיק את הפקודה שלמטה ולהדביק אותה בטרמינל וללחוץ על Enter:
gcloud services enable \
alloydb.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
run.googleapis.com \
vpcaccess.googleapis.com \
compute.googleapis.com \
servicenetworking.googleapis.com \
--quiet
הגדרה של משתני סביבה:
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)')
export DB_DATABASE=test
export DB_USER=postgres
export DB_PASSWORD=password123
export REGION=us-central1
export CLUSTER=test-cluster
export INSTANCE=test-instance
export VPC_CONNECTOR=vpcconnector
3. הגדרה ויצירה של אשכול AlloyDB
מגדירים את ההרשאות הנדרשות להגדרה. כך המשימה של Cloud Run תוכל להתחבר למסד הנתונים AlloyDB.
gcloud projects add-iam-policy-binding $PROJECT_NAME \
--member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
--role="roles/alloydb.client"
הגדרת הגישה לשירותים פרטיים
הגישה לשירותים פרטיים מוטמעת כחיבור בין רשתות שכנות (peering) של VPC בין רשת ה-VPC לבין רשת ה-VPC הבסיסית שבה נמצאים המשאבים של AlloyDB (אשכולות ומכונות). החיבור הפרטי מאפשר למשאבים ברשת ה-VPC לתקשר עם משאבי AlloyDB שאליהם הם ניגשים באופן בלעדי באמצעות כתובות IP פנימיות. המשאבים ברשת ה-VPC לא צריכים גישה לאינטרנט או כתובות IP חיצוניות כדי להגיע למשאבי AlloyDB.
כדי ליצור הגדרה של גישה לשירותים פרטיים ברשת VPC שנמצאת באותו פרויקט ב-Cloud כמו AlloyDB, מבצעים שתי פעולות:
יצירת טווח כתובות IP שיוקצה ברשת ה-VPC.
gcloud compute addresses create google-managed-services-default \
--global \
--purpose=VPC_PEERING \
--prefix-length=20 \
--network=projects/$PROJECT_ID/global/networks/default
יצירת חיבור פרטי בין רשת ה-VPC לרשת Google Cloud VPC הבסיסית. השלב הזה נמשך כ-2 דקות.
gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=google-managed-services-default \
--network=default \
--project=$PROJECT_ID
יוצרים אשכול AlloyDB.
gcloud beta alloydb clusters create $CLUSTER \
--password=$DB_PASSWORD \
--network=default \
--region=$REGION \
--project=$PROJECT_NAME
gcloud beta alloydb clusters describe $CLUSTER --region=$REGION
יוצרים מכונה של AlloyDB. השלב הזה נמשך כ-10 דקות.
gcloud beta alloydb instances create $INSTANCE \
--cluster=$CLUSTER \
--region=$REGION \
--instance-type=PRIMARY \
--cpu-count=2 \
--project=$PROJECT_NAME
gcloud beta alloydb instances describe $INSTANCE \
--cluster=$CLUSTER \
--region $REGION
לבדוק את האשכול שנוצר במסוף Cloud.
שמירת כתובת ה-IP של מסד הנתונים במשתנה."
export DB_HOST=$(gcloud beta alloydb instances describe $INSTANCE \
--cluster=$CLUSTER \
--region=$REGION \
--format=json | jq \
--raw-output ".ipAddress")
echo "DB_HOST=$DB_HOST"
4. התנסות בקוד המשימה של Cloud Run
יש כמה דרכים ליצור מסד נתונים AlloyDB. אחת מהאפשרויות היא ליצור מכונה וירטואלית ב-Compute Engine, להתקין לקוח psql ולהתחבר למכונה כדי ליצור מסד נתונים. מידע נוסף על הגישה הזו זמין כאן.
בשיעור ה-Lab הזה תיצרו מסד נתונים חדש מסוג AlloyDB באמצעות Cloud Run Job.
עיין בקבצים הבאים:
- Dockerfile – יחסי תלות נדרשים(postgresql-client)
- script.sh – שימוש בכלי שורת הפקודה (CLI) ליצירת מסד נתונים
ב-Cloud Shell, יוצרים תיקייה חדשה:
mkdir ~/alloy-db-cloud-run-job
cd ~/alloy-db-cloud-run-job
יצירת קובץ חדש Dockerfile
:
cat > Dockerfile <<EOF
FROM ubuntu:latest
RUN apt-get update && apt-get install -y postgresql-client && apt-get clean
COPY script.sh /
RUN chmod +x /script.sh
CMD ["/script.sh"]
ENTRYPOINT ["/bin/bash"]
EOF
יצירת קובץ חדש script.sh
עם התוכן שלמטה:
echo "Connecting to $DB_HOST"
createdb -h $DB_HOST -p 5432 $PGDB
echo "Created $PGDB database"
psql -h $DB_HOST -l
שינוי ההרשאה ב-script.sh:
chmod +x script.sh
5. פריסת משימה ב-Cloud Run
הגדרת גישה ל-VPC ללא שרת (serverless). ההגדרה הזו מאפשרת למשימת Cloud Run לתקשר עם אשכול AlloyDB באמצעות כתובת IP פנימית/פרטית. השלב הזה נמשך כ-2 דקות.
gcloud compute networks vpc-access connectors create ${VPC_CONNECTOR} \
--region=${REGION} \
--range=10.8.0.0/28
יצירת מאגר של Artifact Registry לאחסון קובצי אימג' של קונטיינרים.
gcloud artifacts repositories create db-job-repository \
--repository-format=docker \
--location=$REGION
פיתוח ופרסום של קובץ אימג' בקונטיינר ב-Artifact Registry.
gcloud builds submit -t $REGION-docker.pkg.dev/$PROJECT_NAME/db-job-repository/db-job:latest
פריסת משימה ב-Cloud Run.
gcloud beta run jobs create db-job \
--image=$REGION-docker.pkg.dev/$PROJECT_NAME/db-job-repository/db-job:latest \
--set-env-vars DB_HOST=$DB_HOST \
--set-env-vars PGUSER=$DB_USER \
--set-env-vars PGPASSWORD=$DB_PASSWORD \
--set-env-vars PGDB=$DB_DATABASE \
--vpc-connector $VPC_CONNECTOR \
--region $REGION
בודקים את הסימונים ששימשו ליצירת המשימה:
--vpc-connector
– Cloud Run Job ישתמש במחבר VPC כדי להגיע לכתובת IP פרטית של AlloyDB.
בדיקת המשימה שנוצרה במסוף Cloud.
לבצע משימה ב-Cloud Run כדי ליצור מסד נתונים של test
.
gcloud beta run jobs execute db-job --region $REGION
מעיינים ביומני המשימות של Cloud Run במסוף Cloud.
6. מעולה!
כל הכבוד, סיימת את ה-Codelab!
נושאים שטיפלנו בהם:
- איך יוצרים אשכול AlloyDB ומכונה
- איך ליצור מסד נתונים של AlloyDB באמצעות משימה ב-Cloud Run
הסרת המשאבים
כדי להימנע מצבירת חיובים בחשבון Google Cloud על המשאבים שנעשה בהם שימוש במדריך הזה, צריך למחוק את הפרויקט שמכיל את המשאבים או לשמור את הפרויקט ולמחוק את המשאבים הספציפיים.
מחיקת הפרויקט
הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך הזה.