Mereplikasi pesan Pub/Sub ke Kafka

Tutorial ini menunjukkan cara menyerap pesan dari Pub/Sub ke cluster Managed Service untuk Apache Kafka menggunakan Kafka Connect.

Kafka Connect mengelola pergerakan data antara cluster Kafka dan sistem lainnya. Dalam tutorial ini, Anda akan membuat Connect cluster, dan konektor Sumber Pub/Sub. Konektor Sumber Pub/Sub membaca pesan dari topik Pub/Sub Anda dan menuliskannya ke topik Kafka.

Sebelum memulai

Konsol

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

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

  4. Enable the Managed Kafka API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

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

  7. Enable the Managed Kafka API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  8. Pastikan Anda memiliki peran berikut di project: Managed Kafka Cluster Editor, Managed Kafka Connect Cluster Editor, Managed Kafka Connector Editor, Managed Kafka Topic Editor, Pub/Sub Editor

    Memeriksa peran

    1. Di konsol Google Cloud , buka halaman IAM.

      Buka IAM
    2. Pilih project.
    3. Di kolom Principal, temukan semua baris yang mengidentifikasi Anda atau grup yang Anda termasuk di dalamnya. Untuk mengetahui grup mana saja yang Anda ikuti, hubungi administrator Anda.

    4. Untuk semua baris yang menentukan atau menyertakan Anda, periksa kolom Peran untuk melihat apakah daftar peran menyertakan peran yang diperlukan.

    Memberikan peran

    1. Di konsol Google Cloud , buka halaman IAM.

      Buka IAM
    2. Pilih project.
    3. Klik Grant access.
    4. Di kolom New principals, masukkan ID pengguna Anda. Biasanya, ini adalah alamat email untuk Akun Google.

    5. Klik Pilih peran, lalu telusuri peran.
    6. Untuk memberikan peran tambahan, klik Add another role, lalu tambahkan tiap peran tambahan.
    7. Klik Simpan.

gcloud

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Instal 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. Buat atau pilih Google Cloud project.

    Peran yang diperlukan untuk memilih atau membuat project

    • Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
    • Membuat project: Untuk membuat project, Anda memerlukan peran Pembuat Project (roles/resourcemanager.projectCreator), yang berisi izin resourcemanager.projects.create. Pelajari cara memberikan peran.
    • Buat Google Cloud project:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk Google Cloud project yang Anda buat.

    • Pilih project Google Cloud yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama project Google Cloud Anda.

  6. Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.

  7. Aktifkan Managed Kafka API:

    Peran yang diperlukan untuk mengaktifkan API

    Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (roles/serviceusage.serviceUsageAdmin), yang berisi izin serviceusage.services.enable. Pelajari cara memberikan peran.

    gcloud services enable managedkafka.googleapis.com
  8. Instal Google Cloud CLI.

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

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

    gcloud init
  11. Buat atau pilih Google Cloud project.

    Peran yang diperlukan untuk memilih atau membuat project

    • Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
    • Membuat project: Untuk membuat project, Anda memerlukan peran Pembuat Project (roles/resourcemanager.projectCreator), yang berisi izin resourcemanager.projects.create. Pelajari cara memberikan peran.
    • Buat Google Cloud project:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk Google Cloud project yang Anda buat.

    • Pilih project Google Cloud yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama project Google Cloud Anda.

  12. Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.

  13. Aktifkan Managed Kafka API:

    Peran yang diperlukan untuk mengaktifkan API

    Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (roles/serviceusage.serviceUsageAdmin), yang berisi izin serviceusage.services.enable. Pelajari cara memberikan peran.

    gcloud services enable managedkafka.googleapis.com
  14. Memberikan peran ke akun pengguna Anda. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut: roles/managedkafka.clusterEditor, roles/managedkafka.connectClusterEditor, roles/managedkafka.connectorEditor, roles/managedkafka.topicEditor, roles/pubsub.editor

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    Ganti kode berikut:

    • PROJECT_ID: Project ID Anda.
    • USER_IDENTIFIER: ID untuk akun pengguna Anda. Misalnya, myemail@example.com.
    • ROLE: Peran IAM yang Anda berikan ke akun pengguna Anda.

