Replica i messaggi Pub/Sub in Kafka

Questo tutorial mostra come importare i messaggi da Pub/Sub nel cluster Managed Service per Apache Kafka utilizzando Kafka Connect.

Kafka Connect gestisce lo spostamento dei dati tra il cluster Kafka e altri sistemi. In questo tutorial creerai un cluster di connessione e un connettore di origine Pub/Sub. Il connettore di origine Pub/Sub legge i messaggi dall'argomento Pub/Sub e li scrive in un argomento Kafka.

Prima di iniziare

Console

  1. Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei 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. Assicurati di disporre dei seguenti ruoli nel progetto: Editor cluster Managed Kafka, Editor cluster Managed Kafka Connect, Editor connettore Managed Kafka, Editor argomento Managed Kafka, Editor Pub/Sub

    Controlla i ruoli

    1. Nella console Google Cloud vai alla pagina IAM.

      Vai a IAM
    2. Seleziona il progetto.
    3. Nella colonna Entità, trova tutte le righe che identificano te o un gruppo di cui fai parte. Per scoprire a quali gruppi appartieni, contatta il tuo amministratore.

    4. Per tutte le righe che ti specificano o ti includono, controlla la colonna Ruolo per verificare se l'elenco dei ruoli include i ruoli richiesti.

    Concedi i ruoli

    1. Nella console Google Cloud vai alla pagina IAM.

      Vai a IAM
    2. Seleziona il progetto.
    3. Fai clic su Concedi l'accesso.
    4. Nel campo Nuove entità, inserisci il tuo identificatore dell'utente. In genere si tratta dell'indirizzo email di un Account Google.

    5. Fai clic su Seleziona un ruolo, quindi cerca il ruolo.
    6. Per concedere altri ruoli, fai clic su Aggiungi un altro ruolo e aggiungi ogni ruolo successivo.
    7. Fai clic su Salva.

gcloud

  1. Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
  2. Installa Google Cloud CLI.

  3. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  4. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  5. Crea o seleziona un Google Cloud progetto.

    Ruoli richiesti per selezionare o creare un progetto

    • Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto per il quale ti è stato concesso un ruolo.
    • Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto (roles/resourcemanager.projectCreator), che contiene l'autorizzazione resourcemanager.projects.create. Scopri come concedere i ruoli.
    • Creare un progetto Google Cloud :

      gcloud projects create PROJECT_ID

      Sostituisci PROJECT_ID con un nome per il progetto Google Cloud che stai creando.

    • Seleziona il progetto Google Cloud che hai creato:

      gcloud config set project PROJECT_ID

      Sostituisci PROJECT_ID con il nome del progetto Google Cloud .

  6. Verifica che la fatturazione sia abilitata per il tuo progetto Google Cloud .

  7. Abilita l'API Managed Kafka:

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin), che include l'autorizzazione serviceusage.services.enable. Scopri come concedere i ruoli.

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

  9. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  10. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  11. Crea o seleziona un Google Cloud progetto.

    Ruoli richiesti per selezionare o creare un progetto

    • Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto per il quale ti è stato concesso un ruolo.
    • Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto (roles/resourcemanager.projectCreator), che contiene l'autorizzazione resourcemanager.projects.create. Scopri come concedere i ruoli.
    • Creare un progetto Google Cloud :

      gcloud projects create PROJECT_ID

      Sostituisci PROJECT_ID con un nome per il progetto Google Cloud che stai creando.

    • Seleziona il progetto Google Cloud che hai creato:

      gcloud config set project PROJECT_ID

      Sostituisci PROJECT_ID con il nome del progetto Google Cloud .

  12. Verifica che la fatturazione sia abilitata per il tuo progetto Google Cloud .

  13. Abilita l'API Managed Kafka:

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin), che include l'autorizzazione serviceusage.services.enable. Scopri come concedere i ruoli.

    gcloud services enable managedkafka.googleapis.com
  14. Concedi ruoli al tuo account utente. Esegui il seguente comando una volta per ciascuno dei seguenti ruoli IAM: 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

    Sostituisci quanto segue:

    • PROJECT_ID: il tuo ID progetto.
    • USER_IDENTIFIER: l'identificatore del tuo account utente . Ad esempio: myemail@example.com.
    • ROLE: il ruolo IAM che concedi al tuo account utente.

Crea un argomento e una sottoscrizione Pub/Sub

In questo passaggio, crea un argomento Pub/Sub con una sottoscrizione.

Console

  1. Vai alla pagina Pub/Sub > Argomenti.

    Vai ad Argomenti

  2. Fai clic su Crea argomento.

  3. Nella casella ID argomento, inserisci un nome per l'argomento.

  4. Assicurati che la casella di controllo Aggiungi una sottoscrizione predefinita sia selezionata.

  5. Fai clic su Crea.

