ایجاد پایگاه داده AlloyDB با Cloud Run Job

1. بررسی اجمالی

در این آزمایشگاه، یک پایگاه داده AlloyDB با Cloud Run Job ایجاد خواهید کرد. شما دسترسی سرویس های خصوصی و دسترسی VPC بدون سرور را برای فعال کردن اتصال بین Cloud Run Job و پایگاه داده AlloyDB با استفاده از IP خصوصی پیکربندی خواهید کرد.

آنچه خواهید آموخت

در این آزمایشگاه با نحوه انجام کارهای زیر آشنا می شوید:

  • خوشه و نمونه AlloyDB را راه اندازی کنید
  • برای ایجاد پایگاه داده AlloyDB از Cloud Run Job استفاده کنید

2. راه اندازی و الزامات

راه اندازی پروژه ابری

  1. به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. شما می توانید آن را در هر زمان به روز کنید.
  • شناسه پروژه باید در تمام پروژه‌های Google Cloud منحصربه‌فرد باشد و تغییرناپذیر باشد (پس از تنظیم نمی‌توان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید به شناسه پروژه ارجاع دهید (معمولاً به عنوان PROJECT_ID شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، می‌توانید خودتان را امتحان کنید و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند.
  • برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
  1. در مرحله بعد، برای استفاده از منابع 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 Job اجازه می دهد تا به پایگاه داده AlloyDB متصل شود.

gcloud projects add-iam-policy-binding $PROJECT_NAME \
  --member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
  --role="roles/alloydb.client"

دسترسی به سرویس های خصوصی را پیکربندی کنید

دسترسی به سرویس‌های خصوصی به‌عنوان یک اتصال همتا VPC بین شبکه VPC شما و شبکه Google Cloud VPC زیربنایی که منابع AlloyDB (خوشه‌ها و نمونه‌ها) در آن قرار دارند، پیاده‌سازی می‌شود. اتصال خصوصی منابع موجود در شبکه VPC شما را قادر می سازد تا با استفاده از آدرس های IP داخلی با منابع AlloyDB که منحصراً به آنها دسترسی دارند ارتباط برقرار کنند. منابع موجود در شبکه VPC شما برای دسترسی به منابع AlloyDB نیازی به دسترسی به اینترنت یا آدرس های IP خارجی ندارند.

برای ایجاد یک پیکربندی دسترسی به سرویس های خصوصی در یک شبکه 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 وجود دارد. یکی ایجاد یک ماشین مجازی کامپیوتری، نصب یک کلاینت psql و سپس اتصال به نمونه برای ایجاد یک پایگاه داده. در اینجا می توانید اطلاعات بیشتری در مورد این رویکرد بخوانید.

در این آزمایشگاه، با استفاده از Cloud Run Job یک پایگاه داده AlloyDB جدید ایجاد خواهید کرد.

فایل های زیر را بررسی کنید:

  • 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 Job را اجرا کنید

دسترسی VPC بدون سرور را پیکربندی کنید. این به Cloud Run Job اجازه می دهد تا با استفاده از IP داخلی/خصوصی با خوشه AlloyDB ارتباط برقرار کند. این مرحله 2 دقیقه طول می کشد.

gcloud compute networks vpc-access connectors create ${VPC_CONNECTOR} \
    --region=${REGION} \
    --range=10.8.0.0/28

مخزن رجیستری مصنوع را برای ذخیره تصاویر کانتینر ایجاد کنید.

gcloud artifacts repositories create db-job-repository \
  --repository-format=docker \
  --location=$REGION

تصویر کانتینر را در رجیستری مصنوع بسازید و منتشر کنید.

gcloud builds submit -t $REGION-docker.pkg.dev/$PROJECT_NAME/db-job-repository/db-job:latest

استقرار Cloud Run Job.

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 Job را برای ایجاد پایگاه داده test اجرا کنید.

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

گزارش های Cloud Run Job را در Cloud Console مرور کنید.

3f2269736b53f44c.png

6. تبریک!

تبریک می گویم، شما نرم افزار کد را تمام کردید!

آنچه ما پوشش داده ایم:

  • نحوه ایجاد خوشه و نمونه AlloyDB
  • نحوه ایجاد پایگاه داده AlloyDB با استفاده از Cloud Run Job

پاک کردن

برای جلوگیری از تحمیل هزینه به حساب Google Cloud خود برای منابع استفاده شده در این آموزش، یا پروژه حاوی منابع را حذف کنید یا پروژه را نگه دارید و منابع فردی را حذف کنید.

حذف پروژه

ساده ترین راه برای حذف صورتحساب، حذف پروژه ای است که برای آموزش ایجاد کرده اید.