错误:升级失败:无法创建资源:版本“v1”中的 ConfigMap 无法作为 ConfigMap 处理

Nea*_*alR 12 datadog kubernetes-helm

根据github 上的规范和这些helm 说明, 我尝试使用以下语法升级 datadog 的 Helm 安装:

helm upgrade datadog-monitoring --set datadog.confd."kube_scheduler\.yaml".instances[0].prometheus_url="http://localhost:10251/metrics",datadog.confd."kube_scheduler\.yaml".init_config= stable/datadog
Run Code Online (Sandbox Code Playgroud)

但是,无论尝试更改prometheus_url值的语法(将 url 放在引号中、转义引号等),我都会收到以下错误:

错误:升级失败:无法创建资源:版本“v1”中的 ConfigMap 无法作为 ConfigMap 处理:v1.ConfigMap.Data:ReadString:需要“或 n,但发现 {,在 #10 字节中发现错误... |er.yaml":{"instances|...,更大的上下文...|{"apiVersion":"v1","data":{"kube_scheduler.yaml":{"instances":[{"prometheus_url" :"\" http://localhost| ...

如果我添加--dry-run --debug标志,我会得到以下 yaml 输出:

REVISION: 7
RELEASED: Mon Mar  2 14:28:52 2020
CHART: datadog-1.39.7
USER-SUPPLIED VALUES:
datadog:
  confd:
    kube_scheduler.yaml:
      init_config: ""
      instances:
      - prometheus_url: http://localhost:10251/metrics
Run Code Online (Sandbox Code Playgroud)

Yaml 输出似乎与此github 页面上指定的集成相匹配。

小智 25

所以,据我了解,问题是由于ConfigMap配置造成的。我也遇到过同样的情况,配置如下:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
  labels:
    group: mock
data:
  APP_NAME: my-mock
  APP_PORT: 8080
  APP_PATH: /api
Run Code Online (Sandbox Code Playgroud)

我只能通过用引号将所有值括起来来解决它:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
  labels:
    group: mock
data:
  APP_NAME: "my-mock"
  APP_PORT: "8080"
  APP_PATH: "/api"
Run Code Online (Sandbox Code Playgroud)