Labels and Annotations in Kubernetes

What’s the difference between labels and annotations?

At first glance, both seem to be simple key-value pairs, meant to add metadata to a Kubernetes setup. The distinction is easy to explain, but takes a bit of time to understand from the docs.

Labels

Contain identifying information and are a used by selector queries or within selector sections in object definitions. The structure of keys as well as values is constrained. This way, queries can be evaluated quickly, using optimized data structures and algorithms.

From the labels docs:

We don’t want to pollute labels with non-identifying, especially large and/or structured, data. Non-identifying information should be recorded using annotations.

Annotations

Are used for non-identifying information. Stuff not used internally by k8s. You can’t specify selectors over them within Kubernetes, but they can be used by external tools and libraries. As the internal performance of Kubernetes is not negatively impacted by huge annotations, the keys and values are not constrained like labels are.

From the annotations docs:

The metadata in an annotation can be small or large, structured or unstructured, and can include characters not permitted by labels.

Next Steps

If you need to point Kubernetes to a group of resources, labels are the way to go. Make sure that the data you have in mind abides by the constraints.

If you want to annotate your setup with data which will help people or tools, but not Kubernetes itself, it’s better to put it into annotation meta data.

Could your current workflows benefit from having direct access to something like timestamps, commit SHAs or the name of the person who is responsible for certain resources? Just add an annotation step to your current deployment pipeline.

Get updates
You will get emails when I publish something new or have something useful to share about making profitable digital businesses less brittle, less founder-dependent and easier to run.

Expect practical notes on backups, safer deploys, infrastructure as code, observability, documentation and automation. Usually no more than one email per week. You can unsubscribe at any time.

Für den Versand unserer Newsletter nutzen wir rapidmail. Mit Ihrer Anmeldung stimmen Sie zu, dass die eingegebenen Daten an rapidmail übermittelt werden. Beachten Sie bitte auch die AGB und Datenschutzbestimmungen .

vsupalov.com

© 2024 vsupalov.com. All rights reserved.