【问题标题】:How to pass JAAS configuration kafka env variables kubernetes如何通过 JAAS 配置 kafka env 变量 kubernetes
【发布时间】:2019-09-12 17:54:21
【问题描述】:

我正在尝试使用 SASL 对我的 Kafka 休息代理进行身份验证,但我无法将本地 docker compose 中的配置传输到 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";
};

然后在我的 docker compose 中我已经完成了:

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

我们将非常感谢您的帮助。

【问题讨论】:

    标签: docker kubernetes apache-kafka docker-compose


    【解决方案1】:

    将您的 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
    

    【讨论】:

    • KAFKA_OPTS 是否只允许文件内容?除了从文件中获取配置之外,不能以其他方式进行配置吗?
    • KAFKA_OPTS 是环境变量。它可以存储长度非常有限的字符串(我不知道最大长度)。因此,最好将配置存储为文件。
    猜你喜欢
    • 2019-02-18
    • 2015-10-21
    • 2021-07-05
    • 2023-03-15
    • 2019-10-24
    • 2022-01-07
    • 2021-09-10
    • 1970-01-01
    • 2021-11-13
    相关资源
    最近更新 更多