Google Cloud: المشاريع والحوسبة والشبكات والحاويات باستخدام gcloud
خروج

الدرس 1 من 9 · الأساسيات

Google Cloud: المشاريع، المؤسسة، الفوترة، الواجهة وgcloud

40 د Debian 12

الهدف

أن تفهم كيف يرتّب Google Cloud الموارد (المؤسسة، المجلدات، المشاريع)، وكيف تتدفّق الأموال (حساب الفوترة)، وأن تختار منطقة (region) لعميل مغربي، ثم تدير كل ذلك باستعمال الواجهة (console) وCloud Shell وgcloud.

المفاهيم العامة للسحابة (نماذج الخدمة، المسؤولية المشتركة، المرونة، التكاليف) مشروحة في مسار «Cloud» (الأساسيات). إذا كنت تعرف AWS أو Azure، فالفرق الكبير في Google Cloud هو المكانة المركزية لـالمشروع (project).

أهم النقاط

  • المشروع هو الوحدة الأساسية: كل مورد (VM، bucket، خدمة Cloud Run) ينتمي إلى مشروع واحد. للمشروع معرّف (ID) فريد في العالم (boutique-atlas-prod)، واسم معروض، ورقم.
  • فوقه: المجلدات (folders) والمؤسسة (organization) (المرتبطة بنطاق Google Workspace أو Cloud Identity، مثلًا boutiqueatlas.ma). صلاحيات IAM وقواعد الإدارة تُورَث نحو الأسفل.
  • حساب الفوترة (billing account) يدفع لمشروع واحد أو أكثر. المشروع الذي لا حساب فوترة له لا يستطيع استعمال إلا الخدمات المجانية.
  • قبل استعمال خدمة، يجب تفعيل واجهتها البرمجية (API) في المشروع (gcloud services enable).
  • لا توجد منطقة Google Cloud في المغرب حتى الآن: الأقرب هي europe-southwest1 (مدريد) وeurope-west9 (باريس).

1. تسلسل الموارد

في المخطّط التالي: المؤسسة، ثم مجلد «الإنتاج» (مشروع الموقع وقاعدة البيانات والتخزين، ومشروع VPC المشترك وVPN)، ثم مجلد «خارج الإنتاج»:

Organisation : boutiqueatlas.ma
├── Dossier « Production »
│   ├── Projet boutique-atlas-prod       ← site web, base, stockage
│   └── Projet reseau-partage-prod       ← VPC partagé, VPN
└── Dossier « Hors-production »
    └── Projet boutique-atlas-dev
المستوى الدور ملاحظة
المؤسسة (organization) الجذر، مرتبطة بنطاق الشركة تُنشأ مع Google Workspace أو Cloud Identity (نسخة مجانية ممكنة)
المجلد (folder) تجميع المشاريع (حسب المصلحة، حسب البيئة، حسب العميل) يمكن أن يحتوي على مجلدات أخرى
المشروع (project) حاوية الموارد وواجهات API المفعّلة والحصص المعرّف نهائي وفريد في العالم
المورد (resource) VM، bucket، موضوع Pub/Sub… ينتمي إلى مشروع واحد

بدون مؤسسة (حساب Gmail شخصي)، تكون مشاريعك «بدون مؤسسة»: هذا مقبول للتعلّم، لكن الشركة تحتاج إلى المؤسسة لتمركز الصلاحيات والقواعد والفوترة.

المعرّف والاسم والرقم

ID du projet     : boutique-atlas-prod     (choisi par vous, 6 à 30 caractères, définitif)
Nom du projet    : Boutique Atlas Prod     (libre, modifiable)
Numéro du projet : 412345678901            (attribué par Google)

(المعرّف: تختاره أنت، من 6 إلى 30 حرفًا، ونهائي؛ الاسم: حر وقابل للتعديل؛ الرقم: تمنحه Google.)

يظهر المعرّف في عناوين URL، وفي أسماء حسابات الخدمة (…@boutique-atlas-prod.iam.gserviceaccount.com)، وفي الأوامر. اختره بعناية: لا يمكن تغيير اسمه.

