A library for processing Go templates in policy templates or other Open Cluster Management objects.
Go to the Contributing guide to learn how to get involved.
- The
go-template-utils
repository is part of theopen-cluster-management
community. For more information, visit: open-cluster-management.io.
To get started, use the templates.NewResolver function along with a templates.Config instance.
See the ResolveTemplate example for an example of how to use this library.
Under the hood, go-template-utils
wraps the
text/template package. This means that as
long as the input to
templates.ResolveTemplate
can be marshaled to YAML, any of the
text/template package features can be used.
Additionally, the following custom functions are supported:
atoi
parses an input string and returns an integer like the Atoi function. For example,{{ "6" | atoi }}
.autoindent
will automatically indent the input string based on the leading spaces. For example,{{ "Templating\nrocks!" | autoindent }}
.base64enc
decodes the input Base64 string to its decoded form. For example,{{ "VGVtcGxhdGVzIHJvY2shCg==" | base64dec }}
.base64enc
encodes an input string in the Base64 format. For example,{{ "Templating rocks!" | base64enc }}
.indent
will indent the input string by specified amount. For example,{{ "Templating\nrocks!" | indent 4 }}
.fromClusterClaim
returns the value of a specificClusterClaim
. For example,{{ fromClusterClaim "name" }}
.fromConfigMap
returns the value of a key inside aConfigMap
. For example,{{ fromConfigMap "namespace" "config-map-name" "key" }}
.fromSecret
returns the value of a key inside aSecret
. For example,{{ fromSecret "namespace" "secret-name" "key" }}
. If theEncryptionMode
is set toEncryptionEnabled
, this will return an encrypted value.lookup
is a generic lookup function for any Kubernetes object. For example,{{ (lookup "v1" "Secret" "namespace" "name").Data.key }}
.protect
is a function that encrypts any string using AES-CBC.toBool
- parses an input boolean string converts it to a boolean but also removes any quotes around the map value. For example,key: "{{ "true" | toBool }}"
=>key: true
.toInt
parses an input string and returns an integer but also removes any quotes around the map value. For example,key: "{{ "6" | toInt }}"
=>key: 6
.toLiteral
removes any quotes around the template string after it is processed. For example,key: "{{ "[10.10.10.10, 1.1.1.1]" | toLiteral }}
=>key: [10.10.10.10, 1.1.1.1]
. A good use-case for this is when aConfigMap
field contains a JSON string that you want to literally replace the template with and have it treated as the underlying JSON type.