This guide walks you through setting up a FluxCD demo environment using kind (Kubernetes in Docker) and a local Helm chart registry.
You’ll see how Flux automates Helm releases and how to observe its reconciliation behavior in action while running tests with NetAssert.
Before starting, make sure you have the following tools installed:
FluxCD can work with OCI-based Helm registries. Start a local Docker registry to host your Helm charts:
docker run -d -p 5000:5000 --restart=always --name registry-5000 registry:2This creates a local registry accessible at localhost:5000.
Create a local Kubernetes cluster using your configuration file:
kind create cluster --config kind-cluster.yamlOnce complete, verify the cluster is ready:
kubectl cluster-info
kubectl get nodesRefer to the official documentation for detailed installation instructions:
👉 FluxCD Installation Guide
For this demo, you can use the following command:
kubectl apply -f https://github.com/fluxcd/flux2/releases/download/v2.7.2/install.yamlVerify that FluxCD is running:
kubectl get pods -n flux-systemExpected output should include components like:
helm-controller
kustomize-controller
notification-controller
source-controller
All should reach the Running state.
Before packaging, update the NetAssert subchart to a version available in the packages section of this repo.
Run the following command to package your chart into a .tgz archive:
helm package ./helm -d .This produces a packaged chart file, for example:
./fluxcd-demo-0.0.1-dev.tgz
Push the packaged Helm chart to your local OCI registry:
helm push ./fluxcd-demo-0.0.1-dev.tgz oci://localhost:5000/fluxcd/Apply the fluxcd-helmconfig.yaml file so FluxCD can release the charts:
kubectl apply -f fluxcd-helmconfig.yamlFlux continuously monitors and applies Helm releases defined in your cluster.
To observe its behavior, list Helm releases managed by Flux:
kubectl get helmreleasesFlux will automatically pull your Helm chart from the registry and apply it.
- The init container in your k8s deployment object intentionally delay completion.
- The Netassert job will not be created until the deployment finishes.
- Once the deployments completes, Netassert will start running as a Job, and once finished it is going to make the release marked as successful or failed.
You can simulate a Helm chart upgrade to observe Flux’s automated update handling.
-
Update chart version — bump your chart version.
-
Repackage the chart:
helm package ./helm -d . -
Push the new version to the registry:
helm push ./fluxcd-demo-0.0.2-dev.tgz oci://localhost:5000/fluxcd/
-
Watch Flux detect and reconcile the new version:
kubectl get helmreleases -w
You’ll see Flux automatically roll out the new chart and update your resources in place, and then run the NetAssert tests.