تشغيل خدمات Kubernetes باستخدام أحداث Eventarc

1. مقدمة

cb762f29e9183a3f.png

تسهّل Eventarc ربط خدمات مختلفة (Cloud Run وKubernetes وWorkflows) بأحداث من مجموعة متنوعة من المصادر. يتيح لك ذلك إنشاء بنى مستندة إلى الأحداث تكون فيها الخدمات المصغّرة مرتبطة بشكل فضفاض ومتوزّعة. وتتولى هذه الخدمة أيضًا نقل الأحداث وتسليمها وتأمينها وتفويضها ومعالجة الأخطاء، ما يعزّز سرعة استجابة المطوّرين ومرونة التطبيقات. اطّلِع على بدء Cloud Run باستخدام أحداث من دورة تدريبية حول Eventarc للحصول على مقدمة عن Eventarc.

في هذا الدليل التعليمي حول الرموز البرمجية، ستستخدم Eventarc لقراءة الأحداث من Pub/Sub وCloud Storage وCloud Audit Logs ونقلها إلى خدمة Kubernetes التي تعمل على Google Kubernetes Engine (GKE).

المُعطيات

  • أنشئ مجموعة GKE.
  • أنشئ خدمة GKE كمصدر أحداث.
  • أنشئ عبارة تشغيل Pub/Sub.
  • إنشاء مشغِّل في Cloud Storage
  • أنشئ مشغِّلًا لـ "سجلّات تدقيق Cloud".

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

إعداد البيئة حسب السرعة التي تناسبك

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

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

بدء Cloud Shell

على الرغم من أنّه يمكن تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الإصدار التجريبي من "مختبر رموز Google" Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.

من Google Cloud Console، انقر على رمز Cloud Shell في شريط الأدوات أعلى يسار الصفحة:

55efc1aaa7a4d3ad.png

من المفترض ألا تستغرق عملية توفير البيئة والاتصال بها سوى بضع دقائق. عند الانتهاء، من المفترض أن يظهر لك ما يلي:

7ffe5cbb04455448.png

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. ويقدّم هذا الدليل دليلاً منزليًا دائمًا بسعة 5 غيغابايت، ويتم تشغيله على Google Cloud، ما يؤدي إلى تحسين أداء الشبكة والمصادقة بشكل كبير. يمكنك تنفيذ جميع أعمالك في هذا الدليل التعليمي للترميز داخل متصفّح. لست بحاجة إلى تثبيت أي تطبيق.

قبل البدء

في Cloud Shell، تأكَّد من إعداد رقم تعريف مشروعك:

PROJECT_ID=your-project-id
gcloud config set project $PROJECT_ID

3- إنشاء مجموعة GKE

أولاً، فعِّل الخدمات المطلوبة لخدمة GKE:

gcloud services enable container.googleapis.com

أنشئ مجموعة GKE في Autopilot:

CLUSTER_NAME=eventarc-cluster
REGION=us-central1

gcloud container clusters create-auto $CLUSTER_NAME --region $REGION

تأكَّد من اكتمال عملية إنشاء المجموعة قبل الانتقال إلى الخطوة التالية.

4. نشر خدمة GKE

قبل نشر خدمة، احصل على بيانات اعتماد المصادقة للتفاعل مع المجموعة باستخدام kubectl:

gcloud container clusters get-credentials $CLUSTER_NAME \
    --region $REGION

بعد ذلك، يمكنك نشر حاوية hello في Cloud Run كنشر Kubernetes على GKE. تسجِّل هذه الخدمة طلبات HTTP وأحداث CloudEvents التي تم استلامها:

SERVICE_NAME=hello-gke

kubectl create deployment $SERVICE_NAME \
    --image=gcr.io/cloudrun/hello

اعرض عملية النشر كخدمة Kubernetes داخلية. يؤدي ذلك إلى إنشاء خدمة تتضمّن عنوان IP ثابتًا يمكن الوصول إليه داخل المجموعة:

kubectl expose deployment $SERVICE_NAME \
  --type ClusterIP --port 80 --target-port 8080

قبل الانتقال إلى الخطوة التالية، تأكَّد من تشغيل الحِزمة:

kubectl get pods

NAME                        READY   STATUS
hello-gke-df6469d4b-5vv22   1/1     Running

يمكنك أيضًا الاطّلاع على الخدمة:

kubectl get svc

NAME         TYPE           CLUSTER-IP    EXTERNAL-IP
hello-gke    LoadBalancer   10.51.1.26    <none>

