Kompos - k8s cloud automation
Project description
kompos
Kompos is a configuration driven tool for provisioning and managing Kubernetes infrastructure across AWS and Azure. It uses a hierarchical folder structure and yaml files to store and generate configurations, with pluggable compositions that encapsulates the infrastructure code and state. Terraform and helmfile are supported as provisioners.
Below is a graphical representation of the data flow.
Installation
NOTE: Only Python 3 is supported.
PyPI
pip install kompos
Locally for development
Using virtualenv
pip install virtualenv
virtualenv .env
source .env/bin/activate
(env) cd kompos/
(env) pip install --editable .
Hierarchical configuration
Kompos leverages himl to provide a hiera-like configuration structure.
Checkout the examples for more information.
Nix integration
With kompos you can leverage nix to pin your infrastructure code (i.e terraform & helmfile releases) on a specific version. This enables you to finely control your deployments and use different infrastructure versions per environment, cluster etc.
Prerequisites
Install nix
and nix-prefetch-git
.
$ curl -L https://nixos.org/nix/install | bash
$ nix-env -f '<nixpkgs>' -iA nix-prefetch-git
Configuration
The integration can be globally enabled or diabled with the flag nix: [true|false]
and a disable overwrite
with --no-nix
argument. Below are the
necessary parts of komposconfig regarding nix & versioning:
terraform:
# This is the place to look for the terraform repo locally.
# Used as the default if nix is not enabled.
local_path: '/home/user/terraform-stack'
# This is needed in case the modules are not in the root of the repo.
root_path: 'src/terraform'
repo:
# This will be the name of the nix derivation for terraform.
name: 'terraform-stack'
# The repo we would like to version.
url: "git@github.com:my-org/terraform-stack.git"
# Likewise for helmfile.
helmfile:
local_path: '/home/user/helmfile-releases'
root_path: 'src/helmfiles'
repo:
name: 'helmfile-releases'
url: "git@github.com:my-org/helmfile-releases.git"
nix: true
And in the hierarchical configuration you'll need the following keys:
infrastructure:
terraform:
version: "0.1.0" # A git tag or a commit sha.
# This is an optional field.
# The sha256 hash of the repo provides data integrity and ensures that we
# always get the same input.
#
# It can be omitted when you're using a tag that is periodically updated.
# (e.g in a dev/nightly environment). Since this is a mandatory field for nix,
# nix-prefetch-git will be used as a fallback to caclulate it.
sha256: "ab9190b0ecc8060a54f1fac7de606e6b2c4757c227f2ce529668eb145d9a9516"
# Likewise for helmfile.
helmfile:
version: "0.1.0"
sha256: "139cd5119d398d06f6535f42d775986a683a90e16ce129a5fb7f48870613a1a5"
Docker Image
License
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 kompos-0.4.5.tar.gz
.
File metadata
- Download URL: kompos-0.4.5.tar.gz
- Upload date:
- Size: 23.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2302779bf5ca94096f9fc5a3ef3cd02a0646885942320a83aca5192aeb4dd5e9 |
|
MD5 | b290a0f8488a45ea2282562f78cbc808 |
|
BLAKE2b-256 | 5043b16248e09ebbf98dabc25f48878ac91455121ddbaa99b275896f12da0324 |
File details
Details for the file kompos-0.4.5-py3-none-any.whl
.
File metadata
- Download URL: kompos-0.4.5-py3-none-any.whl
- Upload date:
- Size: 26.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 64c272e379ff2b9b56af5d51e10d913fb309082eba27b74fad6ac1be20c585ee |
|
MD5 | 8a99827ce082ed925facd313812b759e |
|
BLAKE2b-256 | cb991d323acb5aac4ae74427f684a943239be0ae2da6d77481bb8f19a56dce5e |