In diesem Dokument wird beschrieben, wie Sie Daten von einem Pub/Sub Lite-Thema zu Ein Thema zu Managed Service for Apache Kafka
Hinweis
- Aktivieren Sie die Google Kubernetes Engine API.
- Wählen Sie ein Pub/Sub Lite-Thema aus, das Sie migrieren möchten. Legen Sie einen Namen für das Zielthema in Google Cloud Managed Service for Apache Kafka fest. Bestimmen Sie außerdem, zu welchem verwalteten Dienst für Apache Kafka-Cluster Sie migrieren.
Migrationsablauf
Führen Sie die folgenden Aufgaben aus, um Ihre Daten zu migrieren. Die spezifischen Details zu diesen Aufgaben werden weiter unten auf dieser Seite beschrieben.
- Erstellen Sie ein Google Kubernetes Engine-Dienstkonto.
- Erstellen Sie einen Google Kubernetes Engine-Cluster.
- Docker-Image mit der Konfiguration anpassen Details zu Ihren Themen.
Stellen Sie das Docker-Image in einem Google Kubernetes Engine-Cluster bereit.
Im Bild werden Kafka Connect und das Pub/Sub Lite-Plug-in für Kafka Connect verwendet, um ein neues Pub/Sub Lite-Abo zu abonnieren und in Managed Service for Apache Kafka zu veröffentlichen.
Google Kubernetes Engine-Dienstkonto erstellen
In diesem Abschnitt wird beschrieben, wie Sie ein IAM-Dienstkonto erstellen, das die erforderlichen Berechtigungen zum Ausführen eines Google Kubernetes Engine-Clusters.
Erstellen Sie in der Google Cloud Console ein neues IAM-Dienstkonto mit den Mindestberechtigungen, die für die Ausführung der Google Kubernetes Engine erforderlich sind.
Gewähren Sie dem Dienstkonto die folgenden zusätzlichen IAM-Rollen. Diese Rollen erleichtern den Migrationsprozess.
- Verwaltete Kafka-Clientrolle (
roles/managedkafka.client
) - Pub/Sub Lite-Abonnentenrolle (
roles/pubsublite.subscriber
) - Pub/Sub Lite-Betrachterrolle (
roles/pubsublite.Viewer
) - Rolle „Artifact Registry-Leser“ (
roles/artifactregistry.reader
)
- Verwaltete Kafka-Clientrolle (
GKE-Cluster erstellen
In diesem Abschnitt wird beschrieben, wie Sie einen GKE-Cluster erstellen, der den Dienst verwendet Konto, das Sie im vorherigen Schritt erstellt haben.
Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.
Klicken Sie auf add_box Erstellen.
Die Seite Autopilot-Cluster erstellen wird angezeigt.
Ändern Sie auf dem Tab Erweiterte Einstellungen das Dienstkonto zu IAM Dienstkonto, das Sie im vorherigen Schritt erstellt haben.
Konfigurieren Sie bei Bedarf weitere Einstellungen.
Klicken Sie auf Erstellen, um den Cluster zu erstellen.
Kafka Connect-Docker-Image erstellen
In diesem Abschnitt wird beschrieben, wie Sie ein Kafka Connect-Docker-Image für Ihr Thema erstellen und anpassen.
- Klonen Sie das GitHub-Repository für die Pub/Sub Lite-Migration.
Erstellen Sie einen JSON-Kontoschlüssel für das zuvor erstellte IAM-Dienstkonto.
Codieren Sie den JSON-Schlüssel mit einem Base64-Tool. Beispiel:
Linux
base64 -w 0 < my_service_account.json > password.txt
Mac
base64 < account_key_json > password.txt
Aktualisieren Sie in den Secrets-Dateien im GitHub-Repository die folgenden Dateien mit den entsprechenden Informationen, um das Repository mit Ihrem Google Cloud-Projekt, Pub/Sub Lite und Kafka zu verknüpfen.
.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>
Erstellen Sie das Docker-Image, indem Sie die Datei
docker/build-image.sh
ausführen../push-image.sh
Aktualisieren Sie das Image
docker/push-image.sh
mit dem Namen Ihres Google Cloud-Projekts.Übertragen Sie das Image per Push in Artifact Registry, indem Sie die Datei
docker/push-image.sh
ausführen../push-image.sh
Kafka Connect-Arbeitslast bereitstellen
In diesem Abschnitt wird beschrieben, wie Sie das Kafka Connect-Docker-Image in einem Google Kubernetes Engine-Cluster bereitstellen.
- Installieren und konfigurieren Sie kubectl mit dem Authentifizierungs-Plug-in.
- Generieren Sie die kubeconfig für Ihren Google Kubernetes Engine-Cluster.
Google Kubernetes Engine-Dienstkonto mit den richtigen Berechtigungen erstellen und gewähren um die Identität Ihres IAM-Kontos zu übernehmen.
$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
Öffnen Sie die Datei K8s.yaml in einem Texteditor und aktualisieren Sie die folgenden Werte.
- Ersetzen Sie
<workflow_name>
durch den Namen Ihres Kafka Connect-Workflows. - Ersetzen Sie
<gke_service_account>
durch den Namen des Google Kubernetes Engine-Dienstkontos.
- Ersetzen Sie
Führen Sie die Datei „k8s.yaml“ aus.
kubectl create -f k8s.yaml
Dadurch wird eine Kafka Connect-Arbeitslast erstellt, die in Ihrer Google Kubernetes Engine ausgeführt wird und startet den Pub/Sub Lite-Connector, um Daten Pub/Sub Lite-Thema für Google Cloud Managed Service for Apache Kafka
Jobs überwachen
Sobald ein Job ausgeführt wird, können Sie ihn prüfen, indem Sie eine Verbindung zum Kafka Connect-REST-Endpunkt herstellen.
- Rufen Sie in der Google Cloud Console die Seite Bereitstellungsdetails > Arbeitslast auf.
Klicken Sie auf Ihr Kubernetes-Deployment.
Die Seite mit den Bereitstellungsdetails wird geöffnet.
Klicken Sie unter Dienste verfügbar machen auf Freigeben und fügen Sie dann den Port
8083
hinzu.Aktivieren Sie die Portweiterleitung.
Der Standardlink, den Sie beim Einrichten der Portweiterleitung erhalten, gibt wieder Die Ausgabe sollte in etwa so aussehen:
{"version":"3.4.0","commit":"2e1947d240607d53","kafka_cluster_id":"6H6qWA0dQnuK31hBPqYUDg"}
Wenn Sie
/connectors
an den Link anhängen, wird der laufende Connector aufgelistet. Hier einige Beispiele:["PubSubLiteSourceConnector"]
Wenn Sie beispielsweise diesen Link
url:8083/connectors/PubSubLiteSourceConnector/status
anklicken, wird eine Liste mit Aufgaben und deren Status angezeigt.{"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"}
Migration in Phasen
Nachdem Ihr Pub/Sub Lite-Thema zu Kafka migriert wurde, können Sie Ihre Abonnenten und Publisher migrieren. Gehen Sie dazu folgendermaßen vor: Schritte.
Abonnenten migrieren Aktualisieren Sie Ihre Abonnenten, damit sie Kafka-Themen statt Pub/Sub Lite-Themen nutzen.
Dies sollte schrittweise in einer kontrollierten Entwicklungsumgebung erfolgen.
Idealerweise sollten Sie zwei Gruppen von Abonnenten unterhalten, um zu überprüfen, ob identische Nachrichten von Kafka und Pub/Sub Lite empfangen werden. Sobald das korrekte Verhalten bestätigt wurde, können Sie Ihre Pub/Sub Lite-Abonnenten außer Betrieb setzen.
Publisher migrieren Aktualisieren Sie Ihre Publisher, damit sie direkt in Kafka-Themen statt in Pub/Sub Lite-Themen veröffentlichen.
Ähnlich wie bei der Migration von Abonnenten sollte dies schrittweise in einem kontrollierten Entwicklungsumgebung. Wenn duplizierte Daten kein Problem darstellen, können Sie zwei Publisher verwenden, um das Verhalten zu überprüfen. Nachdem du das Verhalten überprüft hast, solltest du deine Pub/Sub Lite-Publisher außer Betrieb setzen.
Nachdem alle Abonnenten und Publisher migriert wurden, nehmen Sie das Migrationstool durch Löschen der Arbeitslast und des Clusters.
Löschen Sie das ursprüngliche Pub/Sub Lite-Thema.