Membuat topik dan langganan Pub/Sub

Pada langkah ini, Anda akan membuat topik Pub/Sub dengan langganan.

Konsol

  1. Buka halaman Pub/Sub > Topics.

    Buka Topik

  2. Klik Buat topik.

  3. Di kotak ID Topik, masukkan nama untuk topik.

  4. Pastikan kotak centang Tambahkan langganan default dicentang.

  5. Klik Create.

gcloud

  1. Untuk membuat topik Pub/Sub, jalankan perintah gcloud pubsub topics create.

    gcloud pubsub topics create TOPIC_ID
    

    Ganti TOPIC_ID dengan nama untuk topik Pub/Sub Anda.

  2. Untuk membuat langganan ke topik Anda, jalankan perintah gcloud pubsub subscriptions create:

    gcloud pubsub subscriptions create --topic TOPIC_ID SUBSCRIPTION_ID
    

    Ganti SUBSCRIPTION_ID dengan nama untuk langganan Pub/Sub Anda.

Untuk mengetahui informasi tentang cara memberi nama topik dan langganan Pub/Sub, lihat Panduan untuk memberi nama topik atau langganan.

Membuat resource Managed Service for Apache Kafka

Di bagian ini, Anda akan membuat resource Managed Service for Apache Kafka berikut:

  • Cluster Kafka dengan topik.
  • Cluster Connect dengan konektor Pub/Sub.

Membuat cluster Kafka

Pada langkah ini, Anda akan membuat cluster Managed Service for Apache Kafka. Pembuatan cluster dapat memakan waktu hingga 30 menit.

Konsol

  1. Buka halaman Managed Service for Apache Kafka > Clusters.

    Buka Cluster

  2. Klik Create.
  3. Di kotak Nama cluster, masukkan nama untuk cluster.
  4. Dalam daftar Region, pilih lokasi untuk cluster.
  5. Untuk Network configuration, konfigurasikan subnet tempat cluster dapat diakses:
    1. Untuk Project, pilih project Anda.
    2. Untuk Network, pilih jaringan VPC.
    3. Untuk Subnet, pilih subnet.
    4. Klik Done.
  6. Klik Create.

Setelah Anda mengklik Create, status cluster adalah Creating. Saat cluster siap, statusnya adalah Active.

gcloud

Untuk membuat cluster Kafka, jalankan perintah managed-kafka clusters create.

gcloud managed-kafka clusters create KAFKA_CLUSTER \
--location=REGION \
--cpu=3 \
--memory=3GiB \
--subnets=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \
--async

Ganti kode berikut:

  • KAFKA_CLUSTER: nama untuk cluster Kafka
  • REGION: lokasi cluster
  • PROJECT_ID: project ID Anda
  • SUBNET_NAME: subnet tempat Anda ingin membuat cluster, misalnya default

Untuk mengetahui informasi tentang lokasi yang didukung, lihat Lokasi Managed Service for Apache Kafka.

Perintah berjalan secara asinkron dan menampilkan ID operasi:

Check operation [projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID] for status.

Untuk melacak progres operasi pembuatan, gunakan perintah gcloud managed-kafka operations describe:

gcloud managed-kafka operations describe OPERATION_ID \
  --location=REGION

Setelah cluster siap, output dari perintah ini akan menyertakan entri state: ACTIVE. Untuk mengetahui informasi selengkapnya, lihat Memantau operasi pembuatan cluster.

Buat topik Kafka

Setelah cluster Managed Service for Apache Kafka dibuat, buat topik Kafka.

Konsol

  1. Buka halaman Managed Service for Apache Kafka > Clusters.

    Buka Cluster

  2. Klik nama cluster.

  3. Di halaman detail cluster, klik Create Topic.

  4. Di kotak Nama topik, masukkan nama untuk topik.

  5. Klik Create.

gcloud

Untuk membuat topik Kafka, jalankan perintah managed-kafka topics create.

gcloud managed-kafka topics create KAFKA_TOPIC_NAME \
--cluster=KAFKA_CLUSTER \
--location=REGION \
--partitions=10 \
--replication-factor=3

