我正在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
的配置并包括硬编码的密码。这样可以避免在我的存储库中使用纯文本密码,但仍然感觉不是最好的方法。
答案 0 :(得分:2)
结果表明,至少从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
值将环境变量添加到状态集。 extraEnv允许值来自秘密。
extraEnv:
- name: RMQ_PASSWORD
valueFrom:
secretKeyRef:
name: rabbitmq-ha
key: rabbitmq-password