Kubernetes templating engine based on Jinja2
Project description
k8t
Pronounced katie [ˈkeɪti]
Simple cluster and environment specific aware templating for kubernetes manifests.
Table of Contents generated with DocToc
installation
run this
$ pip install --user --upgrade k8t
usage
scaffolding
Create a new project folder with a cluster directory and an empty defaults file
$ k8t new project foobar
Create a new cluster
$ k8t new cluster A
Create a new environment
$ k8t new environment staging -c A
$ k8t new environment production
Generate a new deployment template for cluster A (currently only deployment
and service
are supported)
$ k8t new template deployment -c A
Specify prefixes for secrets
$ k8t edit config --cluster A --environment staging
secrets:
prefix: "staging/application"```
Values can be easily added/modified in the same way
$ k8t edit values --cluster Ano creds to it anyway or dont know where to get
A typical setup should look something like this
.deploy/
├── clusters
│ ├── A
│ │ ├── config.yaml
│ │ ├── environments
│ │ │ ├── production
│ │ │ │ ├── config.yaml
│ │ │ │ ├── files
│ │ │ │ ├── templates
│ │ │ │ └── values.yaml
│ │ │ └── staging
│ │ │ ├── config.yaml
│ │ │ ├── files
│ │ │ ├── templates
│ │ │ └── values.yaml
│ │ ├── files
│ │ ├── templates
│ │ └── values.yaml
│ └── local
│ ├── environments
│ ├── files
│ ├── secret.yaml.j2
│ ├── templates
│ │ ├── database.yaml.j2
│ │ └── secret.yaml.j2
│ └── values.yaml
├── config.yaml
├── files
├── templates
│ ├── deployment.yaml.j2
│ └── secret.yaml.j2
└── values.yaml
validate files
While validation is done before generating, templates can be validated for environment files easily.
$ k8t validate
To validate for clusters/environments the usual options can be used
$ k8t validate -c A -e production
generate files
The --cluster flag will load variables from a directory. By default the file default.yaml in that directory will be loaded, however an environment can be specified with --environment.
$ k8t gen -c A -e staging
Additionally k8t will attempt to load a file defaults.yaml in the root directory. This way a set of default variables can be specified and selectively overriden via cluster and environment.
Additional values can be given via flag --value-file in the form of a file or --value KEY VALUE, both can be supplied multiple times.
Variables will be merged via deep merging. Default merge strategy is left-to-right. For the merge order see the output of
$ k8t --help
Overriding templates
Templates can be overriden on a cluster/environment level.
If a file application.yaml
exists in the root templates folder, simply add a file with the same name to the
cluster/environment template folder.
Managing secrets
SSM
Setup secrets on SSM
$ k8t edit config
secrets:
provider: ssm
prefix: "foobar"
TODO
- testing needs to be expanded
- add more templates for manifest scaffolding
- the ability to add additional template directories via the CLI
- validation functions for template values (e.g. memory/cpu values)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file k8t-0.1.8.tar.gz
.
File metadata
- Download URL: k8t-0.1.8.tar.gz
- Upload date:
- Size: 21.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.37.0 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d0a946deb2fe26cd6f31c0f27d92f33c801136be0c4be93e9e4f710adebf0d0 |
|
MD5 | 75a77427a45151a840432ed28756a34e |
|
BLAKE2b-256 | 6f2772cc6f5e2cfcbaabd778cf60005d94f8fb883ddc1b85191e531fdf63b3b0 |
File details
Details for the file k8t-0.1.8-py3-none-any.whl
.
File metadata
- Download URL: k8t-0.1.8-py3-none-any.whl
- Upload date:
- Size: 21.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.37.0 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 99be8ccbc3b08c0aa787dc7b52ccd5f297d0b702461133d910d49c99c535a43d |
|
MD5 | 26c1cb4b01683faf7c05fb5b361f4588 |
|
BLAKE2b-256 | b9c04e3f8a9d20b995d0db6c225965a7f62e7a7737ad38d6b665437797385c8c |