Kontemplate Versions Save

Extremely simple Kubernetes resource templates | Source has moved to https://git.tazj.in/tree/ops/kontemplate

v1.8.0

4 years ago

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.

v1.7.0

5 years ago

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):

    1. Default values in resource sets.
    2. Values imported from files (via import:)
    3. Global values in a cluster configuration
    4. Values set in a resource set's include-section
    5. Explicit values set on the CLI (--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.

v1.6.0

5 years ago

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!

v1.5.0

6 years ago

This release of Kontemplate features two new features contributed by users:

  1. 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!

  2. 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.

v1.4.0

6 years ago

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.

v1.3.0

6 years ago

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.

v1.2.0

6 years ago

This release comes with some new features, usability improvements and a better build & release process.

Features:

  • Documentation has been improved significantly, check out the new README and follow the links within!
  • Extra variables can now be loaded from files on disk. Simply specify a list of YAML/JSON files under the 'import' key in your cluster context file. Check out #66 for details!
  • Resource set paths can now be overridden by users. By default it is assumed that the path to a resource set is the same as its name, however this is now user-controllable. This means the same resource set can be included multiple times under different names, for easier including/excluding. See #71 for details!
  • Kontemplate is currently getting a website that is under construction at kontemplate.works - feel free to check it out and give feedback!

Fixes:

  • Windows release binaries now have the correct filename
  • Several potential warning and error messages have been improved

Release binaries are signed with GPG key 66F505681DB8F43B which is verified on my Github profile.

v1.1.0

6 years ago

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.

v1.0.2

7 years ago

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.

v1.0.1

7 years ago

As is - of course! - tradition a small problem (#43) came up shortly after the v1.0 release.

Fixes & features included in v1.0.1:

  • a brand-new PKGBUILD for Arch Linux (it builds from git)
  • fixed an issue where kontemplate would not fail if kubectl failed.

Signed binaries are attached for Linux, OS X, Windows and FreeBSD.