Bermigrasi dari Pub/Sub Lite ke Google Cloud Managed Service for Apache Kafka

Dokumen ini menjelaskan cara memigrasikan data dari topik Pub/Sub Lite ke topik Managed Service for Apache Kafka.

Sebelum memulai

  1. Aktifkan Google Kubernetes Engine API.
  2. Identifikasi topik Pub/Sub Lite yang akan dimigrasikan. Tentukan nama untuk topik target di Google Cloud Managed Service for Apache Kafka. Tentukan juga Cluster Managed Service for Apache Kafka yang akan Anda migrasikan.

Alur kerja migrasi

Untuk memigrasikan data, selesaikan tugas berikut. Detail spesifik tugas ini akan ditampilkan nanti di halaman ini.

  1. Buat akun layanan Google Kubernetes Engine.
  2. Buat cluster Google Kubernetes Engine.
  3. Sesuaikan image docker dengan detail konfigurasi topik Anda.
  4. Deploy image docker ke cluster Google Kubernetes Engine.

    Di dalam image, Kafka Connect dan plugin Pub/Sub Lite untuk Kafka Connect digunakan untuk berlangganan langganan Pub/Sub Lite baru, dan memublikasikan ke Managed Service for Apache Kafka.

Membuat akun layanan Google Kubernetes Engine

Bagian ini menjelaskan cara membuat akun layanan IAM yang memiliki izin yang diperlukan untuk menjalankan cluster Google Kubernetes Engine.

  1. Di Konsol Google Cloud, Buat akun layanan IAM baru dengan izin minimum yang diperlukan untuk mengoperasikan Google Kubernetes Engine.

  2. Berikan peran IAM tambahan berikut ke akun layanan. Peran ini memfasilitasi proses migrasi.

    • Peran Klien Kafka Terkelola (roles/managedkafka.client)
    • Peran Pelanggan Pub/Sub Lite (roles/pubsublite.subscriber)
    • Peran Pelihat Pub/Sub Lite (roles/pubsublite.Viewer)
    • Peran Pembaca Artifact Registry (roles/artifactregistry.reader)

Membuat cluster GKE

Bagian ini menjelaskan cara membuat cluster GKE yang menggunakan akun layanan yang Anda buat dari langkah sebelumnya.

  1. Buka halaman Google Kubernetes Engine di konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Klik Create.

    Halaman Create an Autopilot cluster akan muncul.

  3. Di tab Advanced Settings, ubah akun layanan ke IAM service account yang Anda buat di langkah sebelumnya.

  4. Secara opsional, konfigurasi setelan lainnya sesuai kebutuhan.

  5. Untuk membuat cluster, klik Create.

Membuat image docker Kafka Connect

Bagian ini menjelaskan cara membuat dan menyesuaikan image docker Kafka Connect untuk topik Anda.

  1. Clone repositori GitHub migrasi Pub/Sub Lite.
  2. Untuk akun layanan IAM yang Anda buat sebelumnya, buat kunci akun json.

    Gunakan alat base64 untuk mengenkode kunci JSON. Misalnya,

    Linux

    base64 -w 0 < my_service_account.json > password.txt
    

    Mac

    base64 < account_key_json > password.txt
    
  3. Di file secret di repositori GitHub, perbarui file berikut dengan informasi yang sesuai untuk menautkan repositori ke project Google Cloud, Pub/Sub Lite, dan Kafka Anda.

    .gcp/gmk_sasl_service_account → sensitive
    <service-account-name>@<gcp-project>.iam.gserviceaccount.com
    
    .gcp/gmk_sasl_service_account_key → sensitive
    <base64 encoded sasl service account key>
    
    .gcp/kafka_ssl_truststore_location → sensitive
    <full path of the ssl truststore jks file location>
    
    .gcp/kafka_ssl_truststore_password → sensitive
    <password for the ssl truststore jks>
    
    .gcp/gmk_bootstrap_servers → environment specific
    bootstrap.<google-managed-kafka-cluster-name>.<google-managed-kafka-cluster-region name>.managedkafka.<google-managed-cluster-host-project-name>.cloud.goog:9092
    
    .gcp/kafka_connect_group_id → environment specific
    <Kafka Connect group id (unique per worker group) for the Kafka connect workers in distributed mode>
    
    .gcp/kafka_config_storage_topic → environment specific
    <Kafka topic name used by Kafka Connect for tracking the config>
    
    .gcp/kafka_offset_storage_topic → environment specific
    <Kafka topic name used by Kafka Connect for tracking the offsets>
    
    .gcp/kafka_status_storage_topic → environment specific
    <Kafka topic name used by Kafka Connect for tracking the status>
    
    .gcp/kafka_sink_topic → environment specific
    <target sink Kafka topic name used by Kafka Connect for migrating the data from the Pub/Sub Lite topic>
    
    .gcp/pubsub_lite_gcp_project → environment specific
    <Google Cloud project that hosts the Pub/Sub Lite source subscription to be used for migrating the Pub/Sub Lite topic to sink the Kafka topic>
    
    .gcp/pubsub_lite_gcp_location → environment specific
    <Google Cloud location for the Pub/Sub Lite source subscription tor migrate the Pub/Sub Lite topic to sink Kafka topic>
    
    .gcp/pubsub_lite_subscription → environment specific
    <Pub/Sub Lite source subscription name to be used for migrating the pubsub lite topic to Kafka topic>
    
  4. Build image docker dengan menjalankan file docker/build-image.sh.

    ./push-image.sh
    
  5. Perbarui image docker/push-image.sh dengan nama project Google Cloud Anda.

  6. Kirim image ke Artifact Registry dengan menjalankan file docker/push-image.sh.

    ./push-image.sh
    