2. الفوترة

  • يحمل حساب الفوترة Cloud وسيلة الأداء (بطاقة بنكية دولية، أو فوترة شهرية للشركات المؤهّلة). معرّفه من الشكل 01A2B3-C4D5E6-F7A8B9.
  • يمكن لحساب فوترة واحد أن يدفع لـعدة مشاريع؛ والمشروع مرتبط بحساب واحد فقط في الوقت نفسه.
  • تستفيد الحسابات الجديدة عمومًا من رصيد تجريبي ومن مستوى مجاني (free tier) (آلة صغيرة e2-micro في بعض المناطق الأمريكية، وبضعة جيجابايت من التخزين…). الشروط تتغيّر: تحقّق منها في الصفحة الرسمية.
  • أنشئ ميزانيات مع تنبيهات منذ اليوم الأول (الدرس 3.1).
gcloud billing accounts list
gcloud billing projects link boutique-atlas-prod --billing-account=01A2B3-C4D5E6-F7A8B9
gcloud billing projects describe boutique-atlas-prod   # billingEnabled: true

3. المناطق والنطاقات

تحتوي المنطقة (europe-southwest1، مدريد) على عدة نطاقات (zones) (europe-southwest1-a، -b، -c). بعض الموارد نطاقية (zonal) (VM، الأقراص الدائمة النطاقية)، وأخرى إقليمية (regional) (الشبكات الفرعية، Cloud Run، الأقراص الإقليمية)، وأخرى عالمية (global) (شبكات VPC، الصور، قواعد الجدار الناري firewall).

المعيار ما يجب التحقق منه
زمن الاستجابة نحو المغرب مدريد وباريس هما الأقرب
توفّر الخدمات وأنواع الآلات ليست كلها متوفرة في كل مكان
السعر يختلف حسب المنطقة
المتطلبات القانونية القانون 09-08 حول المعطيات الشخصية؛ رأي CNDP لبعض عمليات النقل
البصمة الكربونية تشير Google إلى المناطق ذات الانبعاثات المنخفضة
gcloud compute regions list
gcloud compute zones list --filter="region:europe-southwest1"

4. الواجهة وCloud Shell

تتيح الواجهة (console.cloud.google.com) القيام بكل شيء بالنقر. معالم مفيدة:

  • محدِّد المشروع في الأعلى: تحقّق منه دائمًا قبل أي إجراء؛
  • API et services: تفعيل API؛
  • IAM et administration: الصلاحيات، حسابات الخدمة، الحصص؛
  • Facturation: التقارير، الميزانيات؛
  • أيقونة Activer Cloud Shell تفتح طرفية.

Cloud Shell آلة افتراضية Debian صغيرة ومجانية، مصادَق عليها مسبقًا، فيها gcloud وkubectl وterraform وdocker وgit ومحرّر شيفرة. ومجلدك الشخصي (5 جيجابايت) يُحتفظ به بين الجلسات. إنها الأداة المثالية لمتابعة هذا المسار من أي حاسوب.

5. gcloud على حاسوبك

يحتوي Google Cloud CLI على gcloud وgsutil (أداة التخزين القديمة، عُوّضت بـ gcloud storage) وbq (BigQuery).

gcloud init                       # مساعد: الاتصال، المشروع، المنطقة الافتراضية
gcloud auth login                 # تسجيل الدخول (يفتح المتصفح)
gcloud auth list                  # الحسابات المتصلة
gcloud config list                # الإعداد النشط
gcloud projects list
gcloud components update          # التحديث (في حالة التثبيت من أرشيف)

القيم الافتراضية

gcloud config set project boutique-atlas-prod
gcloud config set compute/region europe-southwest1
gcloud config set compute/zone europe-southwest1-a
gcloud config get-value project
gcloud config unset compute/zone

عدة إعدادات (configurations)

مستشار في شركة خدمات رقمية (ESN) بالرباط يعمل لثلاثة عملاء: إعداد مسمّى لكل عميل يجنّب الأخطاء.

gcloud config configurations create client-boutique
gcloud config set account consultant@esn.ma
gcloud config set project boutique-atlas-prod
gcloud config configurations list
gcloud config configurations activate client-ecole
gcloud compute instances list --project=autre-projet   # فرض مشروع لأمر واحد فقط

شكل الأوامر

gcloud [GROUPE ...] RESSOURCE  ACTION  [NOM]  --options
gcloud compute      instances  create  web-01 --machine-type=e2-medium
gcloud storage      buckets    list
gcloud run          services   describe site

