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

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

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

מה תלמדו

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

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

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

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

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.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 Job.

הקבצים מפורטים בהמשך:

  • קובץ 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 Job כדי לתקשר עם אשכול 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 Job

הסרת המשאבים

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

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

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