es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Aquí hay un archivo de configuración de muestra para el conector de MongoDB con TLS y autenticación habilitados:

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaConnector
    metadata:
      name: my-mongodb-connector
    spec:
      class: io.debezium.connector.mongodb.MongoDbConnector
      tasksMax: 1
      config:
        name: my-mongodb-connector
        mongodb.hosts: "my-mongodb-cluster-0.my-mongodb-cluster-svc:27017,my-mongodb-cluster-1.my-mongodb-cluster-svc:27017,my-mongodb-cluster-2.my-mongodb-cluster-svc:27017"
        mongodb.ssl.enabled: "true"
        mongodb.ssl.invalid.hostname.allowed: "true"
        mongodb.truststore.type: "PEM"
        mongodb.truststore.location: "/etc/kafka/secrets/ca.pem"
        mongodb.authentication.mechanism: "MONGODB-X509"
        connection.user: "CN=mongo-client,OU=Unknown,O=Unknown,L=Unknown,ST=Unknown,C=Unknown"
        connection.ssl.client.auth: "REQUIRED"
    

    En este archivo de configuración, hemos especificado los hosts de MongoDB y habilitado TLS estableciendo mongodb.ssl.enabled en “true”. También hemos establecido mongodb.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” con mongodb.authentication.mechanism.

    Finalmente, hemos especificado el certificado de usuario con connection.user y hemos establecido connection.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 de metadata.name coincida con el nombre de tu conector y que el parámetro mongodb.hosts apunte a tu clúster de MongoDB.

Comments are closed.