Menerima peristiwa menggunakan Cloud Audit Logs (gcloud CLI)

Panduan memulai ini menunjukkan cara menyiapkan layanan Google Kubernetes Engine (GKE) sebagai tujuan untuk menerima peristiwa dari Cloud Storage menggunakan Eventarc.

Dalam panduan memulai ini, Anda akan:

  1. Siapkan akun layanan agar Eventarc dapat menarik peristiwa dan meneruskannya ke target.
  2. Membuat bucket Cloud Storage untuk menjadi sumber peristiwa.
  3. Membuat cluster GKE.
  4. Inisialisasi tujuan GKE di Eventarc.
  5. Deploy layanan GKE yang menerima peristiwa.
  6. Buat pemicu Eventarc yang mengirim peristiwa dari Cloud Storage ke layanan GKE.
  7. Upload file ke bucket Cloud Storage untuk membuat peristiwa dan melihat peristiwa tersebut di log pod GKE.

Sebelum memulai

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.

  3. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  4. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  5. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Verify that billing is enabled for your Google Cloud project.

  7. Install the Google Cloud CLI.

  8. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  9. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  10. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  11. Verify that billing is enabled for your Google Cloud project.

  12. Update komponen Google Cloud CLI:
    gcloud components update
  13. Aktifkan Eventarc, Resource Manager, dan Google Kubernetes Engine API:
    gcloud services enable eventarc.googleapis.com \
        cloudresourcemanager.googleapis.com \
        container.googleapis.com
  14. Tetapkan variabel konfigurasi yang digunakan dalam panduan memulai ini:
    PROJECT_ID=$(gcloud config get-value project)
    TRIGGER_SA=eventarc-sa
    CLUSTER_NAME=events-cluster
    SERVICE_NAME=hello-gke
  15. Jika Anda adalah project creator, Anda diberi peran Pemilik dasar (roles/owner). Secara default, peran Identity and Access Management (IAM) ini mencakup izin yang diperlukan untuk akses penuh ke sebagian besar resource Google Cloud dan Anda dapat melewati langkah ini.

    Jika Anda bukan project creator, izin yang diperlukan harus diberikan pada project kepada akun utama yang sesuai. Misalnya, akun utama dapat berupa Akun Google (untuk pengguna akhir) atau akun layanan (untuk aplikasi dan workload komputasi). Untuk mengetahui informasi selengkapnya, lihat halaman eran dan izin untuk tujuan peristiwa Anda.

    Izin yang diperlukan

    Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan panduan memulai ini, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda:

    Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

    Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran kustom atau peran yang telah ditentukan lainnya.

  16. Catat akun layanan default Compute Engine karena Anda akan melampirkannya ke pemicu Eventarc untuk merepresentasikan identitas pemicu untuk tujuan pengujian. Akun layanan ini dibuat secara otomatis setelah mengaktifkan atau menggunakan layanan Google Cloud yang menggunakan Compute Engine, dan dengan format email berikut:

    PROJECT_NUMBER-compute@

    Ganti PROJECT_NUMBER dengan Google Cloud nomor project Anda. Anda dapat menemukan nomor project di halaman Selamat Datang di konsol Google Cloud atau dengan menjalankan perintah berikut:

    gcloud projects describe PROJECT_ID --format='value(projectNumber)'

    Untuk lingkungan produksi, sebaiknya buat akun layanan baru dan berikan satu atau beberapa peran IAM yang berisi izin minimum yang diperlukan dan ikuti prinsip hak istimewa terendah.

  17. Berikan Peran Pub/Sub Subscriber (roles/pubsub.subscriber) pada project ke akun layanan default Compute Engine agar pemicu Eventarc dapat menarik peristiwa dari Pub/Sub.
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:PROJECT_NUMBER-compute@ \
        --role=roles/pubsub.subscriber
  18. Berikan Peran Eventarc Event Receiver (roles/eventarc.eventReceiver) pada project ke akun layanan default Compute Engine agar pemicu Eventarc dapat menerima peristiwa dari penyedia peristiwa.
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:PROJECT_NUMBER-compute@ \
        --role=roles/eventarc.eventReceiver
  19. Jika Anda mengaktifkan agen layanan Cloud Pub/Sub pada atau sebelum 8 April 2021, untuk mendukung permintaan push Pub/Sub yang diautentikasi, berikan peran Service Account Token Creator (roles/iam.serviceAccountTokenCreator) kepada agen layanan. Jika tidak, peran ini akan diberikan secara default:
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub. \
        --role=roles/iam.serviceAccountTokenCreator
  20. Untuk Google Cloud Storage, aktifkan jenis log untuk layanan ini: Pembacaan Admin, Pembacaan Data, dan Penulisan Data:

    1. Baca kebijakan IAM project Anda dan simpan dalam file:
      gcloud projects get-iam-policy PROJECT_ID > /tmp/policy.yaml
    2. Edit kebijakan Anda di `/tmp/policy.yaml`, dengan menambahkan atau mengubah *hanya* konfigurasi log audit Akses Data. Perhatian: Anda harus mempertahankan bagian `bindings:` dan `etag:` tanpa perubahan. Jika tidak dilakukan, project Anda mungkin tidak dapat digunakan.
      auditConfigs:
        - auditLogConfigs:
          - logType: ADMIN_READ
          - logType: DATA_WRITE
          - logType: DATA_READ
          service: storage.googleapis.com
        bindings:
        - members:
          - user:EMAIL_ADDRESS
          role: roles/owner
        etag: BwW_bHKTV5U=
        version: 1
      Ganti EMAIL_ADDRESS dengan alamat email Anda.
    3. Tulis kebijakan IAM baru Anda:
      gcloud projects set-iam-policy PROJECT_ID /tmp/policy.yaml
      Jika perintah sebelumnya melaporkan konflik dengan perubahan lain, ulangi langkah-langkah ini, mulai dengan membaca kebijakan IAM project.
  21. Membuat bucket Cloud Storage

    Panduan memulai ini menggunakan Cloud Storage sebagai sumber peristiwa. Buat bucket Cloud Storage:

    gcloud storage buckets create  gs://events-quickstart-$(gcloud config get-value project) --location=us-central1

    Setelah sumber peristiwa dibuat, Anda dapat men-deploy layanan penerima peristiwa di GKE.

    Membuat cluster GKE

    Cluster GKE terdiri dari setidaknya satu mesin bidang kontrol cluster dan beberapa mesin pekerja yang disebut node. Node adalah instance virtual machine (VM) Compute Engine yang menjalankan proses Kubernetes yang diperlukan untuk menjadikannya bagian dari cluster. Anda men-deploy aplikasi ke cluster, kemudian aplikasi akan berjalan di node.

    Buat cluster Autopilot bernama events-cluster:

    gcloud container clusters create-auto $CLUSTER_NAME --region us-central1

    Mungkin perlu waktu beberapa menit hingga pembuatan cluster selesai. Setelah cluster dibuat, output-nya akan terlihat seperti berikut:

    Creating cluster events-cluster...done.
    Created [https://container.googleapis.com/v1/projects/MY_PROJECT/zones/us-central1/clusters/events-cluster].
    [...]
    STATUS: RUNNING
    

    Tindakan ini akan membuat cluster GKE bernama events-cluster dalam project dengan ID project Google Cloud MY_PROJECT.

    Mengaktifkan tujuan GKE

    Untuk setiap pemicu yang menargetkan layanan GKE, Eventarc membuat komponen penerusan peristiwa yang menarik peristiwa dari Pub/Sub dan meneruskannya ke target. Untuk membuat komponen dan mengelola resource di cluster GKE, berikan izin kepada agen layanan Eventarc:

    1. Aktifkan tujuan GKE untuk Eventarc:

      gcloud eventarc gke-destinations init
    2. Pada perintah untuk mengikat peran yang diperlukan, masukkan y.

      Peran berikut terikat ke akun layanan:

      • compute.viewer
      • container.developer
      • iam.serviceAccountAdmin

    Membuat tujuan layanan GKE

    Deploy layanan GKE yang akan menerima dan mencatat peristiwa menggunakan image bawaan, us-docker.pkg.dev/cloudrun/container/hello:

    1. Kubernetes menggunakan file YAML bernama kubeconfig guna menyimpan informasi autentikasi cluster untuk kubectl. Perbarui file kubeconfig dengan informasi endpoint dan kredensial untuk mengarahkan kubectl ke cluster GKE:

      gcloud container clusters get-credentials $CLUSTER_NAME \
          --region us-central1
      
    2. Buat deployment Kubernetes:

      kubectl create deployment $SERVICE_NAME \
          --image=us-docker.pkg.dev/cloudrun/container/hello
      
    3. Ekspos sebagai layanan Kubernetes:

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

    Membuat pemicu Eventarc

    Saat Anda mengupload file ke Cloud Storage, pemicu Eventarc akan mengirimkan peristiwa dari Cloud Storage ke layanan GKE hello-gke.

    1. Buat pemicu Cloud Audit Logs:

      gcloud eventarc triggers create my-gke-trigger \
          --location="us-central1" \
          --destination-gke-cluster="events-cluster" \
          --destination-gke-location="us-central1" \
          --destination-gke-namespace="default" \
          --destination-gke-service="hello-gke" \
          --destination-gke-path="/" \
          --event-filters="type=google.cloud.audit.log.v1.written" \
          --event-filters="serviceName=storage.googleapis.com" \
          --event-filters="methodName=storage.objects.create" \
          --service-account="PROJECT_NUMBER-compute@"
      

      Tindakan ini akan membuat pemicu yang disebut my-gke-trigger.

    2. Konfirmasi bahwa pemicu berhasil dibuat:

      gcloud eventarc triggers list

      Outputnya akan mirip dengan berikut ini:

      NAME: my-gke-trigger
      TYPE: google.cloud.audit.log.v1.written
      DESTINATION: GKE: hello-gke
      ACTIVE: By 20:39:43
      LOCATION: us-central1
      

    Membuat dan melihat peristiwa

    Upload file teks ke Cloud Storage untuk membuat peristiwa dan memicu layanan GKE. Kemudian, Anda dapat melihat pesan peristiwa di log pod.

    1. Upload file teks ke Cloud Storage:

      echo "Hello World" > random.txt
      gcloud storage cp random.txt gs://events-quickstart-$(gcloud config get-value project)/random.txt

      Hasil upload ini akan membuat peristiwa dan pod GKE akan mencatat pesan peristiwa tersebut ke dalam log.

    2. Untuk melihat pesan peristiwa:

      1. Temukan ID pod:

        kubectl get pods

        Outputnya akan mirip dengan berikut ini:

        NAME                                         READY   STATUS             RESTARTS   AGE
        hello-gke-645964f578-2mjjt                   1/1     Running            0          35s

        Salin NAME pod untuk digunakan di langkah berikutnya.

      2. Periksa log pod:

        kubectl logs NAME

        Ganti NAME dengan nama pod yang Anda salin.

      3. Cari entri log yang mirip dengan:

        2022/02/24 22:23:49 Hello from Cloud Run! The container started successfully and is listening for HTTP requests on $PORT
        {"severity":"INFO","eventType":"google.cloud.audit.log.v1.written","message":"Received event of type google.cloud.audit.log.v1.written. [...]}
        

    Pembersihan

    Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat.

    Anda dapat:

    1. Hapus bucket Cloud Storage.

    2. Hapus pemicu Eventarc.

    3. Hapus cluster GKE.

    Atau, Anda dapat menghapus Google Cloud project untuk menghindari tagihan. Menghapus project Google Cloud akan menghentikan penagihan untuk semua resource yang digunakan dalam project tersebut.

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

    Jika Anda berencana mempelajari beberapa tutorial dan panduan memulai, menggunakan kembali project dapat membantu Anda agar tidak melampaui batas kuota project.

    Langkah berikutnya

    Menerima peristiwa menggunakan Pub/Sub (Google Cloud CLI)