5- إعداد Eventarc

في هذه الخطوة، ستنفِّذ خطوات لإعداد Eventarc وبدء وجهات Eventarc في GKE.

أولاً، فعِّل الخدمات المطلوبة لوجهتَي Eventarc وEventarc على GKE:

gcloud services enable eventarc.googleapis.com \
  cloudresourcemanager.googleapis.com

بعد ذلك، فعِّل Eventarc لإدارة مجموعات GKE:

gcloud eventarc gke-destinations init

تنشئ Eventarc مجموعة وحدات منفصلة لتوجيه الأحداث لكل عامل تشغيل يستهدف خدمة GKE، وتتطلّب أذونات صريحة لإجراء تغييرات على المجموعة. ويتم ذلك من خلال منح أذونات لحساب خدمة خاص لإدارة الموارد في المجموعة. يجب تنفيذ ذلك مرة واحدة لكل مشروع على Google Cloud.

6. اكتشاف الأحداث

قبل إنشاء عوامل التفعيل، يمكنك التعرّف على مصادر الأحداث وأنواع الأحداث التي يمكن أن تنشئها وكيفية ضبط عوامل التفعيل لاستخدامها.

يمكنك الاطّلاع على صفحة المستندات حول الأحداث المتوافقة مع Eventarc.يمكنك أيضًا استكشاف الأحداث باستخدام gcloud.

للاطّلاع على قائمة الأنواع المختلفة من الأحداث:

gcloud beta eventarc attributes types list

NAME                                           DESCRIPTION
google.cloud.audit.log.v1.written              Cloud Audit Log written
google.cloud.pubsub.topic.v1.messagePublished  Cloud Pub/Sub message published
google.cloud.storage.object.v1.archived         Cloud Storage: Sent when a live version of an (object versioned) object is archived or deleted.
google.cloud.storage.object.v1.deleted          Cloud Storage: Sent when an object has been permanently deleted.
google.cloud.storage.object.v1.finalized        Cloud Storage: Sent when a new object (or a new generation of an existing object).
google.cloud.storage.object.v1.metadataUpdated  Cloud Storage: Sent when the metadata of an existing object changes.

للحصول على مزيد من المعلومات عن كل نوع من أنواع الأحداث:

gcloud beta eventarc attributes types describe google.cloud.audit.log.v1.written

attributes: type,serviceName,methodName,resourceName
description: 'Cloud Audit Log: Sent when a log is written.'
name: google.cloud.audit.log.v1.written

للاطّلاع على قائمة الخدمات التي تُصدِر نوع حدث معيّنًا:

gcloud beta eventarc attributes service-names list --type=google.cloud.audit.log.v1.written

SERVICE_NAME                                DISPLAY_NAME
accessapproval.googleapis.com               Access Approval
accesscontextmanager.googleapis.com         Access Context Manager
admin.googleapis.com                        Google Workspace Admin
aiplatform.googleapis.com                   AI Platform (under Vertex AI)
apigee.googleapis.com                       Apigee
apigeeconnect.googleapis.com                Apigee Connect
...
workflows.googleapis.com                    Workflows

للاطّلاع على قائمة بأسماء الطرق (الأحداث الفرعية) التي يمكن لكل خدمة بثّها:

gcloud beta eventarc attributes method-names list --type=google.cloud.audit.log.v1.written --service-name=workflows.googleapis.com

METHOD_NAME
google.cloud.workflows.v1.Workflows.CreateWorkflow
google.cloud.workflows.v1.Workflows.DeleteWorkflow
google.cloud.workflows.v1.Workflows.GetWorkflow
google.cloud.workflows.v1.Workflows.ListWorkflows
google.cloud.workflows.v1.Workflows.UpdateWorkflow
google.cloud.workflows.v1beta.Workflows.CreateWorkflow
google.cloud.workflows.v1beta.Workflows.DeleteWorkflow
google.cloud.workflows.v1beta.Workflows.GetWorkflow
google.cloud.workflows.v1beta.Workflows.ListWorkflows
google.cloud.workflows.v1beta.Workflows.UpdateWorkflow

7. إنشاء مشغِّل Pub/Sub

وإحدى طرق تلقّي الأحداث هي من خلال Pub/Sub. يمكن لأي تطبيق نشر الرسائل إلى Pub/Sub ويمكن تسليم هذه الرسائل إلى الخدمات من خلال Eventarc.

الإعداد

