次のような展開仕様があります:
spec:
template:
spec:
volumes:
- name: config-web
configMap:
name: config-web-2-5
Kubernetes Pythonクライアントを使用して、ConfigMapの名前をconfig-web-2-5からconfig-web-3-0に変更したい
def kubernetes_update_cm():
v1 = client.AppsV1beta1Api()
body = [{"op":"replace","path":"/spec/template/spec/volumes/0/config_map/name", "value": "config-web-3-0"}]
ret = v1.patch_namespaced_deployment(name="my-app", namespace="default", body=body)
return ret
ただし、クライアントは次のエラーを返します。
"message":"jsonpatch replace operation does not apply: doc is missing path: /spec/template/spec/volumes/0/config_map/name"
クライアント src から、デプロイメント オブジェクトにパスが見つからない場合にこのエラーが発生することがわかります。
これは使用する正しいパスですか? 展開にはボリュームが 1 つしかありません。
答え1
パスが正しくありません。
正しいパスは次のとおりです:
/spec/template/spec/volumes/0/configMap/name
ない
/spec/template/spec/volumes/0/config_map/name