kubernetes - 在 configmap 中使用 Kubernetes 机密
问题描述
我在 Kubernetes 集群上使用 Helm 并安装了稳定的rabbitmq-ha chart。我想从 Logstash 将数据推送到 rabbitmq 中的交换。我正在尝试使用logstash 稳定图表。
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
配置并包含硬编码的密码。这样可以避免在我的存储库中使用纯文本密码,但仍然不是最好的方法。
解决方案
事实证明,至少从 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}"
}
}
extraEnv
logstash 图表允许使用一个值将环境变量添加到 statefulset 。extraEnv 允许值来自秘密。
extraEnv:
- name: RMQ_PASSWORD
valueFrom:
secretKeyRef:
name: rabbitmq-ha
key: rabbitmq-password
推荐阅读
- javascript - Node/Express - POST 提交,结束响应,没有页面渲染/重定向
- java - 在 Spring 中将所有属性文件内容迁移到 nosql db
- git - 在 git commit 中排除大块内的一行
- android - #android webview点击拳头后不显示内容
- r - Count the number of columns in a row with a specific value
- java - 如何让这段代码线程安全?
- python - Python pandas:获取excel中的特定行并保存到新工作表
- python - How to loop a list in reverse order and skip last element
- android - Android 工作管理器:“无法实例化 Worker”
- regex - 嵌套数组上的正则表达式?