قبل إنشاء أيّ عوامل تشغيل، تحتاج إلى حساب خدمة لاستخدامه في عوامل التشغيل.

لإنشاء حساب خدمة:

SERVICE_ACCOUNT=eventarc-gke-trigger-sa

gcloud iam service-accounts create $SERVICE_ACCOUNT

يجب منح حساب الخدمة الأدوار التالية للعوامل المشغِّلة التي تتضمّن وجهات GKE:

  • roles/pubsub.subscriber
  • roles/monitoring.metricWriter
  • roles/eventarc.eventReceiver (لعوامل تشغيل AuditLog فقط. ستتم إضافته في خطوة لاحقة).

امنح الأدوار التالية:

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com \
  --role roles/pubsub.subscriber

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com \
  --role roles/monitoring.metricWriter

إنشاء

أنشئ عامل تشغيل لتوجيه رسائل Pub/Sub إلى خدمتك:

TRIGGER_NAME=trigger-pubsub-gke

gcloud eventarc triggers create $TRIGGER_NAME \
  --destination-gke-cluster=$CLUSTER_NAME \
  --destination-gke-location=$REGION \
  --destination-gke-namespace=default \
  --destination-gke-service=$SERVICE_NAME \
  --destination-gke-path=/ \
  --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
  --location=$REGION \
  --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com

الاختبار

يمكنك التحقّق من إنشاء عبارة التشغيل من خلال إدراج جميع عبارات التشغيل:

gcloud eventarc triggers list

ينشئ عامل تشغيل Pub/Sub موضوع Pub/Sub بشكل تلقائي. لنكتشف ذلك ونحدّد متغيرًا:

TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')

استخدِم gcloud لنشر رسالة في الموضوع:

gcloud pubsub topics publish $TOPIC_ID --message="Hello World"

للتحقّق مما إذا تم استلام الحدث، ابحث أولاً عن اسم الحزمة:

kubectl get pods

NAME                        READY   STATUS
hello-gke-df6469d4b-5vv22   1/1     Running

واحفظها في متغيّر:

POD_NAME=hello-gke-df6469d4b-5vv22 

راجِع سجلات الحِزمة للتحقّق من الحدث المستلَم:

kubectl logs $POD_NAME

{
  "severity": "INFO",
  "eventType": "google.cloud.pubsub.topic.v1.messagePublished",
  "message": "Received event of type google.cloud.pubsub.topic.v1.messagePublished. Event data: Hello World",
  "event": {
    "data": {
      "subscription": "projects/atamel-eventarc-gke/subscriptions/eventarc-us-central1-trigger-pubsub-gke-sub-270",
      "message": {
        "data": "SGVsbG8gV29ybGQ=",
        "messageId": "6031025573654834",
        "publishTime": "2022-10-19T14:13:07.990Z"
      }
    },
    "datacontenttype": "application/json",
    "id": "6031025573654834",
    "source": "//pubsub.googleapis.com/projects/atamel-eventarc-gke/topics/eventarc-us-central1-trigger-pubsub-gke-729",
    "specversion": "1.0",
    "time": "2022-10-19T14:13:07.99Z",
    "type": "google.cloud.pubsub.topic.v1.messagePublished"
  }
}

8. إنشاء مشغِّل في Cloud Storage

هناك طريقة أخرى لتلقّي الأحداث وهي من خلال Cloud Storage. على سبيل المثال، يمكن لتطبيق تحميل ملف إلى حزمة ويمكن إرسال هذا الحدث إلى الخدمات من خلال Eventarc.

الإعداد

قبل إنشاء مشغّل في Cloud Storage، أنشئ حزمة لتلقّي الأحداث من:

BUCKET_NAME=eventarc-gcs-$PROJECT_ID
gcloud storage buckets update gs://$BUCKET_NAME --location=$REGION

عليك أيضًا إضافة الدور pubsub.publisher إلى حساب خدمة Cloud Storage لعوامل تشغيل Cloud Storage:

SERVICE_ACCOUNT_STORAGE=$(gcloud storage service-agent --project=$PROJECT_ID)
gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member serviceAccount:$SERVICE_ACCOUNT_STORAGE \
    --role roles/pubsub.publisher

إنشاء

أنشئ عامل تشغيل لتوجيه أحداث إنشاء الملفات الجديدة من الحزمة إلى خدمتك:

TRIGGER_NAME=trigger-storage-gke

