Как мы можем абстрактно использовать пароль хранилища доверенных сертификатов kafka connect в ресурсе KafkaConnector? - PullRequest
0 голосов
/ 04 августа 2020

У нас есть подключаемый кластер из 3 узлов. Нам нужна пара сертификатов в нашем хранилище доверенных сертификатов кластера подключения. Мы установили эти сертификаты следующим образом.

...
spec:
  tls:
      trustedCertificates:
      - certificate: ca.crt
        secretName: my-cluster-cluster-ca-cert
      - secretName: root-cer
        certificate: RootCA.crt
      - certificate: IntermediateCA.crt
        secretName: inter-cer
      - secretName: solace-broker-secret
        certificate: secure-solace-broker.crt
...

Как вы знаете, после запуска трех кластеров подключения сертификаты были установлены в следующее хранилище доверенных сертификатов /tmp/kafka/cluster.truststore.p12. Кроме того, мы можем найти случайный пароль хранилища доверенных сертификатов в следующем файле: /tmp/strimzi-connect.properties.

Мы указываем путь и пароль хранилища доверенных сертификатов в файле ресурсов KafkaConnector.

apiVersion: kafka.strimzi.io/v1alpha1
kind: KafkaConnector
metadata:
  name: solace-source-connector
  labels:
    strimzi.io/cluster: my-connect-cluster
spec:
  class: com.solace.connector.kafka.connect.source.SolaceSourceConnector
  tasksMax: 1
  config:
    value.converter: org.apache.kafka.connect.converters.ByteArrayConverter
    key.converter: org.apache.kafka.connect.storage.StringConverter
    kafka.topic: solace-test
    sol.host: tcps://msdkjskdjsdfrdfjdffdhxu3n.messaging.solace.cloud:55443
    sol.username: my-solace-cloud-username
    sol.password: password
    sol.vpn_name: solaceservice
    sol.topics: try-me
    sol.message_processor_class: com.solace.connector.kafka.connect.source.msgprocessors.SolSampleSimpleMessageProcessor
    sol.ssl_trust_store: /tmp/kafka/cluster.truststore.p12
    sol.ssl_trust_store_password: HARDCODED_RANDOM_PASSWORD

Прямо сейчас мы попадаем внутрь одного из подключаемых модулей кластера, получаем пароль из файла /tmp/strimzi-connect.properties, а затем используем пароль в поле sol.ssl_trust_store_password.

Мой вопрос:

Есть ли способ параметризовать пароль? Любой инкапсулированный способ использования пароля (так что нам не нужно залезать внутрь модуля, чтобы узнать пароль - ожидается, что ресурс kafkaconnector получит пароль из файла /tmp/strimzi-connect.properties, в котором он запущен)

1 Ответ

0 голосов
/ 04 августа 2020

Я получил ответ из канала Slack от Якуба Шольца.

Используемая вами конфигурация tls и хранилище доверенных сертификатов должны использоваться для связи между Connect и Kafka, а не для разъемов . Я думаю, у вас есть два варианта предоставления хранилища доверенных сертификатов для соединителя.

  1. . Вы можете использовать то же хранилище доверенных сертификатов, которое вы используете сейчас, но загрузить пароль с помощью FileConfigProvider - я думаю, это должно загрузить правильный пароль на каждом узле подключения
  2. Вы можете просто создать свой собственный секрет в хранилище доверенных сертификатов для коннектора и загрузить его в подключение, используя следующую команду: https://strimzi.io/docs/operators/latest/full/using.html#assembly -kafka-connect-external-configuration-deployment-configuration -kafka-connect

И вот как я это реализовал:

  1. Создание собственного хранилища ключей вместе с моими сертификатами:
keytool -import -file RootCA.crt -alias root -keystore myTrustStore
Создание секрета Kubernetes с хранилищем доверенных сертификатов:
kubectl create secret generic my-trust-store --from-file=myTrustStore
загрузка секрета в файл ресурсов подключения:
spec:
  ...
  externalConfiguration:
    volumes:
      - name: my-trust-store
        secret:
          secretName: my-trust-store
После запуска модуля подключения кластера сертификат будет доступен по адресу / opt / kafka / external-configuration / my-trust-store /
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...