Skip to main content
Flux All-In-One is a lightweight Flux CD distribution made with Timoni for running the GitOps Toolkit controllers as a single deployable unit.
Helm charts interoperabilityFlux AIO can be used as a bridge between Timoni and Helm, enabling Timoni to orchestrate Helm chart deployments by leveraging Flux’s declarative Helm APIs. For more information see the Helm interoperability guide.

Specifications

This distribution is optimized for running Flux on:
  • Edge clusters with limited CPU and memory resources
  • Bare clusters without a CNI plugin installed
  • Clusters where plain HTTP communication is not allowed between pods
  • Serverless clusters for cost optimisation (EKS Fargate, GKE Autopilot)
Timoni modules part of this distribution:
  • flux-aio - A module for deploying Flux core components such as source-controller, helm-controller, kustomize-controller and notification-controller.
  • flux-oci-sync - A module for configuring Flux to deploy workloads from OCI artifacts.
  • flux-git-sync - A module for configuring Flux to deploy workloads from Git repositories.
  • flux-helm-release - A module for configuring Flux to deploy Helm releases from charts hosted on Helm HTTP/S and OCI repositories.
  • flux-tenant - A module for onboarding tenants with limited access on Flux-managed clusters.

Flux installation

To deploy Flux on Kubernetes clusters, you’ll be using the flux-aio module and a Bundle file where you’ll define the configuration of the Flux controllers and their settings.
Install Flux with default settings on a Kubernetes cluster:
Apply the bundle with:
You can fine tune the Flux installation using various options listed in the flux-aio module readme.

Flux upgrade

To upgrade Flux to the latest version, you can rerun the timoni bundle apply -f flux-aio.cue command, and Timoni will check if a newer version of the flux-aio module is available and apply the changes. To upgrade Flux to a specific version, you can specify the version in the module.version field:
Flux AIO versioningThe versioning of the AIO distribution follows semver with the following format: <flux version>-<distribution release number>, e.g. 2.9.4-0.To list all available versions of the flux-aio module, you can use the timoni mod ls command, or you can check the flux-aio release page.

Flux OCI sync configuration

To configure Flux to deploy workloads from OCI artifacts hosted on container registries, you’ll be using the flux-oci-sync module. This module generates Flux OCIRepository and Kustomization objects and allows the configuration of the OCI artifact URL, auth credentials, tag, interval, substitutions, health checks.
To configure Flux to sync with a public OCI repository, you have to specify the OCI address of the repository, the tag or semver range, and optionally you can enable waiting for the workloads to become ready.For example, to sync the podinfo Kustomize overlay to the default namespace:
Apply the bundle with:
You can fine tune the sync using the options listed in the flux-oci-sync module readme.

Flux Git sync configuration

To configure Flux to deploy workloads from a Git repository, you’ll be using the flux-git-sync module. This module generates Flux GitRepository and Kustomization objects and allows the configuration of the Git HTTPS URL, auth token, branch, path, interval, health checks.
To configure Flux to sync with a public Git repository, you have to specify the Git HTTPS address of the repository, the Git ref (can be a branch or tag) and the path to the Kubernetes manifests or to the Kustomize overlay.For example, to sync the podinfo Kustomize overlay to the default namespace:
Apply the bundle with:
You can fine tune the sync using the options listed in the flux-git-sync module readme.

Flux multi-tenancy configuration

To enable Flux multi-tenancy lockdown, you can set securityProfile: "restricted" in the flux-aio values. With the restricted profile, Flux Kustomizations and HelmReleases can’t create cluster-wide resources (CRDs, Namespaces, ClusterRoleBindings, etc) unless they are deployed in the flux-system namespace. The flux-system namespace, like kube-system, is reserved to cluster admins.

On-board tenants

To configure Flux to deploy workloads from a tenant repository, you’ll be using the flux-tenant and flux-git-sync Timoni modules. The flux-tenant module generates the tenant’s Kubernetes namespace and RBAC (service account & role binding) that constrains Flux to be able to deploy applications only in that namespace. The flux-git-sync module configures Flux to reconcile the tenant’s Kubernetes resources from their Git repository while impersonating the restricted service account.
On-board the tenant with:

Off-board tenants

Off-board the tenant and remove all their workloads with: