如何使用jsonpath检索configmap值?
我正在尝试从configmap中检索haproxy.cfg的值,但我无法正确地获得它:
kubectl get cm -l app=haproxy -o jsonpath="{['items'][0]['data']['haproxy.cfg']}"上述结果不返回结果。但是,如果不使用haproxy.cfg,我肯定可以得到configmap:
kubectl get cm -l app=haproxy -o jsonpath="{['items'][0]['data']}"产量:
map[haproxy.cfg:
global
user root
group root
maxconn 256
...
]我可以用jq:
kubectl get cm -l app=haproxy -o json | jq -r '.items[0].data["haproxy.cfg"]'这正是我想要的结果:
global
user root
group root
maxconn 256如果您需要帮助创建您的ConfigMap,下面是我正在使用的清单:
apiVersion: v1
data:
haproxy.cfg: "\nglobal\n user root\n group root\n maxconn 256\n\n"
kind: ConfigMap
metadata:
annotations:
meta.helm.sh/release-name: haproxy
meta.helm.sh/release-namespace: haproxy
labels:
app: haproxy
app-version: 2.4.0
app.kubernetes.io/managed-by: Helm
heritage: Helm
release: haproxy
version: 0.0.3
name: haproxy发布于 2021-06-16 02:11:52
转义单引号中的.
kubectl get cm -l app=haproxy -o jsonpath="{.items[0].data['haproxy\.cfg']}"*这在很久以前,即1.5岁以前就不起作用了。然后,您需要使用go-template格式。
发布于 2021-06-16 11:28:04
我创造了简单结构映射。
kubectl get cm game-config-example -o json返回:
{
"apiVersion": "v1",
"data": {
"game.properties": "enemies=aliens\nlives=3\nenemies.cheat=true\nenemies.cheat.level=noGoodRotten\nsecret.code.passphrase=UUDDLRLRBABAS\nsecret.code.allowed=true\nsecret.code.lives=30",
"ui.properties": "color.good=purple\ncolor.bad=yellow\nallow.textmode=true\nhow.nice.to.look=fairlyNice\n"
},
"kind": "ConfigMap",
"metadata": {
"creationTimestamp": "2021-06-16T10:08:28Z",
"name": "game-config-example",
"namespace": "default",
"resourceVersion": "24666141",
"selfLink": "/api/v1/namespaces/default/configmaps/game-config-example",
"uid": "3d6d2ba0-8f5a-43a7-953b-91a62dbcd248"
}
}我已经测试了在1.19和1.21版本上转义.字符的解决方案。两种方法都很好。
kubectl get cm game-config-example -o jsonpath="{['data']['ui\.properties']}"提供正确的输出:
color.good=purple
color.bad=yellow
allow.textmode=true
how.nice.to.look=fairlyNice如果我使用:
go-templatekubectl get cm game-config-example -o 'go-template={{index .data "ui.properties" }}'jq命令:kubectl get cm game-config-example -o json | jq -r '.data."ui.properties"'您还可以看到,本期 - JSONpath无法返回地图中包含点的键。
https://stackoverflow.com/questions/67994374
复制相似问题