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

1. نظرة عامة

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

ما ستتعلمه

في هذه الميزة الاختبارية، ستتعرّف على كيفية تنفيذ ما يلي:

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

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

إعداد مشروع على السحابة الإلكترونية

  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 بالاتصال بقاعدة بيانات 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) وشبكة 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. تستغرق هذه الخطوة حوالي 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 - installs required dependencies(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.

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

93d8224eca8c687f.png

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

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

راجِع سجلّات Cloud Run Job في Cloud Console.

3f2269736b53f44c.png

6. تهانينا!

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

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

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

تَنظيم

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

حذف المشروع

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