(البنية: gcloud ثم المجموعة ثم المورد ثم الإجراء ثم الاسم ثم الخيارات.) يعرض gcloud help compute instances create أو --help المساعدة؛ ويتيح gcloud beta … وgcloud alpha … الوصول إلى الميزات التجريبية.

الصيغ والمرشّحات

gcloud compute instances list --format="table(name, zone.basename(), status)"
gcloud compute instances list --filter="status=RUNNING AND labels.env=prod"
gcloud projects describe boutique-atlas-prod --format="value(projectNumber)"   # قيمة خام
gcloud compute instances list --format=json | jq '.[].name'

--format=value(...) هو مقابل --output tsv في Azure: مثالي لمتغير shell.

6. واجهات API والحصص

كل خدمة هي API يجب تفعيلها لكل مشروع. الخطأ «API has not been used in project … or it is disabled» يعني ببساطة أنه يجب تفعيلها.

gcloud services list --enabled
gcloud services enable compute.googleapis.com run.googleapis.com
gcloud services disable bigquery.googleapis.com

الحصص (quotas) (عدد vCPU في كل منطقة، عناوين IP…) تحمي فاتورتك والمنصة. يُقدَّم طلب الرفع من الواجهة (IAM et administration → Quotas).

7. التسميات (labels)

gcloud compute instances update web-01 --update-labels=env=prod,projet=boutique

التسميات (labels) (أحرف صغيرة، أرقام، _ و-) تظهر في تصدير الفوترة: تتيح الإجابة عن سؤال «كم يكلّف المتجر في الإنتاج؟». لا تخلط بينها وبين وسوم الشبكة (network tags) (الدرس 1.4) ولا وسوم (tags) الموارد المُدارة على مستوى المؤسسة.

8. إغلاق مشروع

gcloud projects delete boutique-atlas-dev

يدخل المشروع في حالة إيقاف: تتوقف كل موارده عن العمل وعن التكلفة، ويُحذف نهائيًا بعد 30 يومًا. خلال هذه المدة، يستعيده gcloud projects undelete. حذف مشروع الاختبار هو أفضل طريقة للتأكد من أنك لم تنسَ شيئًا.

أخطاء متكررة

  • العمل في المشروع الخطأ: تحقّق من gcloud config get-value project (أو من محدِّد الواجهة) قبل كل عملية مهمة.
  • اختيار معرّف مشروع عام جدًا أو يحمل اسم عميل قد تفقده: إنه نهائي.
  • نسيان ربط الفوترة: تفشل عمليات إنشاء الـVM بخطأ في الفوترة.
  • الاعتقاد بأن المشروع المحذوف يختفي فورًا: يبقى 30 يومًا، ولا يمكن إعادة استعمال معرّفه.

التطبيق العملي (Lab)

ستكتب سكربت انطلاق مشروع الإنتاج لـ Boutique Atlas: إنشاء المشروع، ربطه بالفوترة، القيم الافتراضية (مدريد)، تفعيل واجهات API، ثم ملفًا صغيرًا يلخّص تسلسل الموارد. لا يتوفّر التمرين على شبكة ولا على gcloud: السكربت هو الذي كنت ستشغّله في Cloud Shell.

cat /root/gcp/01-projet.sh
sh -n /root/gcp/01-projet.sh     # التحقق من الصياغة دون تنفيذ

اختبار قصير

  1. ما الوحدة الأساسية التي تحتوي على الموارد في Google Cloud؟
  2. هل يمكن تغيير معرّف مشروع؟
  3. ما الذي يجب فعله قبل استعمال Compute Engine في مشروع جديد؟
  4. أي خيار في gcloud يعطي قيمة خامًا، دون جدول؟
  5. ماذا يصير مشروع محذوف خلال الأيام الثلاثين الأولى؟
الأجوبة
  1. المشروع.
  2. لا: المعرّف نهائي (وحده الاسم المعروض يمكن تعديله).
  3. ربطه بـحساب فوترة وتفعيل الـAPI compute.googleapis.com.
  4. --format="value(champ)".
  5. يكون موقوفًا (لا خدمة ولا تكاليف) ويمكن استعادته بـ gcloud projects undelete؛ ثم يُحذف نهائيًا.

