Files
Davanum Srinivas 9a61304919 bump k8s.io/kube-openapi, drop github.com/mailru/easyjson
Updates k8s.io/kube-openapi from v0.0.0-20241212222426-2c72e554b1e7 to
v0.0.0-20260502001324-b7f5293f4787 across api, kyaml, and kustomize modules,
then propagates the change across all workspace modules via make workspace-sync.

The new kube-openapi release switched from the monolithic go-openapi/swag
(v0.23.0) to the refactored split sub-modules (go-openapi/swag/* v0.25.4).
The old swag carried github.com/mailru/easyjson as a dependency; the new
sub-modules do not. After go mod tidy, easyjson and josharian/intern are
fully removed from all three module graphs.

Also upgraded: github.com/google/gnostic-models v0.6.9 → v0.7.0 (pulled
in by the same kube-openapi update).

Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2026-05-02 10:47:24 -04:00
..

Template GoTemplate

This is an example of implementing a template function using a go template.

This example uses a more sophisticated approach for building abstractions.

Function implementation

The function is implemented as an image, and built using make image.

The template is implemented as a go program with a go template. It parses the functionConfig into a go struct and uses the kyaml module for parsing the function input, and writing the function output.

  1. read the inputs (stdin)
  2. apply filters
  • (custom filter) generate the nginx Deployment and Service from go templates using the functionConfig as the template input.
  • merge the generated Deployment and Service with the input Deployment and Service if present
  • set filenames on the Resources (NAME.yaml)
  • format the Resources
  1. write the outputs (stdout)

Function invocation

The function is invoked by authoring a local Resource with metadata.annotations.[config.kubernetes.io/function] and running:

kustomize fn run local-resource/

This generates the local-resource/config directory containing the template output.

  • the template output may be modified by adding fields -- such as initContainers, sidecarConatiners, cpu resource limits, etc -- and these fields will be retained when re-running run
  • the function input example-use.yaml may be changed and rerunning run will update only the parts changed in the template output.

Running the Example

Run the config with:

kustomize build --enable-alpha-plugins local-resource/

This will create the directory

local-resource/config

Add an annotation to the Deployment Resource and change the replica count of the kind: Nginx Resource in example-use.yaml. Rerun the template:

kustomize build --enable-alpha-plugins local-resource/

The replica count should be updated, but your annotation should remain.