Ganti kode berikut:

  • KAFKA_TOPIC_NAME: nama topik Kafka yang akan dibuat
  • KAFKA_CLUSTER: nama cluster Kafka
  • REGION: region tempat Anda membuat cluster Kafka

Membuat cluster Connect

Pada langkah ini, Anda akan membuat cluster Connect. Pembuatan cluster Connect dapat memerlukan waktu hingga 30 menit.

Sebelum memulai langkah ini, pastikan cluster Managed Service for Apache Kafka telah dibuat sepenuhnya.

Konsol

  1. Buka halaman Managed Service for Apache Kafka > Connect Clusters.

    Buka Connect Clusters

  2. Klik Create.

  3. Untuk Connect cluster name, masukkan string. Contoh: my-connect-cluster.

  4. Untuk Primary Kafka cluster, pilih Kafka yang Anda buat sebelumnya.

  5. Klik Create.

Saat cluster sedang dibuat, status cluster adalah Creating. Setelah cluster selesai dibuat, statusnya adalah Active.

gcloud

Untuk membuat cluster Connect, jalankan perintah gcloud managed-kafka connect-clusters create.

gcloud managed-kafka connect-clusters create CONNECT_CLUSTER \
  --location=REGION \
  --cpu=12 \
  --memory=12GiB \
  --primary-subnet=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \
  --kafka-cluster=KAFKA_CLUSTER \
  --async

Ganti kode berikut:

  • CONNECT_CLUSTER: nama untuk cluster Connect
  • REGION: region tempat Anda membuat cluster Kafka
  • PROJECT_ID: project ID Anda
  • SUBNET_NAME: subnet tempat Anda membuat cluster Kafka
  • KAFKA_CLUSTER: nama cluster Kafka Anda

Perintah berjalan secara asinkron dan menampilkan ID operasi:

Check operation [projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID] for status.

Untuk melacak progres operasi pembuatan, gunakan perintah gcloud managed-kafka operations describe:

gcloud managed-kafka operations describe OPERATION_ID \
  --location=REGION

Untuk mengetahui informasi selengkapnya, lihat Memantau operasi pembuatan cluster.

Memberikan peran IAM

Berikan peran Identity and Access Management (IAM) berikut ke akun layanan Managed Kafka:

  • Pub/Sub Subscriber
  • Pub/Sub Viewer

Peran ini memungkinkan konektor membaca pesan dari Pub/Sub.

Konsol

  1. Di konsol Google Cloud , buka halaman IAM.

    Buka IAM

  2. Pilih Sertakan pemberian peran yang disediakan Google.

  3. Temukan baris Managed Kafka Service Account, lalu klik Edit principal.

  4. Klik Tambahkan peran lain, lalu pilih peran Pub/Sub Subscriber. Ulangi langkah ini untuk peran Pub/Sub Viewer.

  5. Klik Simpan.

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Memberikan peran IAM menggunakan konsol.

gcloud

Untuk memberikan peran IAM ke akun layanan, jalankan perintah gcloud projects add-iam-policy-binding.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com \
    --role=roles/pubsub.subscriber

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com \
    --role=roles/pubsub.viewer

Ganti kode berikut:

  • PROJECT_ID: project ID Anda
  • PROJECT_NUMBER: nomor project Anda

Untuk menemukan nomor project Anda, gunakan perintah gcloud projects describe.

Buat konektor Sumber Pub/Sub

Pada langkah ini, Anda akan membuat konektor Sumber Pub/Sub. Konektor ini membaca pesan dari Pub/Sub dan menuliskannya ke topik Kafka.

Konsol

  1. Buka halaman Managed Service for Apache Kafka > Connect Clusters.

    Buka Connect Clusters

  2. Klik nama cluster Connect.

  3. Klik Buat konektor.

  4. Untuk Nama konektor, masukkan string. Contoh: pubsub-source.

  5. Di daftar Plugin konektor, pilih Pub/Sub Source.

  6. Untuk Cloud Pub/Sub subscription, pilih Pub/Sub default yang dibuat saat Anda membuat topik Pub/Sub.

  7. Untuk Kafka topic, pilih topik Kafka yang Anda buat sebelumnya.

  8. Klik Create.

