Skip to content

Flux Overview

Flux Components

Pasted image 20230118232533.png

Source Controller:
Pasted image 20230118232547.png
Features:

  • Validate source definitions
  • Authenticate to sources (SSH, user/password, API token)
  • Validate source authenticity (PGP)
  • Detect source changes based on update policies (semver)
  • Fetch resources on-demand and on-a-schedule
  • Package the fetched resources into a well-known format (tar.gz, yaml)
  • Make the artifacts addressable by their source identifier (sha, version, ts)
  • Make the artifacts available in-cluster to interested 3rd parties
  • Notify interested 3rd parties of source changes and availability (status conditions, events, hooks)

Kustomize Controller
Pasted image 20230118232617.png
Features:

  • Reconciles the cluster state from multiple sources (provided by source-controller)
  • Generates manifests with Kustomize (from plain Kubernetes yamls or Kustomize overlays)
  • Validates manifests against Kubernetes API
  • Impersonates service accounts (multi-tenancy RBAC)
  • Health assessment of the deployed workloads
  • Runs pipelines in a specific order (depends-on relationship)
  • Prunes objects removed from source (garbage collection)
  • Reports cluster state changes (alerting provided by notification-controller)

Helm Controller
Pasted image 20230118232635.png

The desired state of a Helm release is described through a Kubernetes Custom Resource named HelmRelease. Based on the creation, mutation or removal of a HelmRelease resource in the cluster, Helm actions are performed by the controller.

Features:

  • Watches for HelmRelease objects and generates HelmChart objects
  • Supports HelmChart artifacts produced from HelmRepository and GitRepository sources
  • Fetches artifacts produced by source-controller from HelmChart objects
  • Watches HelmChart objects for revision changes (including semver ranges for charts from HelmRepository sources)
  • Performs automated Helm actions, including Helm tests, rollbacks and uninstalls
  • Offers extensive configuration options for automated remediation (rollback, uninstall, retry) on failed Helm install, upgrade or test actions
  • Runs Helm install/upgrade in a specific order, taking into account the depends-on relationship defined in a set of HelmRelease objects
  • Prunes Helm releases removed from cluster (garbage collection)
  • Reports Helm releases statuses (alerting provided by notification-controller)
  • Built-in Kustomize compatible Helm post renderer, providing support for strategic merge, JSON 6902 and images patches

Notification Controller
Pasted image 20230118232727.png
The controller handles events coming from external systems (GitHub, GitLab, Bitbucket, Harbor, Jenkins, etc) and notifies the GitOps toolkit controllers about source changes.

The controller handles events emitted by the GitOps toolkit controllers (source, kustomize, helm) and dispatches them to external systems (Slack, Microsoft Teams, Discord, Rocker) based on event severity and involved objects.

Additional Resources:


Last update : 28 avril 2023
Created : 28 avril 2023