gcloud eventarc triggers create $TRIGGER_NAME \
  --destination-gke-cluster=$CLUSTER_NAME \
  --destination-gke-location=$REGION \
  --destination-gke-namespace=default \
  --destination-gke-service=$SERVICE_NAME \
  --destination-gke-path=/ \
  --event-filters="type=google.cloud.storage.object.v1.finalized" \
  --event-filters="bucket=$BUCKET_NAME" \
  --location=$REGION \
  --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com

الاختبار

يمكنك التحقّق من إنشاء عبارة التشغيل من خلال إدراج جميع عبارات التشغيل:

gcloud eventarc triggers list

أنشئ ملفًا واستخدِم gcloud storage لتحميل الملف إلى الحزمة:

echo "Hello World" > random.txt
gcloud storage cp random.txt gs://$BUCKET_NAME/random.txt

راجِع سجلات الحِزمة للتحقّق من الحدث المستلَم:

kubectl logs $POD_NAME

{
  "severity": "INFO",
  "eventType": "google.cloud.storage.object.v1.finalized",
  "message": "Received event of type google.cloud.storage.object.v1.finalized. Event data: {\n  \"kind\": \"storage#object\",\n  \"id\": \"eventarc-gcs-atamel-eventarc-gke/random.txt/1666190425669022\",\n  \"selfLink\": \"https://www.googleapis.com/storage/v1/b/eventarc-gcs-atamel-eventarc-gke/o/random.txt\",\n  \"name\": \"random.txt\",\n  \"bucket\": \"eventarc-gcs-atamel-eventarc-gke\",\n  \"generation\": \"1666190425669022\",\n  \"metageneration\": \"1\",\n  \"contentType\": \"text/plain\",\n  \"timeCreated\": \"2022-10-19T14:40:25.678Z\",\n  \"updated\": \"2022-10-19T14:40:25.678Z\",\n  \"storageClass\": \"STANDARD\",\n  \"timeStorageClassUpdated\": \"2022-10-19T14:40:25.678Z\",\n  \"size\": \"12\",\n  \"md5Hash\": \"5Z/5eUEET4XfUpfhwwLSYA==\",\n  \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/eventarc-gcs-atamel-eventarc-gke/o/random.txt?generation=1666190425669022\u0026alt=media\",\n  \"contentLanguage\": \"en\",\n  \"crc32c\": \"R1jUOQ==\",\n  \"etag\": \"CJ77zIPD7PoCEAE=\"\n}\n",
  "event": {
    "bucket": "eventarc-gcs-atamel-eventarc-gke",
    "data": {
      "kind": "storage#object",
      "id": "eventarc-gcs-atamel-eventarc-gke/random.txt/1666190425669022",
      "selfLink": "https://www.googleapis.com/storage/v1/b/eventarc-gcs-atamel-eventarc-gke/o/random.txt",
      "name": "random.txt",
      "bucket": "eventarc-gcs-atamel-eventarc-gke",
      "generation": "1666190425669022",
      "metageneration": "1",
      "contentType": "text/plain",
      "timeCreated": "2022-10-19T14:40:25.678Z",
      "updated": "2022-10-19T14:40:25.678Z",
      "storageClass": "STANDARD",
      "timeStorageClassUpdated": "2022-10-19T14:40:25.678Z",
      "size": "12",
      "md5Hash": "5Z/5eUEET4XfUpfhwwLSYA==",
      "mediaLink": "https://storage.googleapis.com/download/storage/v1/b/eventarc-gcs-atamel-eventarc-gke/o/random.txt?generation=1666190425669022\u0026alt=media",
      "contentLanguage": "en",
      "crc32c": "R1jUOQ==",
      "etag": "CJ77zIPD7PoCEAE="
    },
    "datacontenttype": "application/json",
    "id": "6031255652220627",
    "source": "//storage.googleapis.com/projects/_/buckets/eventarc-gcs-atamel-eventarc-gke",
    "specversion": "1.0",
    "subject": "objects/random.txt",
    "time": "2022-10-19T14:40:25.678152Z",
    "type": "google.cloud.storage.object.v1.finalized"
  }
}

9- إنشاء عامل تشغيل في "سجلّات تدقيق Cloud"

على الرغم من أنّ عامل تشغيل Cloud Storage هو الطريقة الأفضل للاستماع إلى أحداث Cloud Storage، في هذه الخطوة، يمكنك إنشاء عامل تشغيل لسجلّ تدقيق Cloud لإجراء الشيء نفسه.

الإعداد

