Produrre e utilizzare messaggi con gli strumenti a riga di comando di Kafka

Scopri come utilizzare gli strumenti a riga di comando di Kafka per connetterti a un cluster Managed Service per Apache Kafka, produrre messaggi e utilizzarli.

Prima di iniziare

Prima di iniziare questo tutorial, crea un nuovo cluster Managed Service per Apache Kafka. Se hai già un cluster, puoi saltare questo passaggio.

Come creare un cluster

Console

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

    Vai a Cluster

  2. Fai clic su Crea.
  3. Nella casella Nome 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 il cluster è accessibile:
    1. In 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 managed-kafka clusters create comando.

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 località 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 gcloud managed-kafka operations describe comando:

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.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare e configurare una VM client, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Crea una VM client

Crea un'istanza di macchina virtuale (VM) Linux in Compute Engine che possa accedere al cluster Kafka. Quando configuri la VM, imposta le seguenti opzioni:

  • Regione. Crea la VM nella stessa regione del cluster Kafka.

  • Subnet. Crea la VM nella stessa rete VPC della subnet che hai utilizzato nella configurazione del cluster Kafka. Per saperne di più, consulta Visualizzare le subnet di un cluster.

  • Ambiti di accesso. Assegna l'https://www.googleapis.com/auth/cloud-platform ambito di accesso alla VM. Questo ambito autorizza la VM a inviare richieste all'API Managed Kafka.

I passaggi seguenti mostrano come impostare queste opzioni.

Console

  1. Nella Google Cloud console, vai alla pagina Crea un'istanza.

    Crea un'istanza

  2. Nel riquadro Configurazione macchina, segui questi passaggi:

    1. Nel campo Nome, specifica un nome per l'istanza. Per ulteriori informazioni, consulta le convenzioni per la denominazione delle risorse.

    2. Nell'elenco Regione, seleziona la stessa regione del cluster Kafka.

    3. Nell'elenco Zona, seleziona una zona.

  3. Nel menu di navigazione, fai clic su Networking. Nel riquadro Networking visualizzato, segui questi passaggi:

    1. Vai alla sezione Interfacce di rete.

    2. Per espandere l'interfaccia di rete predefinita, fai clic sulla freccia.

    3. Nel campo Rete, scegli la rete VPC.

    4. Nell'elenco Subnet, seleziona la subnet.

    5. Fai clic su Fine.

  4. Nel menu di navigazione, fai clic su Sicurezza. Nel riquadro Sicurezza visualizzato, segui questi passaggi:

    1. Per Ambiti di accesso, seleziona Imposta l'accesso per ogni API.

    2. Nell'elenco degli ambiti di accesso, trova l'elenco a discesa Cloud Platform e seleziona Attivato.

  5. Fai clic su Crea per creare la VM.

gcloud

Per creare l'istanza VM, utilizza il gcloud compute instances create comando.

gcloud compute instances create VM_NAME \
  --scopes=https://www.googleapis.com/auth/cloud-platform \
  --subnet=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET \
  --zone=ZONE

Sostituisci quanto segue:

  • VM_NAME: il nome della VM
  • PROJECT_ID: il tuo ID progetto
  • REGION: la regione in cui hai creato il cluster Kafka, ad esempio us-central1
  • SUBNET: una subnet nella stessa rete VPC della subnet che hai utilizzato nella configurazione del cluster
  • ZONE: una zona nella regione in cui hai creato il cluster, ad esempio us-central1-c

Per saperne di più sulla creazione di una VM, consulta Crea un'istanza VM in una subnet specifica.

Concedi ruoli IAM

Concedi i seguenti ruoli Identity and Access Management (IAM) al service account predefinito di Compute Engine:

  • Managed Kafka Client (roles/managedkafka.client)
  • Creatore token account di servizio (roles/iam.serviceAccountTokenCreator)
  • Creatore token OpenID account di servizio (roles/iam.serviceAccountOpenIdTokenCreator)

Console

  1. Nella Google Cloud console vai alla pagina IAM.

    Vai a IAM

  2. Trova la riga relativa a Account di servizio predefinito Compute Engine e fai clic Modifica entità.

  3. Fai clic su Aggiungi un altro ruolo e seleziona il ruolo Managed Kafka Client. Ripeti questo passaggio per i ruoli Creatore token account di servizio e Creatore token OpenID account di servizio.

  4. Fai clic su Salva.

gcloud

Per concedere i ruoli IAM, utilizza il gcloud projects add-iam-policy-binding comando.

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
  --role=roles/managedkafka.client

gcloud projects add-iam-policy-binding PROJECT_ID\
  --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
  --role=roles/iam.serviceAccountTokenCreator

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
  --role=roles/iam.serviceAccountOpenIdTokenCreator

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto

  • PROJECT_NUMBER: il numero del progetto

Per ottenere il numero di progetto, esegui il gcloud projects describe comando:

gcloud projects describe PROJECT_ID

Per saperne di più, consulta Trovare il nome, il numero e l'ID del progetto.

Connettiti alla VM

Utilizza SSH per connetterti all'istanza VM.

Console

  1. Vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Nell'elenco delle istanze VM, trova il nome della VM e fai clic su SSH.

gcloud

Per connetterti alla VM, utilizza il gcloud compute ssh comando.

gcloud compute ssh VM_NAME \
  --project=PROJECT_ID \
  --zone=ZONE

