Extremely simple Kubernetes resource templates | Source has moved to https://git.tazj.in/tree/ops/kontemplate
This release of Kontemplate comes with the following improvements:
Add an insertTemplate
function that works similarly to insertFile
, but applies templating against the file before inserting it.
Thanks to @judev for contributing this feature.
Ensure insertFile
and insertTemplate
act relative to resource set locations.
Previously these functions acted relative to the working directory, which broke the ability to call kontemplate on a cluster file independent of the location.
Dependencies have been updated
This includes sprig and any new functions that might have been added in it, as well as the base tooling for the publicly available container image.
Release binaries are signed with GPG key 66F505681DB8F43B
which is verified on my Github profile. They are built repeatably and reproducibly using Nix.
This release of Kontemplate comes with the following improvements:
Value merging logic has been rewritten to be more explicit. This fixes a regression (#142 and #153) that occured in version 1.6.0.
Please see #147 for implementation details.
From now on the precedence of variable overrides will follow this precedence hierarchy (in ascending order):
import:
)include
-section--var
)Thanks to @tommyJimmy87, @merlineus and @Artii for providing feedback on this change!
The template function default
has been replaced with a new implementation that actually works in the absence of values, which previously caused an error in the templating engine due to the way it is configured. (#148)
Thanks to @phillipj for contributing this change!
A new --kubectl
command-line flag can be used to specify which kubectl
executable should be invoked by Kontemplate (#145)
An issue preventing variables specified on the CLI from containing a =
-character has been fixed. (#144)
Dependencies have been updated, which means that new template functions from sprig are now available. Please consult their changelog and function overview for more information.
Release binaries are signed with GPG key 66F505681DB8F43B
which is verified on my Github profile. They are built repeatably and reproducibly using Nix.
This release of Kontemplate comes with the following improvements:
Variables can now be specified explicitly on the command line using one or more --var foo=bar
flags. Variables specified in this way have the highest precedence and will override values set in other places.
Thanks to @phillipj for contributing this feature; and to @n0madic for originally suggesting it!
File paths for additional variable imports can now point at absolute files.
This change lets users specify absolute file paths in the import
directive of a cluster configuration.
In addition to referencing files in other locations on a disk this also gives users the ability to specify "special" paths such as, for example, /dev/stdin
to load additional variables (in JSON or YAML format) from kontemplate's standard input.
Thanks to @cellofellow for nudging me in the right direction to get this implemented!
Resource sets can now have their path
set to point at a single template file.
Instead of having to create a hierarchy of directories just to template a single file, users can now include a single template file by setting the path
value appropriately:
Example:
context: some-context
include:
- name: some-resource
path: some-resource.yaml
This will template the file some-resource.yaml
from the same folder as the context configuration itself.
Some code has been refactored to make the hierarchy of variable merges more explicit.
Release binaries are signed with GPG key 66F505681DB8F43B
which is verified on my Github profile. They are built repeatably and reproducibly using Nix.
In other notes I would like to mention that I am not currently using Kubernetes in any of my own projects as I find that the complexity of the project has tipped in a direction that I am not comfortable with.
This does not mean that kontemplate
is unmaintained in any way as the tool is generally applicable for use-cases other than Kubernetes resource templating, too.
Future versions of the project may brand it slightly more in the direction of a general-purpose templater, however Kubernetes-specific functionality will not be removed.
Please keep the issues & pull requests coming & thanks for using Kontemplate!
This release of Kontemplate features two new features contributed by users:
A new template function called gitHEAD
has been added to
Kontemplate. This function inserts the git hash of, you guessed it,
the HEAD
of the git repository containing the template files.
Thanks to @noqcks for contributing this feature!
The kontemplate template
subcommand now supports a new flag
called --output
(-o
for short) which lets the user determine a
directory in which templated files should be placed. This feature
is potentially useful for multi-step templating or use-cases not
related to Kubernetes at all. Thanks to @salkin for contributing
this feature!
Release binaries are signed with GPG key 66F505681DB8F43B
which is
verified on my Github profile.
This release comes with some operational project changes, fixes and new features:
A new fileContent
template function can be used to insert the
literal contents of a file in the resource set folder into a
template.
This is useful to, for example, include literal config files in a
Kubernetes ConfigMap
.
Kontemplate releases are now built using Nix. This makes it trivial for Linux users with a Nix installation to reproduce the release binaries.
The project has been relicensed under the GPLv3. This change has no effect for most users.
In addition to these changes some documentation has been fixed up and a (WIP) example project for a Kontemplate deployment pipeline using Gitlab CI is available on gitlab.com.
Release binaries are signed with GPG key 66F505681DB8F43B
which is
verified on my Github profile.
A personal note: There wasn't supposed to be another release of the Go-version of this project, but some plans had to be pushed back due to personal issues. Some related emotional baggage has also been removed from this project.
This release comes with minor usability improvements and features.
A new 'lookupIPAddr' template function is available for resolving DNS A records in templates. Thanks to @landro for the pull request!
Handling of "non-standard" resource set structures has been improved to result in better error messages and behaviour in several places.
Release binaries are signed with GPG key 66F505681DB8F43B
which is
verified on my Github profile.
Note: This is the last Kontemplate release that will be written in Go.
Rob Pike's art project has proven its point but I believe it is ethically questionable to continue on this path.
You can track #72 for the Rust-rewrite of Kontemplate.
This release comes with some new features, usability improvements and a better build & release process.
Release binaries are signed with GPG key 66F505681DB8F43B
which is
verified on my Github profile.
This release features some cleanup and under-the-hood changes, as well as "ecosystem-features" that don't directly affect the way Kontemplate itself functions.
Resource-sets are now passed on to kubectl in individual invocations. This means that kubectl errors can be scoped to individual resource set files and issues such as #51 are less of a problem.
A Dockerfile is provided and published at tazjin:kontemplate
on
Docker Hub. This image contains kontemplate
, kubectl
and pass
and can be used - for example - as an image for a step in a CI
system.
Kontemplate is now available on Homebrew, check the README for installation instructions.
If different resource sets don't contain ---
separators in YAML,
kubectl
calls will no longer fail. (#51)
Autocompleted trailing slashes in shells are now filtered from include & exclude lists to enhance the CLI experience slightly.
Release binaries are signed with GPG key 66F505681DB8F43B
which is verified on my Github profile.
This release contains no functional changes, but the attached build binaries are built repeatably as per #48.
This fixes an issue in which differing versions of the sprig templating library would cause different behaviours.
Release binaries are signed with GPG key 66F505681DB8F43B
which is verified on my Github profile.
As is - of course! - tradition a small problem (#43) came up shortly after the v1.0 release.
Fixes & features included in v1.0.1:
PKGBUILD
for Arch Linux (it builds from git)Signed binaries are attached for Linux, OS X, Windows and FreeBSD.