لتلقّي أحداث من خدمة، عليك تفعيل "سجلّات التدقيق". من Google Cloud Console، اختَر IAM & Admin وAudit Logs من القائمة في أعلى يمين الصفحة. في قائمة الخدمات، ضَع علامة في المربّع Google Cloud Storage:

91d1bcef8f953fe3.png

على يسار الصفحة، تأكَّد من اختيار Admin وRead وWrite وانقر على Save:

ccb31db1e55fd2e3.png

عليك أيضًا إضافة دور eventarc.eventReceiver إلى حساب الخدمة المشغِّل لعوامل تشغيل "سجلّات تدقيق السحابة الإلكترونية":

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com \
  --role roles/eventarc.eventReceiver

إنشاء

أنشئ عامل تشغيل لتوجيه أحداث إنشاء الملفات الجديدة من الحزمة إلى خدمتك:

TRIGGER_NAME=trigger-auditlog-storage-gke

gcloud eventarc triggers create $TRIGGER_NAME \
  --destination-gke-cluster=$CLUSTER_NAME \
  --destination-gke-location=$REGION \
  --destination-gke-namespace=default \
  --destination-gke-service=$SERVICE_NAME \
  --destination-gke-path=/ \
  --event-filters="type=google.cloud.audit.log.v1.written" \
  --event-filters="serviceName=storage.googleapis.com" \
  --event-filters="methodName=storage.objects.create" \
  --event-filters-path-pattern="resourceName=/projects/_/buckets/$BUCKET_NAME/objects/*" \
  --location=$REGION \
  --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com

الاختبار

تستغرق وحدات تشغيل "سجلّات التدقيق" بعض الوقت لتتمّ تهيئتها. يمكنك التحقّق من إنشاء عبارة التشغيل من خلال إدراج جميع عبارات التشغيل:

gcloud eventarc triggers list

من المفترض أن يظهر لك حقل Active على النحو التالي:Yes

NAME                          TYPE                                           DESTINATION     ACTIVE
trigger-auditlog-storage-gke  google.cloud.audit.log.v1.written              GKE: hello-gke  Yes

أنشئ ملفًا واستخدِم gcloud storage لتحميل الملف إلى الحزمة:

echo "Hello World" > random.txt
gcloud storage cp random.txt gs://$BUCKET_NAME/random.txt

راجِع سجلات الحِزمة للتحقّق من الحدث المستلَم:

kubectl logs $POD_NAME