gcloud

  1. Per creare un argomento Pub/Sub, esegui il comando gcloud pubsub topics create.

    gcloud pubsub topics create TOPIC_ID
    

    Sostituisci TOPIC_ID con un nome per l'argomento Pub/Sub.

  2. Per creare una sottoscrizione all'argomento, esegui il comando gcloud pubsub subscriptions create:

    gcloud pubsub subscriptions create --topic TOPIC_ID SUBSCRIPTION_ID
    

    Sostituisci SUBSCRIPTION_ID con un nome per l'abbonamento Pub/Sub.

Per informazioni su come denominare argomenti e sottoscrizioni Pub/Sub, consulta le linee guida per la denominazione di un argomento o una sottoscrizione.

Crea risorse Managed Service per Apache Kafka

In questa sezione crei le seguenti risorse Managed Service per Apache Kafka:

  • Un cluster Kafka con un argomento.
  • Un cluster Connect con un connettore Pub/Sub.

Crea un cluster Kafka

In questo passaggio, crei un cluster Managed Service per Apache Kafka. La creazione di un cluster può richiedere fino a 30 minuti.

Console

  1. Vai alla pagina Managed Service per Apache Kafka > Cluster.

    Vai a Cluster

  2. Fai clic su Crea.
  3. Nella casella Nome del cluster, inserisci un nome per il cluster.
  4. Nell'elenco Regione, seleziona una località per il cluster.
  5. Per Configurazione di rete, configura la subnet in cui è accessibile il cluster:
    1. Per Progetto, seleziona il tuo progetto.
    2. In Rete, seleziona la rete VPC.
    3. In Subnet, seleziona la subnet.
    4. Fai clic su Fine.
  6. Fai clic su Crea.

Dopo aver fatto clic su Crea, lo stato del cluster è Creating. Quando il cluster è pronto, lo stato è Active.

gcloud

Per creare un cluster Kafka, esegui il comando 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

Sostituisci quanto segue:

  • KAFKA_CLUSTER: un nome per il cluster Kafka
  • REGION: la posizione del cluster
  • PROJECT_ID: il tuo ID progetto
  • SUBNET_NAME: la subnet in cui vuoi creare il cluster, ad esempio default

Per informazioni sulle località supportate, consulta Località di Managed Service per Apache Kafka.

Il comando viene eseguito in modo asincrono e restituisce un ID operazione:

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

Per monitorare l'avanzamento dell'operazione di creazione, utilizza il comando gcloud managed-kafka operations describe:

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

Quando il cluster è pronto, l'output di questo comando include la voce state: ACTIVE. Per saperne di più, consulta Monitorare l'operazione di creazione del cluster.

Crea un argomento Kafka

Dopo aver creato il cluster Managed Service per Apache Kafka, crea un argomento Kafka.

Console

  1. Vai alla pagina Managed Service per Apache Kafka > Cluster.

    Vai a Cluster

  2. Fai clic sul nome del cluster.

  3. Nella pagina dei dettagli del cluster, fai clic su Crea argomento.

  4. Nella casella Nome argomento, inserisci un nome per l'argomento.

  5. Fai clic su Crea.

gcloud

Per creare un argomento Kafka, esegui il comando managed-kafka topics create.

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

Sostituisci quanto segue:

  • KAFKA_TOPIC_NAME: il nome dell'argomento Kafka da creare
  • KAFKA_CLUSTER: il nome del cluster Kafka
  • REGION: la regione in cui hai creato il cluster Kafka

Crea un cluster di connessione

In questo passaggio, crei un cluster di connessione. La creazione di un cluster Connect può richiedere fino a 30 minuti.

Prima di iniziare questo passaggio, assicurati che il cluster Managed Service per Apache Kafka sia stato creato completamente.

Console

  1. Vai alla pagina Managed Service per Apache Kafka > Connetti cluster.

    Vai a Connetti cluster

  2. Fai clic su Crea.

  3. Per il nome del cluster di connessione, inserisci una stringa. Esempio: my-connect-cluster.

  4. Per Cluster Kafka principale, seleziona il cluster Kafka che hai creato in precedenza.

  5. Fai clic su Crea.

Durante la creazione del cluster, lo stato del cluster è Creating. Al termine della creazione del cluster, lo stato è Active.

gcloud

Per creare un cluster di connessione, esegui il comando 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

Sostituisci quanto segue:

  • CONNECT_CLUSTER: un nome per il cluster Connect
  • REGION: la regione in cui hai creato il cluster Kafka
  • PROJECT_ID: il tuo ID progetto
  • SUBNET_NAME: la subnet in cui hai creato il cluster Kafka
  • KAFKA_CLUSTER: il nome del cluster Kafka

Il comando viene eseguito in modo asincrono e restituisce un ID operazione:

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

Per monitorare l'avanzamento dell'operazione di creazione, utilizza il comando gcloud managed-kafka operations describe:

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

Per saperne di più, consulta Monitorare l'operazione di creazione del cluster.

Concedi ruoli IAM

Concedi i seguenti ruoli IAM (Identity and Access Management) al account di servizio gestito Kafka:

  • Abbonato Pub/Sub
  • Pub/Sub Viewer

Questi ruoli consentono ai connettori di leggere i messaggi da Pub/Sub.

Console

  1. Nella console Google Cloud vai alla pagina IAM.

    Vai a IAM

  2. Seleziona Includi concessioni di ruoli fornite da Google.

  3. Trova la riga relativa a Account di servizio gestito Kafka e fai clic su Modifica entità.

  4. Fai clic su Aggiungi un altro ruolo e seleziona il ruolo Sottoscrittore Pub/Sub. Ripeti questo passaggio per il ruolo Visualizzatore Pub/Sub.

  5. Fai clic su Salva.

Per saperne di più sulla concessione dei ruoli, consulta Concedi un ruolo IAM utilizzando la console.

gcloud

Per concedere ruoli IAM al account di servizio, esegui il comando 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

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto
  • PROJECT_NUMBER: il numero del progetto

Per trovare il numero di progetto, utilizza il comando gcloud projects describe.

Crea un connettore di origine Pub/Sub

In questo passaggio crei un connettore di origine Pub/Sub. Questo connettore legge i messaggi da Pub/Sub e li scrive in un argomento Kafka.

Console

  1. Vai alla pagina Managed Service per Apache Kafka > Connetti cluster.

    Vai a Connetti cluster

  2. Fai clic sul nome del cluster di connessione.

  3. Fai clic su Crea connettore.

  4. Per Nome connettore, inserisci una stringa. Esempio: pubsub-source.

  5. Nell'elenco Plug-in connettore, seleziona Pub/Sub Source.

  6. In Abbonamento Cloud Pub/Sub, seleziona l'abbonamento Pub/Sub predefinito creato quando hai creato l'argomento Pub/Sub.

  7. Per Argomento Kafka, seleziona l'argomento Kafka che hai creato in precedenza.

  8. Fai clic su Crea.

gcloud

Per creare un connettore di origine Pub/Sub, esegui il comando 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

Sostituisci quanto segue:

  • PUBSUB_CONNECTOR_NAME: un nome per il connettore, ad esempio pubsub-source-connector
  • CONNECT_CLUSTER: il nome del cluster Connect
  • REGION: la regione in cui hai creato il cluster Connect
  • PROJECT_ID: il tuo ID progetto
  • KAFKA_TOPIC_NAME: il nome dell'argomento Kafka
  • SUBSCRIPTION_ID: il nome dell'iscrizione Pub/Sub

Visualizza risultati

Per visualizzare i risultati, pubblica alcuni messaggi su Pub/Sub.

Console

  1. Nella console Google Cloud , vai alla pagina Pub/Sub > Argomenti.

    Vai ad Argomenti

  2. Nell'elenco degli argomenti, fai clic sul nome dell'argomento Pub/Sub.

  3. Fai clic su Messaggi.

  4. Fai clic su Pubblica messaggi.

  5. In Numero di messaggi, inserisci 10.

  6. In Corpo del messaggio, inserisci {"name": "Alice", "customer_id": 1}.

  7. Fai clic su Pubblica.

gcloud

Per pubblicare messaggi nell'argomento Pub/Sub, utilizza il comando gcloud pubsub topics publish.

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

Sostituisci TOPIC_ID con il nome dell'argomento Pub/Sub.

Ora puoi utilizzare i messaggi dell'argomento Kafka. Per saperne di più, consulta Produci e utilizza messaggi con la CLI.

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.

Console

  1. Elimina l'argomento Pub/Sub.

    1. Vai alla pagina Pub/Sub > Argomenti.

      Vai ad Argomenti

    2. Seleziona l'argomento e fai clic su Elimina.

  2. Elimina la sottoscrizione Pub/Sub.

    1. Vai alla pagina Pub/Sub > Abbonamenti.

      Vai ad Abbonamenti

    2. Seleziona l'abbonamento creato con l'argomento e fai clic su Elimina.

  3. Elimina il cluster di connessione.

    1. Vai alla pagina Managed Service per Apache Kafka > Connetti cluster.

      Vai a Connetti cluster

    2. Seleziona il cluster Connect e fai clic su Elimina.

  4. Elimina il cluster Kafka.

    1. Vai alla pagina Managed Service per Apache Kafka > Cluster.

      Vai a Cluster

    2. Seleziona il cluster Kafka e fai clic su Elimina.

gcloud

  1. Per eliminare l'argomento e la sottoscrizione Pub/Sub, utilizza i comandi gcloud pubsub subscriptions delete e gcloud pubsub topics delete.

    gcloud pubsub subscriptions delete SUBSCRIPTION_ID
    gcloud pubsub topics delete TOPIC_ID
    
  2. Per eliminare il cluster Connect, utilizza il comando gcloud managed-kafka connect-clusters delete.

    gcloud managed-kafka connect-clusters delete CONNECT_CLUSTER \
      --location=REGION --async
    
  3. Per eliminare il cluster Kafka, utilizza il comando gcloud managed-kafka clusters delete.

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

Passaggi successivi