* workspace sync
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
* downgrade go-difflib and go-spew to tagged releases
commit d35edbf80d updated these dependencies
to untagged versions. The diff in both dependencies show that there's no
code changes, and it's unlikely for those modules to do new releases.
Unfortunate, because of that change all projects depending on kubernetes
or any of it's modules now had to upgrade to unreleased versions of
these.
This patch reverts those updates (but it may take some time before
all other projects can be reverted).
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
---------
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
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.
- read the inputs (stdin)
- 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
- 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.yamlmay be changed and rerunningrunwill 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.