Skip to content
Docs · Documentation

Integrations

Flux CD

Kustomizations, HelmReleases and sources: health, inventory, reconcile, suspend and resume.

When a cluster serves the Flux CRDs, a Flux group appears under Administration, next to Argo CD, with Overview, Kustomizations, HelmReleases, Sources, Image Automation and Notifications. Each entry shows only when its kinds are served, and the group appears and disappears live as Flux is installed or removed, without a restart. The Flux kinds also stay under Custom Resources.

Kubyl talks to the Kubernetes API only. It reads the Flux CRDs, their status, Events and the controllers' logs, and acts by patching with your own RBAC. You don't need the flux CLI.

Overview

  • A health banner, with counts and ready totals per kind.
  • Needs attention: failed and stalled objects with Flux's message, suspended objects and sources that haven't been fetched. Flux doesn't record when something was suspended, so no duration is shown.
  • Recent activity from Flux objects' Events, filtered by kind, namespace or warnings.
  • The Flux controllers and their versions. The version shown is the kustomize-controller's, not the Flux release's, unless your distribution sets app.kubernetes.io/version.

Lists

Each list shows name, namespace, state with Flux's message, source and revision (short SHA, tag or digest), suspended, interval, last reconcile and age. States are Ready, Reconciling, Suspended, Failed, Stalled and Unknown. Filter by state and namespace, and select several rows to reconcile or suspend them together.

Sources

GitRepository, OCIRepository, HelmRepository, HelmChart, Bucket and ExternalArtifact show their URL (credentials stripped), ref, artifact revision and digest, last fetch and the objects that use them.

Kustomizations

A Kustomization tab has Summary, Inventory, History, Events and Controller logs. The summary shows conditions, the source and revision (with a link to the commit for GitHub, GitLab and Bitbucket URLs), path, prune, target namespace, post-build substitutions and dependencies.

  • Inventory is the tree of objects the Kustomization applied, resolved against Kubyl's live caches with their health, including ReplicaSets and Pods below workloads. Large inventories are paged 200 at a time.
  • Dependencies (dependsOn) show Waiting for X when a dependency isn't ready. Dependencies using readyExpr are never counted as blocking, because Kubyl doesn't evaluate CEL.
  • Controller logs are the kustomize-controller's lines filtered to this object. You need access to the flux-system pods; without it Kubyl says which permission is missing.
  • Inline substitutions show their values, which are plain text in the spec. substituteFrom ConfigMaps and Secrets show names only, never their contents.

HelmReleases

A HelmRelease shows its chart (from a HelmRepository, OCIRepository or GitRepository), version, values sources (names only), install and upgrade remediation settings, history, failure counters, Events and the helm-controller's logs. It links to the matching Helm release tab. HelmReleases from before helm-controller kept an inventory show that link instead of an inventory.

Image automation and notifications

ImagePolicies show their latest image, ImageUpdateAutomations their last push and commit, Alerts their Providers and event sources, and Receivers their webhook path (never the token). These are read-only.

Actions

ActionWhat Kubyl does
ReconcileSets the reconcile.fluxcd.io/requestedAt annotation, like flux reconcile.
Reconcile With SourceAnnotates the source first and waits (up to 2 minutes) until it has handled the request, then reconciles the object. A suspended source stops it; a static one is skipped.
Suspend / ResumePatches spec.suspend. Resume also requests a reconcile.
Force Upgrade… (HelmRelease)Sets reconcile.fluxcd.io/forceAt along with requestedAt.
Reset Failures (HelmRelease)Sets reconcile.fluxcd.io/resetAt to clear the failure counters.
Delete…Deletes the object and spells out what Flux's prune will do to the inventory: nothing when suspended, otherwise depending on deletionPolicy. Objects marked to be kept are listed as staying.

Actions work from lists, details, the dock and the palette (Flux: Reconcile, Reconcile With Source, Suspend…, Resume, Force Upgrade…, Reset Failures, Delete…, Edit YAML, Controller Logs). The result shows in the object's status as it goes from Reconciling to Ready or Failed, not only in a toast. Each action checks your permission first (can_i).

KeysAction
RReconcile
ShiftRReconcile with source
SSuspend…
UResume
LController logs
EEdit YAML
CtrlDDelete…
/Filter

Open a view with :ks or :kustomizations, :hr or :helmreleases, and :sources, or with Flux: Open Overview, Open Kustomizations, Open HelmReleases and Open Sources. Flux: Look for Controllers Again re-runs detection if Flux was installed a moment ago.

Managed by Flux

Objects labelled by kustomize.toolkit.fluxcd.io or helm.toolkit.fluxcd.io show Managed by Flux Kustomization X (or HelmRelease) in their details, with a link. Editing one in the YAML editor warns that Flux will revert the change at its next reconcile. Deployments, StatefulSets and DaemonSets also get a Flux column linking to the managing object with its state, shown for clusters that serve Flux.

Ask agent on a Flux object sends its state, conditions, revision, dependencies, failing inventory objects and recent warning Events, never Secret or Helm values.

Read-only clusters and PROD

  • Read-only clusters show no Flux action.
  • On PROD clusters every action asks for confirmation, and Delete needs the object's name typed.
  • Suspend, Force Upgrade and Delete always ask for confirmation.

Limitations

  • There is no flux diff equivalent and Kubyl can't bootstrap or install Flux.
  • Image automation and notifications are read-only.
  • Flux keeps changing fields between versions. Kubyl reads each kind at the version the cluster serves and shows what it can for older beta versions.

Something missing or wrong? Open an issue on GitHub.