set-annotations: Advanced Example #
Overview #
This example demonstrates how to declaratively run
set-annotations function
to upsert annotations to the .metadata.annotations field on all resources.
We use the following Kptfile and fn-config.yaml to configure the function.
apiVersion: kpt.dev/v1
kind: Kptfile
metadata:
name: example
pipeline:
mutators:
- image: ghcr.io/kptdev/krm-functions-catalog/set-annotations:latest
configPath: fn-config.yaml
# fn-config.yaml
apiVersion: fn.kpt.dev/v1alpha1
kind: SetAnnotations
metadata:
name: my-func-config
annotations:
fruit: apple
color: orange
additionalAnnotationFields:
- kind: MyResource
group: dev.example.com
version: v1
create: true
path: spec/selector/annotations
The desired annotations are provided using the annotations field. We have a
CRD with group dev.example.com, version v1 and kind MyResource. We want
the annotations to be added to field .spec.selector.annotations as well. We
specify it in field additionalAnnotationFields.
Function invocation #
Invoke the function by running the following commands:
$ kpt pkg get https://github.com/kptdev/krm-functions-catalog/tree/master/examples/set-annotations-advanced
$ kpt fn render set-annotations-advanced
Expected result #
Check all resources have 2 annotations: color: orange and fruit: apple. And
the resource of kind MyResource also has these 2 annotations in
spec.selector.annotations.