Etcd 有一个概念,Atomic Compare-and-Update
即在执行更新之前比较键的值。我想使用此功能更新ConfigMap
我的 Kubernetes 集群中的 a。仅当现有配置映射数据或特定数据键与某个值匹配时,我才想更新配置映射。
示例 ConfigMap:
curl -X POST -H 'Content-Type: application/json' \
-d '{"apiVersion": "v1", "kind": "ConfigMap", "metadata": {"name": "test"}, "data": {"foo": "1"}}' \
http://localhost:8001/api/v1/namespaces/default/configmaps
如果可能的话,我需要与 K8S API 或直接与 K8S 交互etcd
(是吗?),我不想依赖resourceVersion
. 我想依赖我自己的版本,它实际上是配置映射的数据键。我怎样才能实现这样的原子更新(或删除)操作?
您可以使用jsonpatch执行此操作
jsonpatch
test
操作可以将任意键与值(包括相同或不同的键)进行比较,然后只有在测试通过时才会更新。这是一个使用 kubectl 的示例:
当然,这也可以使用原始 HTTP api 来完成,使用
-XPATCH -H "Content-Type: application/json-patch+json"