Este documento detalha como migrar dados de um tópico do Pub/Sub Lite para um tópico do Serviço gerenciado para Apache Kafka.
Antes de começar
- Ative a API Google Kubernetes Engine.
- Identifique um tópico do Pub/Sub Lite para migrar. Escolha um nome para o tópico de destino no serviço gerenciado do Google Cloud para Apache Kafka. Determine também para qual serviço gerenciado para cluster do Apache Kafka você está migrando.
Fluxo de trabalho de migração
Para migrar seus dados, conclua as seguintes tarefas. Os detalhes específicos dessas tarefas são mostrados mais adiante nesta página.
- Crie uma conta de serviço do Google Kubernetes Engine.
- Criar um cluster do Google Kubernetes Engine.
- Personalize uma imagem do Docker com os detalhes de configuração dos seus tópicos.
Implante a imagem do Docker em um cluster do Google Kubernetes Engine.
Na imagem, o Kafka Connect e o plug-in do Pub/Sub Lite para Kafka Connect são usados para se inscrever em uma nova assinatura do Pub/Sub Lite e publicar no serviço gerenciado para Apache Kafka.
Criar uma conta de serviço do Google Kubernetes Engine
Esta seção descreve como criar uma conta de serviço do IAM com as permissões necessárias para executar um cluster do Google Kubernetes Engine.
No console do Google Cloud, crie uma nova conta de serviço do IAM com as permissões mínimas necessárias para operar o Google Kubernetes Engine.
Conceda os seguintes papéis do IAM à conta de serviço. Esses papéis facilitam o processo de migração.
- Função de cliente do Kafka gerenciado (
roles/managedkafka.client
) - Função de assinante do Pub/Sub Lite (
roles/pubsublite.subscriber
) - Função de leitor do Pub/Sub Lite (
roles/pubsublite.Viewer
) - Função de leitor do Artifact Registry (
roles/artifactregistry.reader
)
- Função de cliente do Kafka gerenciado (
Criar um cluster do GKE
Esta seção descreve como criar um cluster do GKE que usa a conta de serviço criada na etapa anterior.
Acesse a página Google Kubernetes Engine no console do Google Cloud.
Clique em add_box Criar.
A página Criar um cluster do Autopilot é exibida.
Na guia Configurações avançadas, mude a conta de serviço para a conta de serviço do IAM que você criou na etapa anterior.
Se quiser, configure outras configurações conforme necessário.
Para criar o cluster, clique em Criar.
Criar uma imagem do Docker do Kafka Connect
Esta seção descreve como criar e personalizar uma imagem do Docker do Kafka Connect para seu tópico.
- Clone o repositório do GitHub da migração do Pub/Sub Lite.
Para a conta de serviço do IAM que você criou anteriormente, gere uma chave de conta JSON.
Use uma ferramenta base64 para codificar a chave JSON. Por exemplo,
Linux
base64 -w 0 < my_service_account.json > password.txt
Mac
base64 < account_key_json > password.txt
Nos arquivos de segredos no repositório do GitHub, atualize os seguintes arquivos com as informações adequadas para vincular o repositório ao seu projeto do Google Cloud, ao Pub/Sub Lite e ao 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>
Crie a imagem do Docker executando o arquivo
docker/build-image.sh
../push-image.sh
Atualize a imagem
docker/push-image.sh
com o nome do projeto do Google Cloud.Envie a imagem para o Artifact Registry executando o arquivo
docker/push-image.sh
../push-image.sh
Implantar uma carga de trabalho do Kafka Connect
Esta seção descreve como implantar a imagem do Kafka Connect em um cluster do Google Kubernetes Engine.
- Instale e configure o kubectl com o plug-in de autenticação.
- Gere o kubeconfig para seu cluster do Google Kubernetes Engine.
Crie e conceda a uma conta de serviço do Google Kubernetes Engine as permissões corretas para imitar sua conta do IAM.
$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
Abra o arquivo K8s.yaml em um editor de texto e atualize os seguintes valores.
- Substitua
<workflow_name>
pelo nome do fluxo de trabalho do Kafka Connect. - Substitua
<gke_service_account>
pelo nome da conta de serviço do Google Kubernetes Engine.
- Substitua
Execute o arquivo K8s.yaml.
kubectl create -f k8s.yaml
Isso cria uma carga de trabalho do Kafka Connect em execução no cluster do Google Kubernetes Engine e inicia o conector do Pub/Sub Lite para transferir dados do tópico do Pub/Sub Lite para o Google Cloud Managed Service para Apache Kafka.
Monitorar um job
Quando um job estiver em execução, você poderá inspecionar o endpoint REST do Kafka Connect.
- No console do Google Cloud, acesse a página Detalhes da implantação > Carga de trabalho.
Clique na sua implantação do Kubernetes.
A página de detalhes da implantação é aberta.
Em Como expor serviços, clique em Expor e adicione a porta
8083
.Ative o encaminhamento de portas.
O link padrão que você recebe ao configurar o encaminhamento de portas retorna uma saída semelhante a esta:
{"version":"3.4.0","commit":"2e1947d240607d53","kafka_cluster_id":"6H6qWA0dQnuK31hBPqYUDg"}
Se você anexar o
/connectors
ao link, ele vai listar o conector em execução. Por exemplo:["PubSubLiteSourceConnector"]
Por exemplo, verificar este link
url:8083/connectors/PubSubLiteSourceConnector/status
gera uma lista de tarefas e o status delas.{"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"}
Migração por etapas
Depois que o tópico do Pub/Sub Lite for migrado para o Kafka, você poderá migrar os assinantes e editores. Para fazer isso, siga estas etapas.
Migrar assinantes. Atualize os assinantes para consumir tópicos do Kafka em vez de tópicos do Pub/Sub Lite.
Isso deve ser feito gradualmente em um ambiente de desenvolvimento controlado.
O ideal é manter dois conjuntos de assinantes para verificar se mensagens idênticas são recebidas do Kafka e do Pub/Sub Lite. Depois que o comportamento correto for verificado, você poderá desativar os assinantes do Pub/Sub Lite.
Migrar editores. Atualize os editores para publicar diretamente em tópicos do Kafka em vez de tópicos do Pub/Sub Lite.
Assim como a migração de assinantes, isso precisa ser feito gradualmente em um ambiente de desenvolvimento controlado. Se os dados duplicados não forem um problema, você poderá manter dois conjuntos de editores para verificar o comportamento. Depois de verificar o comportamento, desative os editores do Pub/Sub Lite.
Depois que todos os assinantes e editores forem migrados, desative a ferramenta de migração excluindo a carga de trabalho e o cluster.
Exclua o tópico original do Pub/Sub Lite.
A seguir
- Saiba mais sobre o Serviço gerenciado para Apache Kafka