إنشاء قاعدة بيانات AlloyDB باستخدام Cloud Run Job

1. نظرة عامة

في هذا الدرس التطبيقي، ستنشئ قاعدة بيانات AlloyDB باستخدام مهمة Cloud Run. ستضبط ميزة "الوصول إلى الخدمات الخاصة" وميزة "الوصول إلى شبكة VPC بدون خادم" لتفعيل إمكانية الاتصال بين مهمة Cloud Run وقاعدة بيانات AlloyDB باستخدام عنوان IP خاص.

المواضيع التي ستتعرّف عليها

في هذا الدرس التطبيقي، ستتعرّف على كيفية تنفيذ ما يلي:

  • إعداد مجموعة AlloyDB ومثيلها
  • نشر مهمة Cloud Run لإنشاء قاعدة بيانات AlloyDB

2. الإعداد والمتطلبات

إعداد مشروع Cloud

  1. سجِّل الدخول إلى Google Cloud Console وأنشئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.

b35bf95b8bf3d5d8.pnga99b7ace416376c4.pngbd84a6d3004737c5.png

  • اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهو عبارة عن سلسلة أحرف لا تستخدمها Google APIs. يمكنك تعديلها في أي وقت.
  • يجب أن يكون رقم تعريف المشروع فريدًا بين جميع مشاريع Google Cloud ولا يمكن تغييره (لا يمكن تعديله بعد ضبطه). تنشئ Cloud Console تلقائيًا سلسلة فريدة، ولا يهمّك عادةً ما هي. في معظم الدروس التطبيقية، عليك الرجوع إلى رقم تعريف المشروع (يتم تعريفه عادةً على أنّه PROJECT_ID). إذا لم يعجبك رقم التعريف الذي تم إنشاؤه، يمكنك إنشاء رقم تعريف عشوائي آخر. بدلاً من ذلك، يمكنك تجربة رقم تعريف خاص بك ومعرفة ما إذا كان متاحًا. لا يمكن تغييره بعد هذه الخطوة وسيظل ساريًا طوال مدة المشروع.
  • للعلم، هناك قيمة ثالثة، وهي رقم المشروع الذي تستخدمه بعض واجهات برمجة التطبيقات. يمكنك الاطّلاع على مزيد من المعلومات عن هذه القيم الثلاث في المستندات.
  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد Cloud أو واجهات برمجة التطبيقات. لن تتكبّد تكلفة كبيرة، إن وجدت، عند إكمال هذا الدرس التطبيقي. لإيقاف الموارد كي لا يتم تحصيل رسوم منك بعد هذا البرنامج التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع بأكمله. يصبح المستخدمون الجدد في Google Cloud مؤهّلين للاستفادة من برنامج "الإصدار التجريبي المجاني" بقيمة 300 دولار أمريكي.

إعداد البيئة

فعِّل Cloud Shell من خلال النقر على الرمز على يسار شريط البحث.

eb0157a992f16fa3.png

لتفعيل واجهات برمجة التطبيقات للخدمات، انسخ الأمر أدناه والصقه في الوحدة الطرفية واضغط على مفتاح 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 بين شبكة 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 تستغرق هذه الخطوة دقيقتَين تقريبًا.

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 Console

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، ثم الاتصال بالمثيل لإنشاء قاعدة بيانات. يمكنك قراءة المزيد عن هذا النهج هنا.

في هذا الدرس التطبيقي، ستنشئ قاعدة بيانات 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 بدون خادم". يسمح ذلك لمهمة Cloud Run بالتواصل مع مجموعة AlloyDB باستخدام عنوان IP داخلي أو خاص. تستغرق هذه الخطوة دقيقتَين تقريبًا.

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.

راجِع المهمة التي تم إنشاؤها job في Cloud Console.

93d8224eca8c687f.png

نفِّذ مهمة Cloud Run لإنشاء قاعدة بيانات test.

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

راجِع سجلّات مهمة Cloud Run logs في Cloud Console.

3f2269736b53f44c.png

6. تهانينا!

تهانينا، لقد أكملت الدرس التطبيقي.

المواضيع التي تناولناها:

  • كيفية إنشاء مجموعة AlloyDB ومثيلها
  • كيفية إنشاء قاعدة بيانات AlloyDB باستخدام مهمة Cloud Run

تَنظيم

لتجنُّب تحصيل رسوم من حسابك على Google Cloud مقابل الموارد المستخدَمة في هذا البرنامج التعليمي، يمكنك حذف المشروع الذي يحتوي على الموارد أو الاحتفاظ بالمشروع وحذف الموارد الفردية.

حذف المشروع

أسهل طريقة لتجنُّب تحصيل الرسوم هي حذف المشروع الذي أنشأته للبرنامج التعليمي.