Kubernetes 如何访问头盔图表自定义值文件的嵌套项?
我使用的是Kubernetes 如何访问头盔图表自定义值文件的嵌套项?,kubernetes,yaml,kubernetes-helm,Kubernetes,Yaml,Kubernetes Helm,我使用的是stable/prometheushelm图表,我已经配置了一个自定义值文件,进一步配置了图表部署的alertmanager。我可以通过Helm3安装图表,没有任何问题,但是,有一件事我无法弄清楚。对于Slack receiver/Slack\u configs/api\u url我想通过set命令传递它,这样我就不必将它硬编码到文件中 我希望我走的是正确的道路,以下是我对跑步获取价值的想法 helm install test-release stable/prometheus -f
stable/prometheus
helm图表,我已经配置了一个自定义值文件,进一步配置了图表部署的alertmanager。我可以通过Helm3安装图表,没有任何问题,但是,有一件事我无法弄清楚。对于Slack receiver/Slack\u configs/api\u url
我想通过set
命令传递它,这样我就不必将它硬编码到文件中
我希望我走的是正确的道路,以下是我对跑步获取价值的想法
helm install test-release stable/prometheus -f customALM.yml --set alertmanagerFiles.alertmanager.yml.receivers[0].api_url=https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/xxxxxxxxxxxxxxxxxxxxxxxxxxx
customALM.yml
alertmanagerFiles:
alertmanager.yml:
route:
group_wait: 10s
group_interval: 5m
repeat_interval: 30m
receiver: "slack"
routes:
- receiver: "slack"
group_wait: 10s
match_re:
severity: error|warning
continue: true
receivers:
- name: "slack"
slack_configs:
- api_url: '[howDoIsetThisAtTheCLI?'
channel: 'someChannel'
text: "Text message template etc."
更新4/8:多亏了威罗,我才有了进步!我可以插入一个值,但它会将其放在alertmanager块的根。我尝试了几种不同的组合来访问接收器/slack\u配置,但还没有成功=/
helm install test-release stable/prometheus -f customALM.yml --set alertmanagerFiles.api_url=PleaseInsertPrettyPlease --dry-run
更新4/9:我决定将接收器块移动到一个单独的文件中,该文件经过加密并安全存储
在部署URL后运行命令更改URL绝对是我想要的一个选项
我想写这个答案给你这个选择
- 您可以使用链接几个命令来编辑该配置映射上的数据(这与
的功能非常相似!)kubectl edit
- 为此,您需要使用部署在
上的字符串。对于本例,在部署之前,我将参数设置为customALM.yml
api\u url:ChangeMeLater
- 然后,我使用
helm install test release stable/prometheus-f customALM.yml
- 最后,我们运行:
theurl.com/any
的ChangeMeLater
我还在考虑你的第一个选择,但这是一个很好的解决办法
如果你有任何疑问,请告诉我 我试图重现您的案例,这是一个非常复杂的
--set
参数,因为您试图设置yaml文件已经插入的内容,该文件已经从模板中删除。当我在asslack\u api\u url
中找到该参数时,我正在查找values.yaml
中的参数,但位于另一个位置,嵌套在global下。你知道吗?我是个白痴,我应该浏览价值文件而不是自述文件的配置部分。我将玩这个,看看我是否能让它运行。不用担心,这也会引起您的兴趣:,这与我上面提到的值参数相结合将对您有所帮助。虽然我不认为这能按你的要求做。我想问您:在部署后运行命令更改此url将是一个可接受的选项?在部署后运行命令更改url肯定是我想要的选项。我的主要目标是从配置文件中隐藏这些键(例如,松弛键、寻呼机任务键等)。您看到我提出的解决方案了吗?如果它有帮助,你会考虑把它作为一个承认它是很好的研究和耗时的承认。这样你就可以让其他人在类似的问题上得到帮助。这实际上是一个完美的解决方案。我让它通过管道运行,所以在helm3完成它的工作之后,我有一个后续步骤,用一个作为机密保护的env变量更新configmap。在这个答案上做得很好A++!
kubectl get cm <CONFIG_MAP_NAME> -o yaml | sed -e "s,<OLD_VALUE>,<NEW_VALUE>,g" | kubectl replace -f -
$ helm install test-release stable/prometheus -f customALM.yml
Release "test-release" has been installed. Happy Helming!
...
$ kubectl get cm
NAME DATA AGE
test-release-prometheus-alertmanager 1 44m
test-release-prometheus-server 5 44m
$ kubectl get cm test-release-prometheus-alertmanager -o yaml
apiVersion: v1
data:
alertmanager.yml: |
global: {}
receivers:
- name: slack
slack_configs:
- api_url: ChangeMeLater
channel: someChannel
text: Text message template etc.
route:
group_interval: 5m
group_wait: 10s
receiver: slack
repeat_interval: 30m
routes:
- continue: true
group_wait: 10s
match_re:
severity: error|warning
receiver: slack
kind: ConfigMap
metadata:
creationTimestamp: "2020-04-10T13:41:15Z"
labels:
app: prometheus
chart: prometheus-11.0.6
component: alertmanager
heritage: Helm
release: test-release
name: test-release-prometheus-alertmanager
namespace: default
resourceVersion: "218148"
selfLink: /api/v1/namespaces/default/configmaps/test-release-prometheus-alertmanager
uid: 323fdd40-2f29-4cde-833c-c6300d5688c0
$ kubectl get cm test-release-prometheus-alertmanager -o yaml | sed -e "s,ChangeMeLater,theurl.com/any,g" | kubectl replace -f -
configmap/test-release-prometheus-alertmanager replaced
$ kubectl get cm test-release-prometheus-alertmanager -o yaml
apiVersion: v1
data:
alertmanager.yml: |
global: {}
receivers:
- name: slack
slack_configs:
- api_url: theurl.com/any
channel: someChannel
text: Text message template etc.
route:
group_interval: 5m
group_wait: 10s
receiver: slack
repeat_interval: 30m
routes:
- continue: true
group_wait: 10s
match_re:
severity: error|warning
receiver: slack
kind: ConfigMap
metadata:
creationTimestamp: "2020-04-10T13:41:15Z"
labels:
app: prometheus
chart: prometheus-11.0.6
component: alertmanager
heritage: Helm
release: test-release
name: test-release-prometheus-alertmanager
namespace: default
resourceVersion: "219507"
selfLink: /api/v1/namespaces/default/configmaps/test-release-prometheus-alertmanager
uid: 323fdd40-2f29-4cde-833c-c6300d5688c0