Este tutorial mostra como ingerir mensagens do Pub/Sub no cluster do Serviço Gerenciado para Apache Kafka usando o Kafka Connect.
O Kafka Connect gerencia a movimentação de dados entre o cluster do Kafka e outros sistemas. Neste tutorial, você vai criar um cluster do Connect e um conector de origem do Pub/Sub. O conector de origem do Pub/Sub lê mensagens do seu tópico do Pub/Sub e as grava em um tópico do Kafka.
Antes de começar
Console
- Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
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 theserviceusage.services.enablepermission. Learn how to grant roles.-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
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 theserviceusage.services.enablepermission. Learn how to grant roles.-
Verifique se você tem os seguintes papéis no projeto: Editor de cluster do Kafka gerenciado, Editor de cluster do Kafka Connect gerenciado, Editor de conector Kafka gerenciado, Editor de tópico do Kafka gerenciado, Editor do Pub/Sub
Verificar os papéis
-
No console do Google Cloud , acesse a página IAM.
Acessar IAM - Selecione o projeto.
-
Na coluna Principal, encontre todas as linhas que identificam você ou um grupo no qual você está incluído. Para saber em quais grupos você está incluído, entre em contato com o administrador.
- Em todas as linhas que especificam ou incluem você, verifique a coluna Papel para ver se a lista de papéis inclui os papéis necessários.
Conceder os papéis
-
No console do Google Cloud , acesse a página IAM.
Acessar IAM - Selecione o projeto.
- Clique em Conceder acesso.
-
No campo Novos principais, digite seu identificador de usuário. Normalmente, é o endereço de e-mail de uma Conta do Google.
- Clique em Selecionar um papel e pesquise o papel.
- Para conceder outros papéis, adicione-os clicando em Adicionar outro papel.
- Clique em Salvar.
-
gcloud
- Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
Crie ou selecione um Google Cloud projeto.
Funções necessárias para selecionar ou criar um projeto
- Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
-
Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos
(
roles/resourcemanager.projectCreator), que contém a permissãoresourcemanager.projects.create. Saiba como conceder papéis.
-
Crie um projeto do Google Cloud :
gcloud projects create PROJECT_ID
Substitua
PROJECT_IDpor um nome para o projeto Google Cloud que você está criando. -
Selecione o projeto Google Cloud que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_IDpelo nome do projeto do Google Cloud .
-
Verifique se o faturamento está ativado para o projeto do Google Cloud .
Ative a API Managed Kafka:
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (
roles/serviceusage.serviceUsageAdmin), que contém a permissãoserviceusage.services.enable. Saiba como conceder papéis.gcloud services enable managedkafka.googleapis.com
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
Crie ou selecione um Google Cloud projeto.
Funções necessárias para selecionar ou criar um projeto
- Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
-
Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos
(
roles/resourcemanager.projectCreator), que contém a permissãoresourcemanager.projects.create. Saiba como conceder papéis.
-
Crie um projeto do Google Cloud :
gcloud projects create PROJECT_ID
Substitua
PROJECT_IDpor um nome para o projeto Google Cloud que você está criando. -
Selecione o projeto Google Cloud que você criou:
gcloud config set project PROJECT_ID
Substitua
PROJECT_IDpelo nome do projeto do Google Cloud .
-
Verifique se o faturamento está ativado para o projeto do Google Cloud .
Ative a API Managed Kafka:
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (
roles/serviceusage.serviceUsageAdmin), que contém a permissãoserviceusage.services.enable. Saiba como conceder papéis.gcloud services enable managedkafka.googleapis.com
-
Atribua papéis à sua conta de usuário. Execute uma vez o seguinte comando para cada um dos seguintes papéis do IAM:
roles/managedkafka.clusterEditor, roles/managedkafka.connectClusterEditor, roles/managedkafka.connectorEditor, roles/managedkafka.topicEditor, roles/pubsub.editorgcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Substitua:
PROJECT_ID: o ID do projeto.USER_IDENTIFIER: o identificador da sua conta de usuário . Por exemplo,myemail@example.com.ROLE: o papel do IAM concedido à sua conta de usuário.
Criar um tópico e uma assinatura do Pub/Sub
Nesta etapa, você vai criar um tópico do Pub/Sub com uma assinatura.
Console
Acesse a página Pub/Sub > Tópicos.
Clique em Criar tópico.
Na caixa ID do tópico, insira um nome para o tópico.
Verifique se a caixa de seleção Adicionar uma assinatura padrão está marcada.
Clique em Criar.
gcloud
Para criar um tópico do Pub/Sub, execute o comando
gcloud pubsub topics create.gcloud pubsub topics create TOPIC_IDSubstitua
TOPIC_IDpor um nome para seu tópico do Pub/Sub.Para criar uma assinatura no seu tópico, execute o comando
gcloud pubsub subscriptions create:gcloud pubsub subscriptions create --topic TOPIC_ID SUBSCRIPTION_IDSubstitua
SUBSCRIPTION_IDpor um nome para sua assinatura do Pub/Sub.
Para informações sobre como nomear tópicos e assinaturas do Pub/Sub, consulte Diretrizes para nomear um tópico ou uma assinatura.
Criar recursos do Serviço gerenciado para Apache Kafka
Nesta seção, você vai criar os seguintes recursos do Serviço Gerenciado para Apache Kafka:
- Um cluster do Kafka com um tópico.
- Um cluster do Connect com um conector do Pub/Sub.
Criar um cluster do Kafka
Nesta etapa, você cria um cluster do Serviço Gerenciado para Apache Kafka. A criação de um cluster pode levar até 30 minutos.
Console
- Acesse a página Clusters do Serviço Gerenciado para Apache Kafka >.
- Clique em Criar.
- Na caixa Nome do cluster, insira um nome para o cluster.
- Na lista Região, selecione um local para o cluster.
-
Em Configuração de rede, configure a sub-rede em que o cluster está acessível:
- Em Projeto, selecione o projeto.
- Em Rede, selecione a rede VPC.
- Em Sub-rede, selecione a sub-rede.
- Clique em Concluído.
- Clique em Criar.
Depois de clicar em Criar, o estado do cluster será Creating. Quando o cluster estiver pronto, o estado será Active.
gcloud
Para criar um cluster do Kafka, execute o 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
Substitua:
KAFKA_CLUSTER: um nome para o cluster do KafkaREGION: o local do clusterPROJECT_ID: ID do projeto;SUBNET_NAME: a sub-rede em que você quer criar o cluster, por exemplo,default
Para informações sobre os locais com suporte, consulte Locais do serviço gerenciado para Apache Kafka.
O comando é executado de forma assíncrona e retorna um ID de operação:
Check operation [projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID] for status.
Para acompanhar o progresso da operação de criação, use o comando
gcloud managed-kafka
operations describe:
gcloud managed-kafka operations describe OPERATION_ID \ --location=REGION
Quando o cluster estiver pronto, a saída desse comando vai incluir a entrada state:
ACTIVE. Para mais informações, consulte
Monitorar a
operação de criação de cluster.
Criar um tópico do Kafka
Depois que o cluster do Serviço Gerenciado para Apache Kafka for criado, crie um tópico do Kafka.
Console
Acesse a página Clusters do Serviço Gerenciado para Apache Kafka >.
Clique no nome do cluster.
Na página de detalhes do cluster, clique em Criar tópico.
Na caixa Nome do tópico, insira um nome para o tópico.
Clique em Criar.
gcloud
Para criar um tópico do Kafka, execute o comando
managed-kafka topics create.
gcloud managed-kafka topics create KAFKA_TOPIC_NAME \
--cluster=KAFKA_CLUSTER \
--location=REGION \
--partitions=10 \
--replication-factor=3
Substitua:
KAFKA_TOPIC_NAME: o nome do tópico do Kafka a ser criado.KAFKA_CLUSTER: o nome do cluster do Kafka.REGION: a região em que você criou o cluster do Kafka
Criar um cluster do Connect
Nesta etapa, você vai criar um cluster do Connect. A criação de um cluster do Connect pode levar até 30 minutos.
Antes de iniciar esta etapa, verifique se o cluster do Serviço gerenciado para Apache Kafka foi totalmente criado.
Console
Acesse a página Serviço Gerenciado para Apache Kafka > Clusters do Connect.
Clique em Criar.
Em Nome do cluster do Connect, insira uma string. Por exemplo:
my-connect-cluster.Em Cluster principal do Kafka, selecione o Kafka que você criou anteriormente.
Clique em Criar.
Enquanto o cluster está sendo criado, o estado dele é Creating. Quando o cluster terminar de ser criado, o estado será Active.
gcloud
Para criar um cluster do Connect, execute o 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
Substitua:
CONNECT_CLUSTER: um nome para o cluster do Connect.REGION: a região em que você criou o cluster do KafkaPROJECT_ID: ID do projeto;SUBNET_NAME: a sub-rede em que você criou o cluster do Kafka.KAFKA_CLUSTER: o nome do cluster do Kafka.
O comando é executado de forma assíncrona e retorna um ID de operação:
Check operation [projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID] for status.
Para acompanhar o progresso da operação de criação, use o comando
gcloud managed-kafka operations describe:
gcloud managed-kafka operations describe OPERATION_ID \
--location=REGION
Para mais informações, consulte Monitorar a operação de criação do cluster.
Conceder papéis do IAM
Conceda os seguintes papéis do Identity and Access Management (IAM) à conta de serviço do Managed Kafka:
- Assinante do Pub/Sub
- Leitor do Pub/Sub
Essas funções permitem que os conectores leiam mensagens do Pub/Sub.
Console
No console do Google Cloud , acesse a página IAM.
Selecione Incluir concessões de papel fornecidas pelo Google.
Encontre a linha da conta de serviço do Kafka gerenciado e clique em Editar principal.
Clique em Adicionar outro papel e selecione Assinante do Pub/Sub. Repita essa etapa para o papel Leitor do Pub/Sub.
Clique em Salvar.
Para mais informações sobre como conceder papéis, consulte Conceder um papel do IAM usando o console.
gcloud
Para conceder papéis do IAM à conta de serviço, execute o 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
Substitua:
PROJECT_ID: ID do projeto;PROJECT_NUMBER: o ID do seu projeto
Para encontrar o número do projeto, use o
comando gcloud projects describe.
Criar um conector de origem do Pub/Sub
Nesta etapa, você cria um conector de origem do Pub/Sub. Esse conector lê mensagens do Pub/Sub e as grava em um tópico do Kafka.
Console
Acesse a página Serviço Gerenciado para Apache Kafka > Clusters do Connect.
Clique no nome do cluster do Connect.
Clique em Criar conector.
Em Nome do conector, insira uma string. Exemplo:
pubsub-source.Na lista Plug-in do conector, selecione
Pub/Sub Source.Em Inscrição do Cloud Pub/Sub, selecione o Pub/Sub padrão criado quando você criou o tópico do Pub/Sub.
Em Tópico do Kafka, selecione o tópico que você criou anteriormente.
Clique em Criar.
gcloud
Para criar um conector de origem do Pub/Sub, execute o 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
Substitua:
PUBSUB_CONNECTOR_NAME: um nome para o conector, comopubsub-source-connectorCONNECT_CLUSTER: o nome do cluster do ConnectREGION: a região em que você criou o cluster do ConnectPROJECT_ID: ID do projeto;KAFKA_TOPIC_NAME: o nome do seu tópico do KafkaSUBSCRIPTION_ID: o nome da sua assinatura do Pub/Sub
Ver resultados
Para conferir os resultados, publique algumas mensagens no Pub/Sub.
Console
No console Google Cloud , acesse a página Pub/Sub > Tópicos.
Na lista de tópicos, clique no nome do seu tópico do Pub/Sub.
Clique em Mensagens.
Clique em Publicar mensagens.
Em Número de mensagens, insira
10.Em Corpo da mensagem, digite
{"name": "Alice", "customer_id": 1}.Clique em Publicar.
gcloud
Para publicar mensagens no seu tópico do Pub/Sub, use o comando
gcloud pubsub topics publish.
for run in {1..10}; do
gcloud pubsub topics publish TOPIC_ID --message='{"name": "Alice", "customer_id": 1}'
done
Substitua TOPIC_ID pelo nome do seu tópico do Pub/Sub.
Agora você pode consumir as mensagens do tópico do Kafka. Para mais informações, consulte Produzir e consumir mensagens com a CLI.
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
Console
Exclua o tópico do Pub/Sub.
Acesse a página Pub/Sub > Tópicos.
Selecione o tópico e clique em Excluir.
Exclua a assinatura do Pub/Sub.
Acesse a página Pub/Sub > Assinaturas.
Selecione a assinatura criada com seu tópico e clique em Excluir.
Exclua o cluster do Connect.
Acesse a página Serviço Gerenciado para Apache Kafka > Clusters do Connect.
Selecione o cluster do Connect e clique em Excluir.
Exclua o cluster do Kafka.
Acesse a página Clusters do Serviço Gerenciado para Apache Kafka >.
Selecione o cluster do Kafka e clique em Excluir.
gcloud
Para excluir a assinatura e o tópico do Pub/Sub, use os comandos
gcloud pubsub subscriptions deleteegcloud pubsub topics delete.gcloud pubsub subscriptions delete SUBSCRIPTION_ID gcloud pubsub topics delete TOPIC_IDPara excluir o cluster do Connect, use o comando
gcloud managed-kafka connect-clusters delete.gcloud managed-kafka connect-clusters delete CONNECT_CLUSTER \ --location=REGION --asyncPara excluir o cluster do Kafka, use o comando
gcloud managed-kafka clusters delete.gcloud managed-kafka clusters delete KAFKA_CLUSTER \ --location=REGION --async
A seguir
- Solucione problemas de um conector do Pub/Sub.
- Saiba mais sobre o conector de origem do Pub/Sub.
- Saiba mais sobre o Kafka Connect.