Installation
Installation documentation
⚠️The flux-kluctl-controller is deprecated⚠️
Please migrate to the new Kluctl Controller
The migration guide can be found here
The Flux Kluctl Controller is a Kubernetes operator, specialized in running continuous delivery pipelines for infrastructure defined with kluctl .
⚠️The flux-kluctl-controller is deprecated⚠️
kluctl is a tool that allows you to declare and manage small, large, simple and/or complex multi-env and multi-cluster deployments. It is designed in a way that allows seamless co-existence of CLI centered DevOps and automation, for example in the form of GitOps/flux.
This means that you can continue doing local development of your deployments and test them from your local machine, for example by regularly running kluctl diff . When you believe you’re done with your work, you can then commit your changes to Git and let the Flux Kluctl Controller do the actual deployment.
You could also have a dedicated target that you solely use for local development and deployment testing and then let the Flux Kluctl Controller handle the deployments to the real (e.g. pre-prod or prod) targets.
This way you can have both:
The Flux Kluctl Controller supports all types of Kluctl projects, including simple ones where a single Git repository contains all necessary data and complex ones where for example clusters or target configurations are in other Git repositories.
⚠️The flux-kluctl-controller is deprecated⚠️
Installation instructions can be found here
⚠️The flux-kluctl-controller is deprecated⚠️
The reconciliation process can be defined with a Kubernetes custom resource that describes a pipeline such as:
A pipeline runs on-a-schedule and ca be triggered manually by a cluster admin or automatically by a source event such as a Git revision change.
When a pipeline is removed from the cluster, the controller’s GC terminates all the objects previously created by that pipeline.
A pipeline can be suspended, while in suspension the controller stops the scheduler and ignores any source events. Deleting a suspended pipeline does not trigger garbage collection.
Alerting can be configured with a Kubernetes custom resource that specifies a webhook address, and a group of pipelines to be monitored.
The API design of the controller can be found at kluctldeployment.flux.kluctl.io/v1beta1 .
⚠️The flux-kluctl-controller is deprecated⚠️
After installing flux-kluctl-controller, we can create a Kluctl deployment that automatically deploys the Microservices Demo .
Create a KluctlDeployment that uses the demo project source to deploy the test
target to the same cluster that the
controller runs on.
apiVersion: flux.kluctl.io/v1alpha1
kind: KluctlDeployment
metadata:
name: microservices-demo-test
namespace: flux-system
spec:
interval: 10m
source:
url: https://github.com/kluctl/kluctl-examples.git
path: "./microservices-demo/3-templating-and-multi-env/"
timeout: 2m
target: test
context: default
prune: true
This example will deploy a fully-fledged microservices application with multiple backend services, frontends and
databases, all via one single KluctlDeployment
.
To deploy the same Kluctl project to another target (e.g. prod), simply create the following resource.
apiVersion: flux.kluctl.io/v1alpha1
kind: KluctlDeployment
metadata:
name: microservices-demo-prod
namespace: flux-system
spec:
interval: 10m
source:
url: https://github.com/kluctl/kluctl-examples.git
path: "./microservices-demo/3-templating-and-multi-env/"
timeout: 2m
target: prod
context: default
prune: true
Installation documentation
OpenMetrics-compatible export of controller metrics
flux-kluctl-controller specs
Kluctl Controller API reference