You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否修补Kubernetes ConfigMap的字符串值?实操遇报错求助

解决Kubernetes ConfigMap Patch报错问题

错误原因

你执行的patch命令中,错误地将application.yml的值设置为嵌套JSON对象,但Kubernetes ConfigMap的data字段要求所有值都是字符串类型。Kubernetes无法解析这种嵌套结构,因此抛出unrecognized type: string错误。

修正方案

方案1:直接传入YAML字符串格式的配置

将application.yml的内容转换为YAML格式的字符串,作为data字段的值传入:

kubectl patch configmap cm-example -n example-ns -p '{"data":{"application.yml":"keycloak:\n  auth-server-url: https://server-url.domain.com/auth/"}}'

方案2:使用JSON Patch语法替换指定内容

如果需要精准替换application.yml中的特定配置项,可使用--type=json的patch方式:

kubectl patch configmap cm-example -n example-ns --type=json -p '[{"op": "replace", "path": "/data/application.yml", "value": "keycloak:\n  auth-server-url: https://server-url.domain.com/auth/"}]'

方案3:保留原有配置的情况下修改

如果application.yml已有其他配置需要保留,可先导出现有内容,修改后再重新patch:

# 导出现有application.yml内容
kubectl get configmap cm-example -n example-ns -o jsonpath='{.data.application.yml}' > app.yml

# 编辑app.yml,修改auth-server-url的值(手动编辑或用sed命令)
sed -i 's|auth-server-url: .*|auth-server-url: https://server-url.domain.com/auth/|' app.yml

# 将修改后的内容转义后patch回ConfigMap
kubectl patch configmap cm-example -n example-ns -p "$(printf '{"data":{"application.yml":"%s"}}' "$(sed 's/"/\\"/g' app.yml)")"

内容的提问来源于stack exchange,提问作者DeirdreRodgers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 14:20:22