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)
- 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.- Default installation
- Bare Metal
- Cloud
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 thetimoni 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 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 FluxOCIRepository and Kustomization objects and allows
the configuration of the OCI artifact URL, auth credentials, tag, interval, substitutions, health checks.
- Public repository
- Private repository
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 Apply the bundle with:You can fine tune the sync using the options listed in the flux-oci-sync module
readme.
default namespace: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 FluxGitRepository and Kustomization objects and allows
the configuration of the Git HTTPS URL, auth token, branch, path, interval, health checks.
- Public repository
- Private repository
- GitHub App auth
- Self-hosted repository
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 Apply the bundle with:You can fine tune the sync using the options listed in the flux-git-sync module
readme.
default namespace:Flux multi-tenancy configuration
To enable Flux multi-tenancy lockdown, you can setsecurityProfile: "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 theflux-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.