A library and CLI to install/uninstall Kubernetes applications to clusters.
Project description
deploydocus
What can deploydocus do?
deploydocus, in its first phase, seeks to combine the capabilities of helm and kustomize under one roof.
deploydocus, in a nutshell
- It is a Python application. It will do everything that
helmv3.x does except it will do it in a Pythonic way. - You don't have to deal with YAML or Go-templates if you don't want to. You can spec the exact same thing using
a Python
dict - It provides sane starting points for applications meant to be deployed to Kubernetes. They can be re-configured/tweaked by changing only a few keys.
- It can deploy applications to clusters in steps. If a deployment process fails, the application deployer can continue from the last failed point.
- Instead of a chart - as in
helm-, everything is spec-ed asdicts so erroneous specifications are easier to debug - they show up as a stack trace.
Why deploydocus?
or why not stick with helm, kustomize et al
helmdoes plenty well but reusing a helm chart is hard. Here are some examples.- Swapping out one container image for another is not easy: for example, not all images have the same liveness and readiness.
- Not everyone uses secrets or configmaps and also not in the same ways: some use it to mount .env files, others to set environment variables.
- Once the base chart changes, the dependent chart breaks easily. This is because hard as YAML is, Go templates are
even harder. The tiniest change in indentation using
nindentand good luck figuring out what went wrong. - Tooling around Helm charts
- Expressing an
kustomizeidea in it is really really verbose.- On top of that, try chaining a helm post-render hook with kustomize and you will see that the slightest change in what helm renders - say based on what the values are set for a helm chart - the changes you may need to the kustomize patches can be very different. i
- Debugging
kustomize buildfailures are difficult in the best of circumstances. Coupled withhelm, you will have even more trouble understanding if the failure happened because ofhelmor because of the kustomize patch.
deploydocus on the other hand, expresses Kubernetes manifests as Python object. Yes, even though behind the scenes, it has no choice but to deal in YAML (or JSON), every Kubernetes manifest is encapsulated in a Python object.
To change a deployment, say, to insert an init container, to the deployment spec, is as simple as
deployment["spec"]["template"]["spec"]["initContainers"].append(initContainersList)
deploydocus FAQs?
-
Q. Why is this in Python?
A. This could have been done using a number of languages but they had to be a scripted language. So
C/C++/Go/Rust/Javaand the like were out. Any one of the likes ofRuby,PythonandJavascriptcould have fixed the bill.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file deploydocus-0.0.1a1.tar.gz.
File metadata
- Download URL: deploydocus-0.0.1a1.tar.gz
- Upload date:
- Size: 29.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.12.7 Darwin/24.1.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2178fcdb5ec9712d4a4526a128bdc94b8329cdb01efbb8053935065f5a4d49cc
|
|
| MD5 |
0346d1d1ff5eef67c62ff8698a085bd7
|
|
| BLAKE2b-256 |
ad4c0b64da2717402562d3d5de551f441306ecdb03ccebfb4fc3f863baaa60fe
|
File details
Details for the file deploydocus-0.0.1a1-py3-none-any.whl.
File metadata
- Download URL: deploydocus-0.0.1a1-py3-none-any.whl
- Upload date:
- Size: 34.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.12.7 Darwin/24.1.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09eabc3f406a0be0d751c3df06c9f25f8fe8afe78b0968866c2a7175ab294f54
|
|
| MD5 |
d7fc07255837c59510ef27644a27187e
|
|
| BLAKE2b-256 |
f7920361244811aae49703e8e8ba247d3e68df41b64783eeb00b9f68b37b1ee0
|