Sostituisci quanto segue:

  • VM_NAME: il nome della VM
  • PROJECT_ID: il tuo ID progetto
  • ZONE: la zona in cui hai creato la VM

Potrebbe essere necessaria una configurazione aggiuntiva per il primo utilizzo di SSH. Per saperne di più, consulta Informazioni sulle connessioni SSH.

Installa gli strumenti a riga di comando di Kafka

Dalla sessione SSH, esegui i seguenti comandi per installare gli strumenti a riga di comando di Kafka.

  1. Installa Java, necessario per eseguire gli strumenti a riga di comando di Kafka, e wget per facilitare il download delle dipendenze. I comandi seguenti presuppongono che tu stia utilizzando un ambiente Debian Linux.

    sudo apt-get install default-jre wget
    
  2. Installa gli strumenti a riga di comando di Kafka.

    wget -O kafka_2.13-3.7.2.tgz https://archive.apache.org/dist/kafka/3.7.2/kafka_2.13-3.7.2.tgz
    tar xfz kafka_2.13-3.7.2.tgz
    
  3. Imposta le seguenti variabili di ambiente:

    export KAFKA_HOME=$(pwd)/kafka_2.13-3.7.2
    export PATH=$PATH:$KAFKA_HOME/bin
    export CLASSPATH=$CLASSPATH:$KAFKA_HOME/libs/release-and-dependencies/*:$KAFKA_HOME/libs/release-and-dependencies/dependency/*
    

Configura l'autenticazione

Dalla sessione SSH, segui questi passaggi per configurare la libreria di autenticazione di Managed Service per Apache Kafka.

  1. Scarica la libreria e installala localmente.

    wget https://github.com/googleapis/managedkafka/releases/download/v1.0.5/release-and-dependencies.zip
    sudo apt-get install unzip
    unzip -n -j release-and-dependencies.zip -d $KAFKA_HOME/libs/
    

    Questo comando installa la libreria nella directory lib della directory di installazione di Kafka. Gli strumenti a riga di comando di Kafka cercano le dipendenze Java in questa directory.

  2. Con un editor di testo, crea un file denominato client.properties e incolla quanto segue:

    security.protocol=SASL_SSL
    sasl.mechanism=OAUTHBEARER
    sasl.login.callback.handler.class=com.google.cloud.hosted.kafka.auth.GcpLoginCallbackHandler
    sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required;
    

    Salva il file. Questo file configura un client Kafka con le seguenti impostazioni:

    • Utilizza SASL_SSL per la comunicazione sicura con il cluster Kafka.

    • Utilizza i token di connessione OAuth 2.0 per l'autenticazione.

    • Utilizza la classe fornita dalla libreria GcpLoginCallbackHandler come gestore callback di accesso per ottenere i token OAuth 2.0.

Produci e utilizza messaggi

Dalla sessione SSH, esegui i seguenti comandi per produrre e utilizzare i messaggi Kafka.

  1. Imposta l'indirizzo di bootstrap come variabile di ambiente.

    export BOOTSTRAP=$(gcloud managed-kafka clusters describe CLUSTER_ID \
     --location=LOCATION \
     --project=PROJECT_ID\
     --format="value(bootstrapAddress)"
    )
    

    Sostituisci quanto segue:

    • CLUSTER_ID: il nome del tuo cluster
    • LOCATION: la località in cui hai creato il cluster
    • PROJECT_ID: il tuo ID progetto

    Per saperne di più, consulta Ottenere l'indirizzo di bootstrap.

  2. Elenca gli argomenti nel cluster.

    kafka-topics.sh --list \
      --bootstrap-server $BOOTSTRAP \
      --command-config client.properties
    
  3. Scrivi un messaggio in un argomento.

    echo "hello world" | kafka-console-producer.sh \
      --topic KAFKA_TOPIC_NAME \
      --bootstrap-server $BOOTSTRAP \
      --producer.config client.properties
    

    Sostituisci KAFKA_TOPIC_NAME con il nome dell'argomento.

  4. Utilizza i messaggi dell'argomento.

    kafka-console-consumer.sh \
      --topic KAFKA_TOPIC_NAME \
      --from-beginning \
      --bootstrap-server $BOOTSTRAP \
      --consumer.config client.properties
    

    Per interrompere l'utilizzo dei messaggi, inserisci Ctrl+C.

  5. Esegui un test delle prestazioni del produttore.

    kafka-producer-perf-test.sh \
      --topic KAFKA_TOPIC_NAME \
      --num-records 1000000 --throughput 1000 --print-metrics --record-size 1024 \
      --producer-props bootstrap.servers=$BOOTSTRAP \
      --producer.config client.properties
    

Libera spazio

Per evitare che al tuo Google Cloud account vengano addebitati costi relativi alle risorse utilizzate in questa pagina, segui questi passaggi.

Console

  1. Elimina l'istanza VM.

    1. Vai alla pagina Istanze VM.

      Vai a Istanze VM

    2. Seleziona la VM e fai clic su Elimina.

  2. 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 la VM, utilizza il gcloud compute instances delete comando.

    gcloud compute instances delete VM_NAME --zone=ZONE
    
  2. Per eliminare il cluster Kafka, utilizza il gcloud managed-kafka clusters delete comando.

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

Passaggi successivi

Apache Kafka® è un marchio registrato di The Apache Software Foundation o delle sue affiliate negli Stati Uniti e/o in altri paesi.