Reputation: 45
When applying an update to a kubernetes resource with kubectl -f apply
and in the applied configuration I removed some annotations that currently exists in the deployed resource, these annotations are not being removed (but the changes in the existing ones are being properly updated). How can I force to delete the removed annotations in the update process?
BTW, I want avoid to delete and recreate the resource
Upvotes: 1
Views: 3384
Reputation: 8830
As @Matt mentioned
Did you use kubectl apply to create this data on the resource? apply stores previous state in an annotation. If that annotation doesn't exist then it can't detect what data to delete
More about it here
You can use kubectl edit to delete those annotations.
Edit a resource from the default editor.
The edit command allows you to directly edit any API resource you can retrieve via the command line tools. It will open the editor defined by your KUBE_EDITOR, or EDITOR environment variables, or fall back to 'vi' for Linux or 'notepad' for Windows. You can edit multiple objects, although changes are applied one at a time. The command accepts filenames as well as command line arguments, although the files you point to must be previously saved versions of resources.
Editing is done with the API version used to fetch the resource. To edit using a specific API version, fully-qualify the resource, version, and group.
The default format is YAML. To edit in JSON, specify "-o json".
The flag --windows-line-endings can be used to force Windows line endings, otherwise the default for your operating system will be used.
In the event an error occurs while updating, a temporary file will be created on disk that contains your unapplied changes. The most common error when updating a resource is another editor changing the resource on the server. When this occurs, you will have to apply your changes to the newer version of the resource, or update your temporary saved copy to include the latest resource version.
I made an example with nginx pod and some annotation
apiVersion: v1
kind: Pod
metadata:
name: annotations-demo
annotations:
delete: without-restart
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
I used
kubectl describe to check if the annotation is added.
Annotations: delete: without-restart
kubectl edit to delete this annotation, it's empty now.
Annotations:
Upvotes: 2