مصادر مرجعية: وثائق Google Cloud (CC BY 4.0) — Compute Engine وgcloud وIAM والمواقع. نص أصلي من MasterLinux.

تمارين تطبيقية

تُنجَز على Debian 12

الطرفية عبر الإنترنت قادمة قريبًا. في انتظار ذلك، أنجِز هذه المهام على جهازك بنظام لينكس أو على آلة افتراضية أو WSL.

  1. أنشئ /root/gcp/01-projet.sh. السطر الأول #!/bin/sh؛ والسطر الثاني: إنشاء المشروع ذي المعرّف boutique-atlas-prod، مع الاسم المعروض "Boutique Atlas Prod".
    عرض تلميحgcloud projects create ID --name="Nom affiché"
    عرض الحل
    mkdir -p /root/gcp && printf "%s\n" "#!/bin/sh" "gcloud projects create boutique-atlas-prod --name=\"Boutique Atlas Prod\"" > /root/gcp/01-projet.sh

    التحقق : f=/root/gcp/01-projet.sh; [ "$(head -n1 $f)" = "#!/bin/sh" ] && grep -E "^gcloud projects create boutique-atlas-prod" $f | grep -Eq -- "--name[= ]\"?Boutique Atlas Prod\"?"

  2. أضف ربط المشروع بحساب الفوترة 01A2B3-C4D5E6-F7A8B9.
    عرض تلميحgcloud billing projects link PROJET --billing-account=…
    عرض الحل
    echo "gcloud billing projects link boutique-atlas-prod --billing-account=01A2B3-C4D5E6-F7A8B9" >> /root/gcp/01-projet.sh

    التحقق : grep -E "^gcloud billing projects link boutique-atlas-prod" /root/gcp/01-projet.sh | grep -Eq -- "--billing-account[= ]01A2B3-C4D5E6-F7A8B9"

  3. أضف ثلاثة أسطر gcloud config set: المشروع الافتراضي boutique-atlas-prod، والمنطقة europe-southwest1 (مدريد)، والنطاق europe-southwest1-a.
    عرض تلميحgcloud config set project … ; gcloud config set compute/region … ; gcloud config set compute/zone …
    عرض الحل
    printf "%s\n" "gcloud config set project boutique-atlas-prod" "gcloud config set compute/region europe-southwest1" "gcloud config set compute/zone europe-southwest1-a" >> /root/gcp/01-projet.sh

    التحقق : f=/root/gcp/01-projet.sh; grep -Eq "^gcloud config set (core/)?project boutique-atlas-prod$" $f && grep -Eq "^gcloud config set compute/region europe-southwest1$" $f && grep -Eq "^gcloud config set compute/zone europe-southwest1-a$" $f

  4. فعّل واجهات API الخاصة بـ Compute Engine وCloud Run (compute.googleapis.com وrun.googleapis.com) في أمر gcloud services enable واحد.
    عرض تلميحgcloud services enable API1 API2
    عرض الحل
    echo "gcloud services enable compute.googleapis.com run.googleapis.com" >> /root/gcp/01-projet.sh

    التحقق : l=$(grep -E "^gcloud services enable" /root/gcp/01-projet.sh) && echo "$l" | grep -q "compute.googleapis.com" && echo "$l" | grep -q "run.googleapis.com"

  5. اكتب /root/gcp/hierarchie.txt: مستويات تسلسل الموارد، من الأعلى إلى الأسفل، مستوى في كل سطر، بهذه الكلمات بالضبط: organisation وdossier وprojet وressource.
    عرض تلميحالمؤسسة (organisation) تحتوي على مجلدات (dossier)، وهذه تحتوي على مشاريع (projet).
    عرض الحل
    printf "%s\n" organisation dossier projet ressource > /root/gcp/hierarchie.txt

    التحقق : printf "organisation\ndossier\nprojet\nressource\n" | cmp -s - /root/gcp/hierarchie.txt

المراجع الرسمية المعتمدة: Présentation de Compute Engine — https://docs.cloud.google.com/compute/docs/overview ; Utiliser gcloud compute — https://docs.cloud.google.com/compute/docs/gcloud-compute ; Noms de ressources complets (IAM) — https://docs.cloud.google.com/iam/docs/full-resource-names ; Emplacements des buckets Cloud Storage — https://docs.cloud.google.com/storage/docs/locations. نص أصلي من MasterLinux.