יצירת מסד נתונים של AlloyDB באמצעות משימה ב-Cloud Run

1. סקירה כללית

בשיעור ה-Lab הזה תצרו מסד נתונים AlloyDB עם המשימה ב-Cloud Run. מגדירים גישה לשירותים פרטיים וגישה ל-VPC ללא שרת כדי לאפשר קישוריות בין Cloud Run Job למסד הנתונים AlloyDB באמצעות כתובת IP פרטית.

מה תלמדו

בשיעור Lab זה תלמדו איך:

  • הגדרת אשכול AlloyDB והמכונה
  • פריסת משימה ב-Cloud Run ליצירת מסד נתונים של AlloyDB

2. הגדרה ודרישות

הגדרת פרויקט ב-Cloud

  1. נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. אם אין לכם עדיין חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Project name הוא השם המוצג של המשתתפים בפרויקט. זו מחרוזת תווים שלא משמשת את Google APIs. אפשר לעדכן אותו בכל שלב.
  • Project ID חייב להיות ייחודי בכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו (אי אפשר לשנות אותו אחרי שמגדירים אותו). מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי; בדרך כלל לא מעניין אותך מה זה. ברוב ה-Codelabs תצטרכו להפנות אל מזהה הפרויקט (בדרך כלל הוא מזוהה כ-PROJECT_ID). אם המזהה שנוצר לא מוצא חן בעיניך, יש לך אפשרות ליצור מזהה אקראי אחר. לחלופין, אפשר לנסות תבנית משלך ולבדוק אם היא זמינה. לא ניתן לשנות אותו אחרי השלב הזה, והוא יישאר למשך הפרויקט.
  • לידיעתך, יש ערך שלישי – Project Number (מספר פרויקט), שחלק מממשקי ה-API משתמשים בו. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי התיעוד.
  1. בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים או בממשקי API של Cloud. מעבר ב-Codelab הזה לא אמור לעלות הרבה, אם בכלל. כדי להשבית את המשאבים ולא לצבור חיובים מעבר למדריך הזה, אתם יכולים למחוק את המשאבים שיצרתם או למחוק את הפרויקט כולו. משתמשים חדשים ב-Google Cloud זכאים להצטרף לתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.

הגדרת סביבה

לוחצים על הסמל שמופיע מימין לסרגל החיפוש כדי להפעיל את Cloud Shell.

eb0157a992f16fa3.png

כדי להפעיל את ממשקי ה-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.

568d273c0e0d6408.png

שמירת כתובת ה-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.

93d8224eca8c687f.png

לבצע משימה ב-Cloud Run כדי ליצור מסד נתונים של test.

gcloud beta run jobs execute db-job --region $REGION

מעיינים ביומני המשימות של Cloud Run במסוף Cloud.

3f2269736b53f44c.png

6. מעולה!

כל הכבוד, סיימת את ה-Codelab!

נושאים שטיפלנו בהם:

  • איך יוצרים אשכול AlloyDB ומכונה
  • איך ליצור מסד נתונים של AlloyDB באמצעות משימה ב-Cloud Run

הסרת המשאבים

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

מחיקת הפרויקט

הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך הזה.