【问题标题】:Using kubernetes secrets in a configmap在 configmap 中使用 Kubernetes 机密
【发布时间】:2020-01-02 21:32:18
【问题描述】:

我在 Kubernetes 集群上使用 Helm,并安装了稳定版 rabbitmq-ha chart。我想从 Logstash 将数据推送到 rabbitmq 中的交换。我正在尝试使用logstash stable chart

rabbitmq-ha 图表创建了一个秘密,其中包含连接到它的密码。我希望能够获取该密码并将其包含在 logstash 配置中,以便 logstash 可以连接到它。

logstash 的 ConfigMap 使用值文件中的项目进行模板化。

  outputs:
    main: |-
      output {
        rabbitmq {
          exchange => "exchange_name"
          exchange_type => "fanout"
          host => "rabbitmq-ha.default.svc.cluster.local"
          password => "????"
        }
      }

我不想在值文件中对密码进行硬编码,因为这对安全性不利,并且意味着要为每个环境复制配置。我看不到让 logstash 从环境变量中读取密码的方法。

人们通常如何做到这一点?

我可以使用helm secrets 来存储整个outputs 配置并包含硬编码密码。这样可以避免在我的存储库中使用纯文本密码,但仍然不是最好的方法。

【问题讨论】:

  • 如果应用程序不支持将密码包含为环境变量,我会很高兴听到这个问题的解决方案。

标签: kubernetes kubernetes-helm


【解决方案1】:

事实证明,至少从 5.0 版的 logstash 开始,就可以让 logstash 从环境变量中读取值。 https://www.elastic.co/guide/en/logstash/current/environment-variables.html

所以我的值文件可能看起来像

  outputs:
    main: |-
      output {
        rabbitmq {
          exchange => "exchange_name"
          exchange_type => "fanout"
          host => "rabbitmq-ha.default.svc.cluster.local"
          password => "${RMQ_PASSWORD}"
        }
      }

logstash 图表允许使用 extraEnv 值将环境变量添加到 statefulset。 extraEnv 允许值来自秘密。

  extraEnv:
    - name: RMQ_PASSWORD
      valueFrom:
        secretKeyRef:
          name: rabbitmq-ha
          key: rabbitmq-password

【讨论】:

    猜你喜欢
    • 2021-03-13
    • 2023-04-09
    • 2021-10-24
    • 2019-11-26
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    相关资源
    最近更新 更多