Как передать в JAAS конфигурацию kafka env переменные kubernetes - PullRequest
1 голос
/ 23 апреля 2019

Я пытаюсь аутентифицировать мой прокси-сервер Kafka с помощью SASL, но у меня возникают проблемы при передаче конфигураций, созданных в моем локальном докере, в Kubernetes.

Я использую конфигурацию JAAS для достижения этой цели.Мой JAAS-файл выглядит следующим образом.

KafkaClient {
       org.apache.kafka.common.security.plain.PlainLoginModule required
       username="rest"
       password="rest-secret";
};

Client {
       org.apache.zookeeper.server.auth.DigestLoginModule required
       username="rest"
       password="restsecret";
};

, а затем в моем модуле докера я сделал:

KAFKA_OPTS: -Djava.security.auth.login.config=/etc/kafka/secrets/rest_jaas.conf

Как я перенесу эту же логику в Kubernetes?Я попытался передать переменную env следующим образом:

env:
  - name: KAFKA_OPTS
    value: |
      KafkaClient {
        org.apache.kafka.common.security.plain.PlainLoginModule required
        username="rest"
        password="rest-secret";
      };
      Client {
        org.apache.zookeeper.server.auth.DigestLoginModule required
        username="rest"
        password="rest-secret";
      };

, но все равно не удается.Вот что говорят мои журналы:

Error: Could not find or load main class KafkaClient
/bin/sh: 3: org.apache.kafka.common.security.plain.PlainLoginModule: not found
/bin/sh: 6: Syntax error: "}" unexpected

Ваша помощь будет высоко оценена.

1 Ответ

3 голосов
/ 23 апреля 2019

Сохраните свой конфигурационный файл Kafka JAAS как rest_jaas.conf.Затем выполните:

kubectl create secret generic kafka-secret --from-file=rest_jaas.conf

Затем в своем развертывании вставьте:

      env:
      - name: KAFKA_OPTS 
        value: -Djava.security.auth.login.config=/etc/kafka/secrets/rest_jaas.conf
      volumeMounts:
      - name: kafka-secret
        mountPath: /etc/kafka/secrets
        subPath: rest_jaas.conf
    volumes:
    - name: kafka-secret
      secret:
        secretName: kafka-secret
...