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

۱. مرور کلی

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

آنچه یاد خواهید گرفت

در این آزمایشگاه، شما یاد خواهید گرفت که چگونه موارد زیر را انجام دهید:

  • راه‌اندازی کلاستر و نمونه AlloyDB
  • استقرار کار Cloud Run برای ایجاد پایگاه داده AlloyDB

۲. تنظیمات و الزامات

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

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • نام پروژه ، نام نمایشی برای شرکت‌کنندگان این پروژه است. این یک رشته کاراکتری است که توسط APIهای گوگل استفاده نمی‌شود. می‌توانید آن را در هر زمانی به‌روزرسانی کنید.
  • شناسه پروژه باید در تمام پروژه‌های گوگل کلود منحصر به فرد باشد و تغییرناپذیر است (پس از تنظیم، قابل تغییر نیست). کنسول کلود به طور خودکار یک رشته منحصر به فرد تولید می‌کند؛ معمولاً برای شما مهم نیست که چیست. در اکثر آزمایشگاه‌های کد، باید شناسه پروژه را ارجاع دهید (که معمولاً با عنوان PROJECT_ID شناخته می‌شود). اگر شناسه تولید شده را دوست ندارید، می‌توانید یک شناسه تصادفی دیگر ایجاد کنید. به عنوان یک جایگزین، می‌توانید شناسه خودتان را امتحان کنید و ببینید که آیا در دسترس است یا خیر. پس از این مرحله قابل تغییر نیست و در طول پروژه باقی خواهد ماند.
  • برای اطلاع شما، یک مقدار سوم، شماره پروژه ، وجود دارد که برخی از APIها از آن استفاده می‌کنند. برای کسب اطلاعات بیشتر در مورد هر سه این مقادیر، به مستندات مراجعه کنید.
  1. در مرحله بعد، برای استفاده از منابع/API های ابری، باید پرداخت صورتحساب را در کنسول ابری فعال کنید . اجرای این آزمایشگاه کد، اگر اصلاً هزینه‌ای نداشته باشد، هزینه زیادی نخواهد داشت. برای خاموش کردن منابع به طوری که پس از این آموزش متحمل پرداخت صورتحساب نشوید، می‌توانید منابعی را که ایجاد کرده‌اید یا کل پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان ۳۰۰ دلاری هستند.

تنظیمات محیط

با کلیک روی آیکون سمت راست نوار جستجو، 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

۳. راه‌اندازی و ایجاد کلاستر 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 شما را قادر می‌سازد تا با منابع AlloyDB که منحصراً با استفاده از آدرس‌های IP داخلی به آنها دسترسی دارند، ارتباط برقرار کنند. منابع موجود در شبکه VPC شما برای دسترسی به منابع AlloyDB نیازی به دسترسی به اینترنت یا آدرس‌های IP خارجی ندارند.

برای ایجاد پیکربندی دسترسی به سرویس‌های خصوصی در یک شبکه 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 و شبکه اصلی Google Cloud VPC ایجاد کنید. این مرحله حدود ۲ دقیقه طول می‌کشد.

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 ایجاد کنید. این مرحله حدود ۱۰ دقیقه طول می‌کشد.

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"

۴. کد کار Cloud Run را بررسی کنید

روش‌های متعددی برای ایجاد یک پایگاه داده AlloyDB وجود دارد. یکی از آنها ایجاد یک ماشین مجازی Compute Engine، نصب یک کلاینت 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

۵. اجرای کار ابری را مستقر کنید

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

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

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

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

استقرار کار اجرای ابری.

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 استفاده خواهد کرد.

کار ایجاد شده را در کنسول ابری بررسی کنید.

93d8224eca8c687f.png

برای ایجاد پایگاه داده test ، دستور Cloud Run Job را اجرا کنید.

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

گزارش‌های اجرای وظایف در Cloud را در کنسول Cloud بررسی کنید.

3f2269736b53f44c.png

۶. تبریک می‌گویم!

تبریک می‌گویم، شما codelab را تمام کردید!

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

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

تمیز کردن

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

حذف پروژه

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