Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 如何访问头盔图表自定义值文件的嵌套项?_Kubernetes_Yaml_Kubernetes Helm - Fatal编程技术网

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文件已经插入的内容,该文件已经从模板中删除。当我在as
slack\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