我正在使用stable/prometheus
掌舵图表,并且已经配置了一个自定义值文件,该文件进一步为图表部署配置了alertmanager。我可以通过Helm3安装图表,没有任何问题,但是,有一件事我无法弄清楚。对于Slack Reciever/slack_configs/api_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."
Update 4/8:感谢willro,我正在取得进步!我可以插入一个值,但是将其放在alertmanager块的根目录下。我已经尝试了几种不同的组合来访问接收器/ slack_configs,但是还没有运气= /
helm install test-release stable/prometheus -f customALM.yml --set alertmanagerFiles.api_url=PleaseInsertPrettyPlease --dry-run
Update 4/9:我决定将接收器块移动到单独的文件中,该文件已加密并安全存储。
在部署URL之后运行命令来更改URL绝对是我想要的选项。
我想写这个答案给你这个选择!
您可以用SED链接一些命令来编辑该ConfigMap上的数据(这与kubectl edit
的功能非常相似!]
为此,您将需要使用部署在customALM.yml
上的字符串。对于此示例,我在部署之前将参数设置为api_url: ChangeMeLater
。
然后我用helm install test-release stable/prometheus -f customALM.yml
最后我们运行:
kubectl get cm <CONFIG_MAP_NAME> -o yaml | sed -e "s,<OLD_VALUE>,<NEW_VALUE>,g" | kubectl replace -f -
解释正在发生的事情:
kubectl get cm <CONFIG_MAP_NAME> -o yaml |
=以yaml格式获取已部署的configmap,并将其通过管道传递给下一个命令]sed -e "s,<OLD_VALUE>,<NEW_VALUE>,g" |
=用sed
代替old_value
代替new_value
并将其传送到下一个命令]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
您可以看到该命令将
ChangeMeLater
更改为theurl.com/any
。
我仍在考虑您的第一选择,但这是一个很好的解决方法。
如果有任何疑问,请告诉我!