Bermigrasi dari Pub/Sub Lite ke Layanan yang Dikelola Google Cloud untuk Apache Kafka

Dokumen ini menjelaskan cara memigrasikan data dari topik Pub/Sub Lite ke topik Layanan Terkelola untuk Apache Kafka.

Sebelum memulai

  1. Aktifkan Google Kubernetes Engine API.
  2. Mengidentifikasi topik Pub/Sub Lite yang akan dimigrasikan. Tentukan nama untuk topik target di Google Cloud Managed Service untuk Apache Kafka. Tentukan juga Layanan Terkelola untuk Cluster Apache Kafka yang menjadi tujuan migrasi.

Alur kerja migrasi

Untuk memigrasikan data, Anda harus menyelesaikan tugas-tugas berikut. Detail spesifik dari tugas akan ditampilkan nanti di halaman ini.

  1. Membuat akun layanan Google Kubernetes Engine.
  2. Membuat cluster Google Kubernetes Engine.
  3. Menyesuaikan image Docker dengan konfigurasi detail topik Anda.
  4. Men-deploy image docker ke cluster Google Kubernetes Engine.

    Di dalam gambar, Kafka Connect dan plugin Pub/Sub Lite untuk Kafka Connect digunakan untuk berlangganan langganan Pub/Sub Lite baru, dan publikasikan ke Google Cloud Managed Service untuk 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. Ini peran memfasilitasi proses migrasi.

    • Peran Klien Kafka Terkelola (roles/managedkafka.client)
    • Peran Pelanggan Pub/Sub Lite (roles/pubsublite.subscriber)
    • Peran Viewer 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 layanan tersebut akun yang dibuat 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. Pada tab Setelan Lanjutan, ubah akun layanan ke IAM akun layanan yang Anda buat di langkah sebelumnya.

  4. Anda juga dapat mengonfigurasi setelan lainnya secara permanen sesuai kebutuhan.

  5. Untuk membuat cluster, klik Create.

Membuat gambar Docker Kafka Connect

Bagian ini menjelaskan cara membuat dan menyesuaikan gambar Docker Kafka Connect untuk topik Anda.

  1. Buat 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 untuk menautkan repositori ke project Google Cloud Anda, Pub/Sub Lite, dan Kafka.

    .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. Bangun 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. Mengirim image ke Artifact Registry dengan menjalankan 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. Menginstal dan mengonfigurasi kubectl dengan plugin otentikasi.
  2. Buat kubeconfig untuk cluster Google Kubernetes Engine Anda.
  3. Membuat dan memberikan 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 akun layanan Google Kubernetes Engine nama.
  5. Jalankan file K8s.yaml.

    kubectl create -f k8s.yaml
    

    Tindakan ini akan membuat workload Kafka Connect yang berjalan di Google Kubernetes Engine Anda membuat cluster dan meluncurkan konektor Pub/Sub Lite untuk memindahkan data dari Topik Pub/Sub Lite ke Layanan yang Dikelola Google Cloud untuk Apache Kafka.

Memantau tugas

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

  1. Di konsol Google Cloud, buka Detail deployment > Halaman workload.
  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 setelah menyiapkan pengembalian penerusan port output yang mirip dengan berikut ini:

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

    Jika Anda menambahkan /connectors ke link, konektor yang berjalan akan dicantumkan, Contoh:

    ["PubSubLiteSourceConnector"]
    

    Misalnya, memeriksa tautan ini url:8083/connectors/PubSubLiteSourceConnector/status menghasilkan daftar tugas, beserta 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 akan memigrasikan pelanggan dan penerbit. Untuk melakukannya, ikuti langkah.

  1. Memigrasikan subscriber. Memperbarui subscriber untuk mengonsumsi Topik Kafka, bukan topik Pub/Sub Lite.

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

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

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

    Mirip dengan migrasi pelanggan, proses ini harus dilakukan secara bertahap dalam terkendali. Jika data duplikat tidak menjadi masalah, Anda dapat mempertahankan dua kumpulan penerbit untuk memverifikasi perilakunya. Setelah Anda memverifikasi perilaku ini, nonaktifkan penerbit Pub/Sub Lite Anda.

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

  4. Hapus topik Pub/Sub Lite asli.

Langkah selanjutnya