cómo pasar certificados tls de MongoDB al crear el conector debezium mongodb kafka?
Tenemos un clúster de MongoDB con tres réplicas. He habilitado TLS preferido y el tipo de autenticación como MongoDB-X509.
Tenemos un clúster de Kafka Strimzi con tres brokers y un clúster de conexión con todos los complementos necesarios (por ejemplo, MongoDB proporcionado por Debezium) funcionando correctamente.
A continuación se muestra un fragmento del archivo connect.yaml utilizado para la implementación de Kafka Connect:
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
name: my-connect
spec:
config:
config.providers: directory
config.providers.directory.class: org.apache.kafka.common.config.provider.DirectoryConfigProvider
externalConfiguration:
volumes:
- name: connector-config
secret:
secretName: mysecret
La implementación funciona correctamente y se pueden ver los archivos ca.pem y mongo-server.pem en el directorio /opt/kafka/external-configuration/connector-config.
Después de eso, estoy tratando de crear un conector de MongoDB con los archivos de configuración que se muestran a continuación, pero no estoy seguro de la forma exacta de pasar los certificados. No hay un archivo de configuración de ejemplo disponible para los conectores de MongoDB. ¿Podría ayudarme proporcionando alguna configuración de muestra?
He intentado con el siguiente archivo de configuración:
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnector
metadata:
name: my-source-connector
labels:
strimzi.io/cluster: my-connect-cluster
spec:
class: io.debezium.connector.mongodb.MongoDbConnector
tasksMax: 2
config:
ssl.truststore.type: PEM
ssl.truststore.location: "${directory:/opt/kafka/external-configuration/connector-config:ca.pem}"
ssl.keystore.type: PEM
ssl.keystore.location: "${directory:/opt/kafka/external-configuration/connector-config:mongo-server.pem}"
"mongodb.hosts": "rs0/192.168.99.100:27017"
"mongodb.name": "fullfillment"
"collection.include.list": "inventory[.]*"
"mongodb.ssl.enabled": true
"mongodb.ssl.invalid.hostname.allowed": true
Pero me arrojó un error de sintaxis. ¿Podría ayudarme proporcionando una muestra de archivo de configuración de conector de MongoDB?
davy.ai
Aquí hay un archivo de configuración de muestra para el conector de MongoDB con TLS y autenticación habilitados:
En este archivo de configuración, hemos especificado los hosts de MongoDB y habilitado TLS estableciendo
mongodb.ssl.enabled
en “true”. También hemos establecidomongodb.ssl.invalid.hostname.allowed
en “true” para permitir certificados autofirmados.Hemos especificado la ubicación del certificado de la autoridad de certificación (CA) con
mongodb.truststore.location
y hemos configurado el mecanismo de autenticación en “MONGODB-X509” conmongodb.authentication.mechanism
.Finalmente, hemos especificado el certificado de usuario con
connection.user
y hemos establecidoconnection.ssl.client.auth
en “REQUIRED” para habilitar la autenticación basada en certificados.Ten en cuenta que el parámetro
tasksMax
puede establecerse en un valor mayor que 1 si deseas paralelizar la ingestión de datos. Además, asegúrate de que el nombre demetadata.name
coincida con el nombre de tu conector y que el parámetromongodb.hosts
apunte a tu clúster de MongoDB.