Documents
_index
_index
Type
External
Status
Published
Created
Feb 19, 2026
Updated
Apr 21, 2026
Updated by
Dosu Bot
Source
View

{{< listversions >}}

{{< listexamples >}}

Overview#

The set-annotations function adds a list of annotations to all resources.
Annotations are commonly used in Kubernetes for attaching arbitrary metadata to
KRM resources.

For example, annotations can be used in the following scenarios:

  • Provide information for controllers. (e.g. gce ingress controller will only
    take actions on Ingress resources with
    annotation kubernetes.io/ingress.class: gce)
  • Tools store information for later use. (e.g. kubectl apply stores what a
    user applied previously in
    annotation kubectl.kubernetes.io/last-applied-configuration)

You can learn more about annotations here.

Usage#

This function can be used with any KRM function orchestrators (e.g. kpt).

For each annotation, the function adds it if it doesn't exist. Otherwise, it
replaces the existing annotation value with the same key.

In addition to updating the metadata.annotations field for each resource, the
function will also update any fields that contain ObjectMeta (
e.g. PodTemplate) by default. e.g. field spec.template.metadata.annotations
in Deployment will be updated to include the desired annotations.

This function can be used both declaratively and imperatively.

FunctionConfig#

There are 2 kinds of functionConfig supported by this function:

  • ConfigMap
  • A custom resource of kind SetAnnotations

To use a ConfigMap as the functionConfig, the desired annotations must be
specified in the data field.

To add 2 annotations color: orange and fruit: apple to all resources:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
data:
  color: orange
  fruit: apple

To use a SetAnnotations custom resource as the functionConfig, the desired
annotations must be specified in the annotations field. Sometimes you have
resources (especially custom resources) that have annotations fields in fields
other than the defaults, you can specify such annotations
fields using additionalAnnotationFields. It will be used jointly with the
defaults.

additionalAnnotationFields has following fields:

  • group: Select the resources by API version group. Will select all groups if
    omitted.
  • version: Select the resources by API version. Will select all versions if
    omitted.
  • kind: Select the resources by resource kind. Will select all kinds if
    omitted.
  • path: Specify the path to the field that the value will be updated. This
    field is required.
  • create: If it's set to true, the field specified will be created if it
    doesn't exist. Otherwise, the function will only update the existing field.

To add 2 annotations color: orange and fruit: apple to all built-in
resources and the path data.selector.annotations in MyOwnKind resource, we
use the following functionConfig:

apiVersion: fn.kpt.dev/v1alpha1
kind: SetAnnotations
metadata:
  name: my-config
annotations:
  color: orange
  fruit: apple
additionalAnnotationFields:
  - path: data/selector/annotations
    kind: MyOwnKind
    create: true