Saltar para o conteúdo principal
Versão 3.0

Integrações — Kafka

ChartVersion3.0.1TypeapplicationAppVersion4.1.0
CompatibilidadeKubernetes1.32+OpenShift4.19+Rancher2.10.x+

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:

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

TipoChave em kafkaConnectsBanco
PostgreSQLkafkaConnects.postgresPostgreSQL
MySQLkafkaConnects.mysqlMySQL / MariaDB
SQL ServerkafkaConnects.sqlserverMicrosoft SQL Server
OraclekafkaConnects.oracleOracle Database

Como habilitar um conector

Para cada banco de dados que deseja monitorar:

  1. Habilite o tipo de conector com kafkaConnects.<CONNECTOR_TYPE>.enabled: true.
  2. Configure o cluster Kafka Connect em kafkaConnects.<CONNECTOR_TYPE>.connect.
  3. Configure os conectores individuais em kafkaConnects.<CONNECTOR_TYPE>.connectors.
  4. Defina as credenciais do banco usando createSecret ou secretName.

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çãoParâmetrosRecomendação
Secret criado pelo chartcreateSecret: true + user + passwordSomente em ambientes de teste; evitar em produção
Secret existentecreateSecret: false + secretNameRecomendado para produção
Não versione senhas em values.yaml

Ao 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:

Terminal input
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>"
note
  • Substitua <TOPIC_PREFIX> pelo prefixo desejado para os tópicos Kafka gerados pelo conector (ex.: pgapp).
  • O campo host deve referenciar o serviço Kubernetes do banco de dados — normalmente no formato <SERVICE_NAME>.<NAMESPACE>.svc.cluster.local.
  • kafkaVersion deve ser compatível com a versão do cluster Kafka instalado (ver appVersion no Chart.yaml do tdp-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:

Terminal input
kubectl get kafkaconnect -n <NAMESPACE>
kubectl get kafkaconnector -n <NAMESPACE>

Para ver os detalhes de um conector específico:

Terminal input
kubectl describe kafkaconnector <CONNECTOR_NAME> -n <NAMESPACE>

Para verificar os logs do pod Kafka Connect:

Terminal input
kubectl logs -n <NAMESPACE> -l strimzi.io/cluster=<CONNECT_NAME> --tail=100
Pré-requisito: CRDs Strimzi

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.