gcloud

Untuk membuat konektor Sumber Pub/Sub, jalankan perintah gcloud managed-kafka connectors create.

gcloud managed-kafka connectors create PUBSUB_CONNECTOR_NAME \
  --connect-cluster=CONNECT_CLUSTER \
  --location=REGION \
  --configs=connector.class=com.google.pubsub.kafka.source.CloudPubSubSourceConnector,\
cps.project=PROJECT_ID,\
cps.streamingPull.enabled=true,\
cps.subscription=SUBSCRIPTION_ID,\
kafka.topic=KAFKA_TOPIC_NAME,\
key.converter=org.apache.kafka.connect.storage.StringConverter,\
tasks.max=3,\
value.converter=org.apache.kafka.connect.converters.ByteArrayConverter

Ganti kode berikut:

  • PUBSUB_CONNECTOR_NAME: nama untuk konektor, seperti pubsub-source-connector
  • CONNECT_CLUSTER: nama cluster Connect Anda
  • REGION: region tempat Anda membuat cluster Connect
  • PROJECT_ID: project ID Anda
  • KAFKA_TOPIC_NAME: nama topik Kafka Anda
  • SUBSCRIPTION_ID: nama langganan Pub/Sub Anda

Melihat hasilnya

Untuk melihat hasilnya, publikasikan beberapa pesan ke Pub/Sub.

Konsol

  1. Di konsol Google Cloud , buka halaman Pub/Sub > Topics.

    Buka Topik

  2. Di daftar topik, klik nama topik Pub/Sub Anda.

  3. Klik Pesan.

  4. Klik Publikasikan pesan.

  5. Untuk Number of messages, masukkan 10.

  6. Untuk Message body, masukkan {"name": "Alice", "customer_id": 1}.

  7. Klik Publikasikan.

gcloud

Untuk memublikasikan pesan ke topik Pub/Sub Anda, gunakan perintah gcloud pubsub topics publish.

for run in {1..10}; do
  gcloud pubsub topics publish TOPIC_ID --message='{"name": "Alice", "customer_id": 1}'
done

Ganti TOPIC_ID dengan nama topik Pub/Sub Anda.

Sekarang Anda dapat menggunakan pesan dari topik Kafka. Untuk mengetahui informasi selengkapnya, lihat Membuat dan menggunakan pesan dengan CLI.

Pembersihan

Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

Konsol

  1. Hapus topik Pub/Sub.

    1. Buka halaman Pub/Sub > Topics.

      Buka Topik

    2. Pilih topik, lalu klik Hapus.

  2. Hapus langganan Pub/Sub.

    1. Buka halaman Pub/Sub > Subscriptions.

      Buka Langganan

    2. Pilih langganan yang dibuat dengan topik Anda, lalu klik Hapus.

  3. Hapus cluster Connect.

    1. Buka halaman Managed Service for Apache Kafka > Connect Clusters.

      Buka Connect Clusters

    2. Pilih cluster Connect, lalu klik Delete.

  4. Hapus cluster Kafka.

    1. Buka halaman Managed Service for Apache Kafka > Clusters.

      Buka Cluster

    2. Pilih cluster Kafka, lalu klik Hapus.

gcloud

  1. Untuk menghapus langganan dan topik Pub/Sub, gunakan perintah gcloud pubsub subscriptions delete dan gcloud pubsub topics delete.

    gcloud pubsub subscriptions delete SUBSCRIPTION_ID
    gcloud pubsub topics delete TOPIC_ID
    
  2. Untuk menghapus cluster Connect, gunakan perintah gcloud managed-kafka connect-clusters delete.

    gcloud managed-kafka connect-clusters delete CONNECT_CLUSTER \
      --location=REGION --async
    
  3. Untuk menghapus cluster Kafka, gunakan perintah gcloud managed-kafka clusters delete.

    gcloud managed-kafka clusters delete KAFKA_CLUSTER \
      --location=REGION --async
    

Langkah berikutnya