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

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

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

מה תלמדו

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

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

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

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

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

b35bf95b8bf3d5d8.pnga99b7ace416376c4.pngbd84a6d3004737c5.png

  • שם הפרויקט הוא השם המוצג למשתתפים בפרויקט. זו מחרוזת תווים שלא נמצאת בשימוש ב-Google APIs. אפשר לעדכן את המיקום הזה בכל שלב.
  • מזהה הפרויקט חייב להיות ייחודי לכל הפרויקטים ב-Google Cloud, והוא קבוע (אי אפשר לשנות אותו אחרי שהוא מוגדר). מסוף Cloud יוצר באופן אוטומטי מחרוזת ייחודית, ובדרך כלל לא צריך להתייחס אליה. ברוב ה-Codelabs, תצטרכו להפנות למזהה הפרויקט (בדרך כלל הוא מסומן כ-PROJECT_ID). אם אתם לא אוהבים את המזהה שנוצר, אתם יכולים ליצור מזהה אקראי אחר. אפשר גם לנסות שם משתמש משלכם ולבדוק אם הוא זמין. אי אפשר לשנות את ההגדרה הזו אחרי השלב הזה, והיא תישאר כזו למשך הפרויקט.
  • לידיעתכם, יש ערך שלישי, מספר פרויקט, שחלק מממשקי ה-API משתמשים בו. מידע נוסף על שלושת הערכים האלה מופיע במאמרי העזרה.
  1. בשלב הבא, תצטרכו להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבי Cloud או בממשקי API של Cloud. העלות של התרגול הזה לא אמורה להיות גבוהה, ואולי לא תהיה עלות בכלל. כדי להשבית את המשאבים ולא לחייב אתכם אחרי שתסיימו את המדריך הזה, תוכלו למחוק את המשאבים שיצרתם או למחוק את כל הפרויקט. משתמשים חדשים ב-Google Cloud זכאים לתוכנית תקופת ניסיון בחינם בשווי 300$.

הגדרת הסביבה

לוחצים על הסמל משמאל לסרגל החיפוש כדי להפעיל את 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"

הגדרת גישה לשירותים פרטיים

גישה לשירותים פרטיים מיושמת כחיבור VPC Peering בין רשת ה-VPC שלכם לבין רשת ה-VPC הבסיסית של Google Cloud שבה נמצאים משאבי AlloyDB (אשכולות ומופעים). החיבור הפרטי מאפשר למשאבים ברשת ה-VPC לתקשר עם משאבי AlloyDB שהם ניגשים אליהם באופן בלעדי באמצעות כתובות IP פנימיות. למשאבים ברשת ה-VPC לא נדרשת גישה לאינטרנט או כתובות IP חיצוניות כדי להגיע למשאבי AlloyDB.

כדי ליצור הגדרת גישה לשירותים פרטיים ברשת VPC שנמצאת באותו פרויקט בענן כמו 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 לבין רשת ה-VPC הבסיסית של Google Cloud. השלב הזה נמשך כ-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.

כדאי לבדוק את הקבצים הבאים:

  • ‫Dockerfile – התקנת יחסי תלות נדרשים(postgresql-client)
  • script.sh – משתמש בכלי שורת פקודה כדי ליצור מסד נתונים

ב-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 תשתמש במחבר VPC כדי להגיע לכתובת ה-IP הפרטית של AlloyDB.

בודקים את העבודה שנוצרה במסוף Cloud.

93d8224eca8c687f.png

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

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

בודקים את היומנים של Cloud Run Job ב-Cloud Console.

3f2269736b53f44c.png

6. מעולה!

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

הנושאים שנדון בהם:

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

הסרת המשאבים

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

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

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