Men-deploy Workload Kafka Connect

Bagian ini menjelaskan cara men-deploy image docker Kafka Connect ke cluster Google Kubernetes Engine.

  1. Instal dan konfigurasikan kubectl dengan plugin autentikasi.
  2. Buat kubeconfig untuk cluster Google Kubernetes Engine Anda.
  3. Buat dan berikan akun layanan Google Kubernetes Engine dengan izin yang benar untuk meniru identitas akun IAM Anda.

    $KSA_NAME = KUBERNETES_SERVICE_ACCOUNT_NAME
    $PROJECT_ID = GOOGLE_CLOUD_PROJECT_ID
    $IAM_SA_NAME = IAM_SERVICE_ACCOUNT_NAME
    
    kubectl create serviceaccount $KSA_NAME \
        --namespace=default
    
    gcloud iam service-accounts add-iam-policy-binding \
    $IAM_SA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:$PROJECT_ID.svc.id.goog[default/$KSA_NAME]"
    
    kubectl annotate serviceaccount $KSA_NAME \
        --namespace default \
    iam.gke.io/gcp-service-account=$IAM_SA_NAME@$PROJECT_ID.iam.gserviceaccount.com
    
  4. Buka file K8s.yaml di editor teks dan perbarui nilai berikut.

    1. Ganti <workflow_name> dengan nama untuk alur kerja Kafka Connect Anda.
    2. Ganti <gke_service_account> dengan nama akun layanan Google Kubernetes Engine.
  5. Jalankan file K8s.yaml.

    kubectl create -f k8s.yaml
    

    Tindakan ini akan membuat beban kerja Kafka Connect yang berjalan di cluster Google Kubernetes Engine dan meluncurkan konektor Pub/Sub Lite untuk memindahkan data dari topik Pub/Sub Lite ke Google Cloud Managed Service for Apache Kafka.

Memantau tugas

Setelah tugas berjalan, Anda dapat memeriksanya dengan terhubung ke endpoint REST Kafka Connect.

  1. Di konsol Google Cloud, buka Deployment detail > Workload page.
  2. Klik deployment Kubernetes Anda.

    Halaman detail deployment akan terbuka.

  3. Di bagian Mengekspos layanan, klik Ekspos, lalu tambahkan port 8083.

  4. Aktifkan penerusan port.

    Link default yang Anda dapatkan dari menyiapkan penerusan port akan menampilkan output yang mirip dengan berikut ini:

    {"version":"3.4.0","commit":"2e1947d240607d53","kafka_cluster_id":"6H6qWA0dQnuK31hBPqYUDg"}
    

    Jika Anda menambahkan /connectors ke link, link tersebut akan mencantumkan konektor yang sedang berjalan. Misalnya:

    ["PubSubLiteSourceConnector"]
    

    Misalnya, memeriksa link ini url:8083/connectors/PubSubLiteSourceConnector/status akan menghasilkan daftar tugas, dan statusnya.

    {"name":"PubSubLiteSourceConnector","connector":{"state":"RUNNING","worker_id":"10.53.0.157:8083"},"tasks":[{"id":0,"state":"RUNNING","worker_id":"10.53.0.139:8083"},{"id":1,"state":"RUNNING","worker_id":"10.53.0.157:8083"},{"id":2,"state":"RUNNING","worker_id":"10.53.0.139:8083"},{"id":3,"state":"RUNNING","worker_id":"10.53.0.157:8083"},{"id":4,"state":"RUNNING","worker_id":"10.53.0.157:8083"},{"id":5,"state":"RUNNING","worker_id":"10.53.0.139:8083"},{"id":6,"state":"RUNNING","worker_id":"10.53.0.139:8083"},{"id":7,"state":"RUNNING","worker_id":"10.53.0.157:8083"},{"id":8,"state":"RUNNING","worker_id":"10.53.0.139:8083"},{"id":9,"state":"RUNNING","worker_id":"10.53.0.157:8083"}],"type":"source"}
    

Migrasi Bertahap

Setelah topik Pub/Sub Lite dimigrasikan ke Kafka, Anda dapat memigrasikan pelanggan dan penayang. Untuk melakukannya, ikuti langkah-langkah berikut.

  1. Migrasi pelanggan. Perbarui subscriber Anda untuk menggunakan topik Kafka, bukan topik Pub/Sub Lite.

    Hal ini harus dilakukan secara bertahap di lingkungan pengembangan yang terkontrol.

    Idealnya, Anda harus mempertahankan dua kumpulan subscriber untuk memverifikasi bahwa pesan yang identik diterima dari Kafka dan Pub/Sub Lite. Setelah perilaku yang benar diverifikasi, Anda dapat menonaktifkan pelanggan Pub/Sub Lite.

  2. Memigrasikan Penayang. Perbarui penayang Anda untuk memublikasikan langsung ke topik Kafka, bukan topik Pub/Sub Lite.

    Serupa dengan memigrasikan pelanggan, hal ini harus dilakukan secara bertahap di lingkungan pengembangan yang terkontrol. Jika data duplikat tidak menjadi masalah, Anda dapat mempertahankan dua kumpulan penayang untuk memverifikasi perilaku. Setelah Anda memverifikasi perilakunya, nonaktifkan penayang Pub/Sub Lite Anda.

  3. Setelah semua subscriber dan penayang dimigrasikan, nonaktifkan alat migrasi dengan menghapus workload dan cluster.

  4. Hapus topik Pub/Sub Lite asli.

Langkah selanjutnya