Integrações — Kafka
Visão geral das integrações
Esta página descreve como configurar integrações com o Apache Kafka instalado via chart tdp-kafka.
O chart implanta um cluster Kafka gerenciado pelo operador Strimzi e, opcionalmente, conectores Debezium para captura de dados em tempo real (Change Data Capture — CDC).
Para configurações de autenticação e segurança (LDAP, TLS, LDAP na Kafka UI), consulte Segurança — Kafka.
Além do CDC via Debezium, o Kafka também se integra a outros três componentes da plataforma:
- Trino: consulte o conector Kafka para consultar t ópicos via SQL.
- OpenMetadata: o Kafka pode ser registrado como Messaging Service — consulte Integrações — OpenMetadata.
- Ranger: políticas de acesso aos tópicos podem ser centralizadas via
rangerIntegrations.kafka— consulte Integrações — Ranger.
Kafka Connect e Debezium
O chart tdp-kafka suporta a criação de clusters Kafka Connect com conectores Debezium para CDC de bancos de dados relacionais.
O Debezium captura eventos de alteração (INSERT, UPDATE, DELETE) do banco de dados e os publica em tópicos Kafka.
Bancos de dados suportados
| Tipo | Chave em kafkaConnects | Banco |
|---|---|---|
| PostgreSQL | kafkaConnects.postgres | PostgreSQL |
| MySQL | kafkaConnects.mysql | MySQL / MariaDB |
| SQL Server | kafkaConnects.sqlserver | Microsoft SQL Server |
| Oracle | kafkaConnects.oracle | Oracle Database |
Como habilitar um conector
Para cada banco de dados que deseja monitorar:
- Habilite o tipo de conector com
kafkaConnects.<CONNECTOR_TYPE>.enabled: true. - Configure o cluster Kafka Connect em
kafkaConnects.<CONNECTOR_TYPE>.connect. - Configure os conectores individuais em
kafkaConnects.<CONNECTOR_TYPE>.connectors. - Defina as credenciais do banco usando
createSecretousecretName.
Endereço interno do cluster Kafka
O parâmetro bootstrapServers define o endereço interno do cluster Kafka ao qual o Kafka Connect se conecta.
Quando o chart tdp-kafka é instalado com o release name tdp-kafka no mesmo namespace, o endereço padrão é:
bootstrapServers: tdp-kafka-kafka-bootstrap:9092
Se o release name ou namespace forem diferentes, ajuste o valor de bootstrapServers de acordo.
Gerenciamento de credenciais
O chart oferece duas formas de fornecer credenciais do banco de dados ao conector:
| Opção | Parâmetros | Recomendação |
|---|---|---|
| Secret criado pelo chart | createSecret: true + user + password | Somente em ambientes de teste; evitar em produção |
| Secret existente | createSecret: false + secretName | Recomendado para produção |
values.yamlAo usar createSecret: true, a senha é fornecida como parâmetro Helm.
Nunca commite senhas em texto plano em arquivos values.yaml versionados no Git.
Em produção, prefira createSecret: false com um Kubernetes Secret preexistente referenciado via secretName.
Exemplo: conector PostgreSQL com Secret existente
Este exemplo usa um Kubernetes Secret preexistente para as credenciais do banco, evitando senhas em texto plano no values.yaml.
1. Crie o Secret com as credenciais do banco:
kubectl -n <NAMESPACE> create secret generic <DEBEZIUM_SECRET_NAME> \
--from-literal=username='<DATABASE_USER>' \
--from-literal=password='<PASSWORD>'
2. Configure o conector no values.yaml:
kafkaConnects:
postgres:
enabled: true
connect:
name: connect-debezium-postgres
replicas: 1
bootstrapServers: tdp-kafka-kafka-bootstrap:9092
kafkaVersion: "4.1.0"
connectors:
appdb:
enabled: true
name: debezium-postgres-<APPLICATION_NAME>
topicPrefix: "<TOPIC_PREFIX>"
postgres:
createSecret: false
secretName: "<DEBEZIUM_SECRET_NAME>"
host: "<DATABASE_HOST>.<DB_NAMESPACE>.svc.cluster.local"
port: "5432"
dbname: "<DATABASE_NAME>"
- Substitua
<TOPIC_PREFIX>pelo prefixo desejado para os tópicos Kafka gerados pelo conector (ex.:pgapp). - O campo
hostdeve referenciar o serviço Kubernetes do banco de dados — normalmente no formato<SERVICE_NAME>.<NAMESPACE>.svc.cluster.local. kafkaVersiondeve ser compatível com a versão do cluster Kafka instalado (verappVersionnoChart.yamldotdp-kafka).
Exemplo: conector MySQL com Secret existente
kafkaConnects:
mysql:
enabled: true
connect:
name: connect-debezium-mysql
replicas: 1
bootstrapServers: tdp-kafka-kafka-bootstrap:9092
kafkaVersion: "4.1.0"
connectors:
appdb:
enabled: true
name: debezium-mysql-<APPLICATION_NAME>
topicPrefix: "<TOPIC_PREFIX>"
mysql:
createSecret: false
secretName: "<DEBEZIUM_SECRET_NAME>"
host: "<DATABASE_HOST>.<DB_NAMESPACE>.svc.cluster.local"
port: "3306"
databaseIncludeList: "<DATABASE_NAME>"
Exemplo: conector SQL Server com Secret existente
kafkaConnects:
sqlserver:
enabled: true
connect:
name: connect-debezium-sqlserver
replicas: 1
bootstrapServers: tdp-kafka-kafka-bootstrap:9092
kafkaVersion: "4.1.0"
connectors:
appdb:
enabled: true
name: debezium-sqlserver-<APPLICATION_NAME>
topicPrefix: "<TOPIC_PREFIX>"
sqlserver:
createSecret: false
secretName: "<DEBEZIUM_SECRET_NAME>"
host: "<DATABASE_HOST>.<DB_NAMESPACE>.svc.cluster.local"
port: "1433"
databaseNames: "<DATABASE_NAME>"
Exemplo: conector Oracle com Secret existente
kafkaConnects:
oracle:
enabled: true
connect:
name: connect-debezium-oracle
replicas: 1
bootstrapServers: tdp-kafka-kafka-bootstrap:9092
kafkaVersion: "4.1.0"
connectors:
appdb:
enabled: true
name: debezium-oracle-<APPLICATION_NAME>
topicPrefix: "<TOPIC_PREFIX>"
oracle:
createSecret: false
secretName: "<DEBEZIUM_SECRET_NAME>"
host: "<DATABASE_HOST>.<DB_NAMESPACE>.svc.cluster.local"
port: "1521"
dbname: "<CDB_NAME>"
pdbName: "<PDB_NAME>"
Validação dos conectores
Após a instalação, verifique se os recursos foram criados corretamente:
kubectl get kafkaconnect -n <NAMESPACE>
kubectl get kafkaconnector -n <NAMESPACE>
Para ver os detalhes de um conector específico:
kubectl describe kafkaconnector <CONNECTOR_NAME> -n <NAMESPACE>
Para verificar os logs do pod Kafka Connect:
kubectl logs -n <NAMESPACE> -l strimzi.io/cluster=<CONNECT_NAME> --tail=100
Os recursos KafkaConnect e KafkaConnector são CRDs do Strimzi.
Certifique-se de que o chart tdp-crds está instalado antes de habilitar conectores Debezium.
Consulte Instalação via Helm para a ordem de instalação dos charts.