kubectl patch
コマンドでPodのAnnotationsを修正したいですが、Keyが流行っているabc.com/def
の形にして、エラーとなりました。
$ kubectl patch pod simple-pod --type='json' -p='[{"op": "add", "path": "/metadata/annotations/abc.com/my-key", "value": "abcde" }]'
The "" is invalid
エラーメッセージはいい加減で、それは当然だ、KeyにJSON PATHの区切る符号が入ってるからじゃないかと思っていました。。
エスケープしようとして、バックスラッシュはだめでした。調べたどころ、/
を~1
しなければなりません。
$ kubectl patch pod simple-pod --type='json' -p='[{"op": "add", "path": "/metadata/annotations/abc.com~1my-key", "value": "abcde" }]'
pod "simple-pod" patched
結果OKです。
$ kubectl get pods -o yaml
apiVersion: v1
items:
- apiVersion: v1
kind: Pod
metadata:
annotations:
abc.com/my-key: abcde