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 através do chart tdp-kafka.
O chart implanta um cluster Kafka gerido 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 com 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 bases de dados relacionais.
O Debezium captura eventos de alteração (INSERT, UPDATE, DELETE) da base de dados e publica-os em tópicos Kafka.

Bases de dados suportadas

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

Como activar um conector

Para cada base de dados que pretende monitorizar:

  1. Active 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 da base de dados utilizando 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 liga.
Quando o chart tdp-kafka é instalado com o release name tdp-kafka no mesmo namespace, o endereço predefinido é:

bootstrapServers: tdp-kafka-kafka-bootstrap:9092

Se o release name ou namespace forem diferentes, ajuste o valor de bootstrapServers em conformidade.

Gestão de credenciais

O chart oferece duas formas de fornecer credenciais da base de dados ao conector:

OpçãoParâmetrosRecomendação
Secret criado pelo chartcreateSecret: true + user + passwordApenas em ambientes de teste; evitar em produção
Secret existentecreateSecret: false + secretNameRecomendado para produção
Não versione palavras-passe em values.yaml

Ao usar createSecret: true, a palavra-passe é fornecida como parâmetro Helm.
Nunca faça commit de palavras-passe em texto simples em ficheiros values.yaml versionados no Git.
Em produção, prefira createSecret: false com um Kubernetes Secret pré-existente referenciado via secretName.

Exemplo: conector PostgreSQL com Secret existente

Este exemplo utiliza um Kubernetes Secret pré-existente para as credenciais da base de dados, evitando palavras-passe em texto simples no values.yaml.

1. Crie o Secret com as credenciais da base de dados:

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>"
nota
  • 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 da base 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: conetor 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: conetor 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 correctamente:

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 ver os registos 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 activar conectores Debezium.
Consulte Instalação via Helm para a ordem de instalação dos charts.