-
Notifications
You must be signed in to change notification settings - Fork 459
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Bug] Use JSON merge patch to update labels/annotations #4229
Labels
bug
Something isn't working
Comments
We should use JSON merge patch to add/update resource labels/annotations, just like kubectl does: $ kubectl annotate --overwrite svc kubernetes foo=xyz -v=8
I0627 03:54:37.791236 116852 loader.go:395] Config loaded from file: /home/zhang/.kube/config
I0627 03:54:37.794171 116852 round_trippers.go:463] GET https://127.0.0.1:34887/api/v1/namespaces/default/services/kubernetes
I0627 03:54:37.794182 116852 round_trippers.go:469] Request Headers:
I0627 03:54:37.794187 116852 round_trippers.go:473] Accept: application/json
I0627 03:54:37.794190 116852 round_trippers.go:473] User-Agent: kubectl/v1.30.2 (linux/amd64) kubernetes/3968350
I0627 03:54:37.799188 116852 round_trippers.go:574] Response Status: 200 OK in 4 milliseconds
I0627 03:54:37.799197 116852 round_trippers.go:577] Response Headers:
I0627 03:54:37.799200 116852 round_trippers.go:580] Cache-Control: no-cache, private
I0627 03:54:37.799202 116852 round_trippers.go:580] Content-Type: application/json
I0627 03:54:37.799204 116852 round_trippers.go:580] X-Kubernetes-Pf-Flowschema-Uid: ab36eba1-08ff-4a8a-bf6f-714d794ea8a3
I0627 03:54:37.799206 116852 round_trippers.go:580] X-Kubernetes-Pf-Prioritylevel-Uid: 0626e4f8-723a-400f-a19d-528c77df29f4
I0627 03:54:37.799208 116852 round_trippers.go:580] Content-Length: 1233
I0627 03:54:37.799209 116852 round_trippers.go:580] Date: Thu, 27 Jun 2024 03:54:37 GMT
I0627 03:54:37.799211 116852 round_trippers.go:580] Audit-Id: b79ad946-2e95-4adb-bba5-592a1543f7ee
I0627 03:54:37.799224 116852 request.go:1212] Response Body: {"kind":"Service","apiVersion":"v1","metadata":{"name":"kubernetes","namespace":"default","uid":"692799b5-7532-4291-bcb6-d69dccf13def","resourceVersion":"478","creationTimestamp":"2024-06-27T03:52:42Z","labels":{"component":"apiserver","provider":"kubernetes"},"annotations":{"foo":"bar"},"managedFields":[{"manager":"kube-apiserver","operation":"Update","apiVersion":"v1","time":"2024-06-27T03:52:42Z","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:labels":{".":{},"f:component":{},"f:provider":{}}},"f:spec":{"f:clusterIP":{},"f:internalTrafficPolicy":{},"f:ipFamilyPolicy":{},"f:ports":{".":{},"k:{\"port\":443,\"protocol\":\"TCP\"}":{".":{},"f:name":{},"f:port":{},"f:protocol":{},"f:targetPort":{}}},"f:sessionAffinity":{},"f:type":{}}}},{"manager":"kubectl-annotate","operation":"Update","apiVersion":"v1","time":"2024-06-27T03:54:21Z","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:annotations":{".":{},"f:foo":{}}}}}]},"spec":{"ports":[{"name":"https","protocol":"TCP","port":443,"targetPort":6443}],"clu [truncated 209 chars]
I0627 03:54:37.799479 116852 request.go:1212] Request Body: {"metadata":{"annotations":{"foo":"xyz"}}}
I0627 03:54:37.799512 116852 round_trippers.go:463] PATCH https://127.0.0.1:34887/api/v1/namespaces/default/services/kubernetes?fieldManager=kubectl-annotate
I0627 03:54:37.799515 116852 round_trippers.go:469] Request Headers:
I0627 03:54:37.799518 116852 round_trippers.go:473] Accept: application/json
I0627 03:54:37.799520 116852 round_trippers.go:473] Content-Type: application/merge-patch+json
I0627 03:54:37.799521 116852 round_trippers.go:473] User-Agent: kubectl/v1.30.2 (linux/amd64) kubernetes/3968350
I0627 03:54:37.801897 116852 round_trippers.go:574] Response Status: 200 OK in 2 milliseconds
I0627 03:54:37.801915 116852 round_trippers.go:577] Response Headers:
I0627 03:54:37.801921 116852 round_trippers.go:580] Content-Length: 1233
I0627 03:54:37.801923 116852 round_trippers.go:580] Date: Thu, 27 Jun 2024 03:54:37 GMT
I0627 03:54:37.801925 116852 round_trippers.go:580] Audit-Id: 2e3ae111-8ed7-4a5a-a85e-159666f3293b
I0627 03:54:37.801927 116852 round_trippers.go:580] Cache-Control: no-cache, private
I0627 03:54:37.801929 116852 round_trippers.go:580] Content-Type: application/json
I0627 03:54:37.801930 116852 round_trippers.go:580] X-Kubernetes-Pf-Flowschema-Uid: ab36eba1-08ff-4a8a-bf6f-714d794ea8a3
I0627 03:54:37.801932 116852 round_trippers.go:580] X-Kubernetes-Pf-Prioritylevel-Uid: 0626e4f8-723a-400f-a19d-528c77df29f4
I0627 03:54:37.801955 116852 request.go:1212] Response Body: {"kind":"Service","apiVersion":"v1","metadata":{"name":"kubernetes","namespace":"default","uid":"692799b5-7532-4291-bcb6-d69dccf13def","resourceVersion":"501","creationTimestamp":"2024-06-27T03:52:42Z","labels":{"component":"apiserver","provider":"kubernetes"},"annotations":{"foo":"xyz"},"managedFields":[{"manager":"kube-apiserver","operation":"Update","apiVersion":"v1","time":"2024-06-27T03:52:42Z","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:labels":{".":{},"f:component":{},"f:provider":{}}},"f:spec":{"f:clusterIP":{},"f:internalTrafficPolicy":{},"f:ipFamilyPolicy":{},"f:ports":{".":{},"k:{\"port\":443,\"protocol\":\"TCP\"}":{".":{},"f:name":{},"f:port":{},"f:protocol":{},"f:targetPort":{}}},"f:sessionAffinity":{},"f:type":{}}}},{"manager":"kubectl-annotate","operation":"Update","apiVersion":"v1","time":"2024-06-27T03:54:37Z","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:annotations":{".":{},"f:foo":{}}}}}]},"spec":{"ports":[{"name":"https","protocol":"TCP","port":443,"targetPort":6443}],"clu [truncated 209 chars]
service/kubernetes annotated
$ kubectl annotate --overwrite svc kubernetes foo- -v=8
I0627 03:55:04.013732 116995 loader.go:395] Config loaded from file: /home/zhang/.kube/config
I0627 03:55:04.016391 116995 round_trippers.go:463] GET https://127.0.0.1:34887/api/v1/namespaces/default/services/kubernetes
I0627 03:55:04.016407 116995 round_trippers.go:469] Request Headers:
I0627 03:55:04.016411 116995 round_trippers.go:473] Accept: application/json
I0627 03:55:04.016414 116995 round_trippers.go:473] User-Agent: kubectl/v1.30.2 (linux/amd64) kubernetes/3968350
I0627 03:55:04.020695 116995 round_trippers.go:574] Response Status: 200 OK in 4 milliseconds
I0627 03:55:04.020708 116995 round_trippers.go:577] Response Headers:
I0627 03:55:04.020711 116995 round_trippers.go:580] Content-Length: 1233
I0627 03:55:04.020714 116995 round_trippers.go:580] Date: Thu, 27 Jun 2024 03:55:04 GMT
I0627 03:55:04.020716 116995 round_trippers.go:580] Audit-Id: 68e55780-2eda-4aea-97b1-ec0eedfb2c20
I0627 03:55:04.020717 116995 round_trippers.go:580] Cache-Control: no-cache, private
I0627 03:55:04.020719 116995 round_trippers.go:580] Content-Type: application/json
I0627 03:55:04.020720 116995 round_trippers.go:580] X-Kubernetes-Pf-Flowschema-Uid: ab36eba1-08ff-4a8a-bf6f-714d794ea8a3
I0627 03:55:04.020722 116995 round_trippers.go:580] X-Kubernetes-Pf-Prioritylevel-Uid: 0626e4f8-723a-400f-a19d-528c77df29f4
I0627 03:55:04.020740 116995 request.go:1212] Response Body: {"kind":"Service","apiVersion":"v1","metadata":{"name":"kubernetes","namespace":"default","uid":"692799b5-7532-4291-bcb6-d69dccf13def","resourceVersion":"501","creationTimestamp":"2024-06-27T03:52:42Z","labels":{"component":"apiserver","provider":"kubernetes"},"annotations":{"foo":"xyz"},"managedFields":[{"manager":"kube-apiserver","operation":"Update","apiVersion":"v1","time":"2024-06-27T03:52:42Z","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:labels":{".":{},"f:component":{},"f:provider":{}}},"f:spec":{"f:clusterIP":{},"f:internalTrafficPolicy":{},"f:ipFamilyPolicy":{},"f:ports":{".":{},"k:{\"port\":443,\"protocol\":\"TCP\"}":{".":{},"f:name":{},"f:port":{},"f:protocol":{},"f:targetPort":{}}},"f:sessionAffinity":{},"f:type":{}}}},{"manager":"kubectl-annotate","operation":"Update","apiVersion":"v1","time":"2024-06-27T03:54:37Z","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:annotations":{".":{},"f:foo":{}}}}}]},"spec":{"ports":[{"name":"https","protocol":"TCP","port":443,"targetPort":6443}],"clu [truncated 209 chars]
I0627 03:55:04.021674 116995 request.go:1212] Request Body: {"metadata":{"annotations":{"foo":null}}}
I0627 03:55:04.021707 116995 round_trippers.go:463] PATCH https://127.0.0.1:34887/api/v1/namespaces/default/services/kubernetes?fieldManager=kubectl-annotate
I0627 03:55:04.021710 116995 round_trippers.go:469] Request Headers:
I0627 03:55:04.021713 116995 round_trippers.go:473] Accept: application/json
I0627 03:55:04.021715 116995 round_trippers.go:473] Content-Type: application/merge-patch+json
I0627 03:55:04.021717 116995 round_trippers.go:473] User-Agent: kubectl/v1.30.2 (linux/amd64) kubernetes/3968350
I0627 03:55:04.024471 116995 round_trippers.go:574] Response Status: 200 OK in 2 milliseconds
I0627 03:55:04.024492 116995 round_trippers.go:577] Response Headers:
I0627 03:55:04.024497 116995 round_trippers.go:580] X-Kubernetes-Pf-Flowschema-Uid: ab36eba1-08ff-4a8a-bf6f-714d794ea8a3
I0627 03:55:04.024500 116995 round_trippers.go:580] X-Kubernetes-Pf-Prioritylevel-Uid: 0626e4f8-723a-400f-a19d-528c77df29f4
I0627 03:55:04.024503 116995 round_trippers.go:580] Content-Length: 1017
I0627 03:55:04.024506 116995 round_trippers.go:580] Date: Thu, 27 Jun 2024 03:55:04 GMT
I0627 03:55:04.024508 116995 round_trippers.go:580] Audit-Id: 0eab9a94-dd3d-4d3d-8f0f-643bcc2309b6
I0627 03:55:04.024510 116995 round_trippers.go:580] Cache-Control: no-cache, private
I0627 03:55:04.024512 116995 round_trippers.go:580] Content-Type: application/json
I0627 03:55:04.024526 116995 request.go:1212] Response Body: {"kind":"Service","apiVersion":"v1","metadata":{"name":"kubernetes","namespace":"default","uid":"692799b5-7532-4291-bcb6-d69dccf13def","resourceVersion":"536","creationTimestamp":"2024-06-27T03:52:42Z","labels":{"component":"apiserver","provider":"kubernetes"},"managedFields":[{"manager":"kube-apiserver","operation":"Update","apiVersion":"v1","time":"2024-06-27T03:52:42Z","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:labels":{".":{},"f:component":{},"f:provider":{}}},"f:spec":{"f:clusterIP":{},"f:internalTrafficPolicy":{},"f:ipFamilyPolicy":{},"f:ports":{".":{},"k:{\"port\":443,\"protocol\":\"TCP\"}":{".":{},"f:name":{},"f:port":{},"f:protocol":{},"f:targetPort":{}}},"f:sessionAffinity":{},"f:type":{}}}}]},"spec":{"ports":[{"name":"https","protocol":"TCP","port":443,"targetPort":6443}],"clusterIP":"10.96.0.1","clusterIPs":["10.96.0.1"],"type":"ClusterIP","sessionAffinity":"None","ipFamilies":["IPv4"],"ipFamilyPolicy":"SingleStack","internalTrafficPolicy":"Cluster"},"status":{"loadBalancer":{}}}
service/kubernetes annotated |
1 task
Issues go stale after 60d of inactivity. Please comment or re-open the issue if you are still interested in getting this issue fixed. |
Issues go stale after 60d of inactivity. Please comment or re-open the issue if you are still interested in getting this issue fixed. |
1 task
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Description
Currently, we are using JSON patch to add/update annotations, this may cause an unexpected result.
Here is an example of the annotation
ovn.kubernetes.io/chassis
was removed by kube-ovn-controller:Who will benefit from this feature?
No response
Anything else?
The text was updated successfully, but these errors were encountered: