A CLI tool for bootstrapping Kubernetes application manifests using Jinja templates, designed for compatibility with Flux GitOps workflows losely following the the onedr0p/cluster-template setup.
- Supports multiple jinja application templates, including directory structure and conditional file creation
- Accepts template values via cli options and interactive UI prompts
- Jinja2 templating for consistent, reusable YAML
- Colorized diff and confirmation before overwriting existing files
- Implement support for LoadBalancer and NodeIP Service Types
- Implement non-http ingress support
- Possible integration with kubesearch.dev would be cool
- Add newly created kustomizations to the namespace manifests
TBD
WARNING: this is pre-release software. Use at your own risk.
By default, the program will look for templates inside of .templates/fluxit
, relative to the current workdir.
Sample templates can be found in the examples/templates directory.
Generally, you would execute fluxit
in the root of your cluster's gitops repo. By default, namespace configurations are expected in the ./kubernetes/apps
directory.
See fluxit --help
for the list of options you can use to override the defaults.
Usage: fluxit [OPTIONS]
fluxit CLI tool for rendering Kubernetes templates.
Options:
--k8s-app-dir DIRECTORY Path to the Kubernetes apps directory.
[default: kubernetes/apps]
--template-dir DIRECTORY Path to the base directory containing
templates. [default: .templates/fluxit]
--template TEXT Name of the template subdirectory within the
template directory. [default: app_template]
--log-level [DEBUG|INFO|WARNING|ERROR]
Logging verbosity.
--confirm [always|never|if_exists]
When to ask for confirmation before
saving/overwriting files: `always`: Always
ask for confirmation, `never`: Never ask for
confirmation, `if_exists`: Ask for
confirmation only if the file already
exists. [default: if_exists]
--color / --no-color Enable or disable colorized diff output in
confirmation prompts. Currently does not
apply to other output. [default: color]
-h, --help Show this message and exit.
-v, --version Show the version and exit.
--ns TEXT Name of the namespace where deployment
scaffold will be created.
--app-name APP-NAME Name of the application.
--ingress [disabled|http] Ingress type to be used by the app.
--ingress-host TEXT Hostname for the ingress resources.
--service-port INTEGER Port number for the service.Currently
assumes TCP protocol and identical source
and target ports. [default: 80]
--image-repo TEXT Container Image repository
--image-tag TEXT Container Image Tag
--deployment-strategy [Recreate|RollingUpdate]
Pod Deployment strategy. [default:
Recreate]
--replicas INTEGER Number of replicas for the deployment.
[default: 1]
--include-cm / --no-include-cm Whether to include a ConfigMap template.
--include-secret / --no-include-secret
Whether to include a Secret template.
- Original cluster template: onedr0p/cluster-template
- Geekifier's k8s-at-home repo: geekifier/k8s-home-gitops
This project's Python dependencies are managed by uv, and there is also a mise config provided.
If you have mise
installed, simply run mise trust
and mise install
. Otherwise, run uv sync
directly.
uv run fluxit
Optionally, you an specify the working directory that you want to execute the tool against:
uv run --directory ~/somedir/my-kube-cluster-repo fluxit
See LICENSE