{
  "severity": "INFO",
  "eventType": "google.cloud.audit.log.v1.written",
  "message": "Received event of type google.cloud.audit.log.v1.written. Event data: {\"protoPayload\":{\"status\":{},\"authenticationInfo\":{\"principalEmail\":\"atameldev@gmail.com\"},\"requestMetadata\":{\"callerIp\":\"149.71.143.227\",\"callerSuppliedUserAgent\":\"apitools Python/3.10.4 gsutil/5.14 (darwin) analytics/disabled interactive/True command/cp google-cloud-sdk/405.0.1,gzip(gfe)\",\"requestAttributes\":{\"time\":\"2022-10-19T15:05:54.144615670Z\",\"auth\":{}},\"destinationAttributes\":{}},\"serviceName\":\"storage.googleapis.com\",\"methodName\":\"storage.objects.create\",\"authorizationInfo\":[{\"resource\":\"projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt\",\"permission\":\"storage.objects.delete\",\"granted\":true,\"resourceAttributes\":{}},{\"resource\":\"projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt\",\"permission\":\"storage.objects.create\",\"granted\":true,\"resourceAttributes\":{}}],\"resourceName\":\"projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt\",\"serviceData\":{\"@type\":\"type.googleapis.com/google.iam.v1.logging.AuditData\",\"policyDelta\":{\"bindingDeltas\":[{\"action\":\"ADD\",\"role\":\"roles/storage.legacyObjectOwner\",\"member\":\"projectOwner:atamel-eventarc-gke\"},{\"action\":\"ADD\",\"role\":\"roles/storage.legacyObjectOwner\",\"member\":\"projectEditor:atamel-eventarc-gke\"},{\"action\":\"ADD\",\"role\":\"roles/storage.legacyObjectOwner\",\"member\":\"user:atameldev@gmail.com\"},{\"action\":\"ADD\",\"role\":\"roles/storage.legacyObjectReader\",\"member\":\"projectViewer:atamel-eventarc-gke\"}]}},\"resourceLocation\":{\"currentLocations\":[\"us-central1\"]}},\"insertId\":\"-8vmrbve7pol2\",\"resource\":{\"type\":\"gcs_bucket\",\"labels\":{\"project_id\":\"atamel-eventarc-gke\",\"bucket_name\":\"eventarc-gcs-atamel-eventarc-gke\",\"location\":\"us-central1\"}},\"timestamp\":\"2022-10-19T15:05:54.138732321Z\",\"severity\":\"INFO\",\"logName\":\"projects/atamel-eventarc-gke/logs/cloudaudit.googleapis.com%2Fdata_access\",\"receiveTimestamp\":\"2022-10-19T15:05:54.839604461Z\"}",
  "event": {
    "data": {
      "protoPayload": {
        "status": {
        },
        "authenticationInfo": {
          "principalEmail": "atameldev@gmail.com"
        },
        "requestMetadata": {
          "callerIp": "149.71.143.227",
          "callerSuppliedUserAgent": "apitools Python/3.10.4 gsutil/5.14 (darwin) analytics/disabled interactive/True command/cp google-cloud-sdk/405.0.1,gzip(gfe)",
          "requestAttributes": {
            "time": "2022-10-19T15:05:54.144615670Z",
            "auth": {
            }
          },
          "destinationAttributes": {
          }
        },
        "serviceName": "storage.googleapis.com",
        "methodName": "storage.objects.create",
        "authorizationInfo": [
          {
            "resource": "projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt",
            "permission": "storage.objects.delete",
            "granted": true,
            "resourceAttributes": {
            }
          },
          {
            "resource": "projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt",
            "permission": "storage.objects.create",
            "granted": true,
            "resourceAttributes": {
            }
          }
        ],
        "resourceName": "projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt",
        "serviceData": {
          "@type": "type.googleapis.com/google.iam.v1.logging.AuditData",
          "policyDelta": {
            "bindingDeltas": [
              {
                "action": "ADD",
                "role": "roles/storage.legacyObjectOwner",
                "member": "projectOwner:atamel-eventarc-gke"
              },
              {
                "action": "ADD",
                "role": "roles/storage.legacyObjectOwner",
                "member": "projectEditor:atamel-eventarc-gke"
              },
              {
                "action": "ADD",
                "role": "roles/storage.legacyObjectOwner",
                "member": "user:atameldev@gmail.com"
              },
              {
                "action": "ADD",
                "role": "roles/storage.legacyObjectReader",
                "member": "projectViewer:atamel-eventarc-gke"
              }
            ]
          }
        },
        "resourceLocation": {
          "currentLocations": [
            "us-central1"
          ]
        }
      },
      "insertId": "-8vmrbve7pol2",
      "resource": {
        "type": "gcs_bucket",
        "labels": {
          "project_id": "atamel-eventarc-gke",
          "bucket_name": "eventarc-gcs-atamel-eventarc-gke",
          "location": "us-central1"
        }
      },
      "timestamp": "2022-10-19T15:05:54.138732321Z",
      "severity": "INFO",
      "logName": "projects/atamel-eventarc-gke/logs/cloudaudit.googleapis.com%2Fdata_access",
      "receiveTimestamp": "2022-10-19T15:05:54.839604461Z"
    },
    "datacontenttype": "application/json; charset=utf-8",
    "dataschema": "https://googleapis.github.io/google-cloudevents/jsonschema/google/events/cloud/audit/v1/LogEntryData.json",
    "id": "projects/atamel-eventarc-gke/logs/cloudaudit.googleapis.com%2Fdata_access-8vmrbve7pol21666191954138732",
    "methodname": "storage.objects.create",
    "recordedtime": "2022-10-19T15:05:54.138732321Z",
    "resourcename": "projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt",
    "servicename": "storage.googleapis.com",
    "source": "//cloudaudit.googleapis.com/projects/atamel-eventarc-gke/logs/data_access",
    "specversion": "1.0",
    "subject": "storage.googleapis.com/projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt",
    "time": "2022-10-19T15:05:54.839604461Z",
    "type": "google.cloud.audit.log.v1.written"
  }
}

10. تهانينا!

تهانينا على إكمال دورة codelab.

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

  • أنشئ مجموعة GKE.
  • أنشئ خدمة GKE كمصدر أحداث.
  • أنشئ عبارة تشغيل Pub/Sub.
  • أنشئ مشغِّلًا في Cloud Storage.
  • أنشئ مشغِّلًا لـ "سجلّات تدقيق Cloud".