我如何访问Helm图表自定义值文件的嵌套项目?

问题描述 投票:1回答:1

我正在使用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:我决定将接收器块移动到单独的文件中,该文件已加密并安全存储。

kubernetes yaml kubernetes-helm
1个回答
0
投票

在部署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

    我仍在考虑您的第一选择,但这是一个很好的解决方法。

    如果有任何疑问,请告诉我!

    © www.soinside.com 2019 - 2024. All rights reserved.