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

1. نظرة عامة

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

ما سوف تتعلمه

ستتعلم في هذا التمرين المعملي كيفية القيام بما يلي:

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

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

إعداد مشروع Cloud

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.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 Job بالاتصال بقاعدة بيانات 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 موجودة في المشروع على Google 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 وشبكة 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 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- نشر مهمة تشغيل السحابة الإلكترونية

اضبط الوصول إلى سحابة VPC بدون خادم. ويتيح ذلك لخدمة Cloud Run Job التواصل مع مجموعة 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

نشر مهمة تشغيل السحابة الإلكترونية

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 - ستستخدم "مهمة تشغيل السحابة الإلكترونية" موصِّل VPC للوصول إلى عنوان IP الخاص على AlloyDB.

تم إنشاء المهمة في Cloud Console.

93d8224eca8c687f.png

تنفيذ مهمة تشغيل السحابة الإلكترونية لإنشاء قاعدة بيانات "test"

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

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

3f2269736b53f44c.png

6- تهانينا!

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

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

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

تَنظيم

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

حذف المشروع

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