Agent Skills: Flux CD Knowledge Patch

Flux CD

UncategorizedID: nevaberry/nevaberry-plugins/flux-cd-knowledge-patch

Install this agent skill to your local

pnpm dlx add-skill https://github.com/Nevaberry/nevaberry-plugins/tree/HEAD/plugins/knowledge-patch/patches-codex/flux-cd-knowledge-patch

Skill Files

Browse the full folder contents for flux-cd-knowledge-patch.

Download Skill

Loading file tree…

plugins/knowledge-patch/patches-codex/flux-cd-knowledge-patch/SKILL.md

Skill Metadata

Name
flux-cd-knowledge-patch
Description
Flux CD

Flux CD Knowledge Patch

Use this skill when writing, reviewing, migrating, or troubleshooting Flux manifests, controller flags, CLI workflows, source authentication, image automation, notification delivery, or Flux Operator installations.

Prefer the project's installed CRDs, controller versions, manifests, and live behavior when they disagree with this guidance. Flux controllers and CRDs are upgraded as a coordinated set, and feature gates must be enabled on the controller that implements the feature.

Reference index

| Reference | Topics | | --- | --- | | CLI and Operator | Debug commands, artifact commands, plugins, migrations, Operator UI | | Image automation | Stable APIs, digest pinning, cloud auth, commit templates, refspec safety | | Kustomizations and Helm | Health, apply, deletion, SOPS, values, dependencies, retries, inventory | | Notifications and Receivers | Event metadata, commit statuses, comments, transports, traces, webhook auth | | Sources, auth, and artifacts | Git and OCI sources, Workload Identity, verification, ArtifactGenerator | | Upgrades and platforms | Required migrations, removed APIs, CRD coordination, support windows |

Upgrade safety first

Before upgrading, inspect stored API versions and run:

flux migrate

The 2.7, 2.8, and 2.9 CRDs remove successive beta APIs. A manifest's current apiVersion does not prove that the object stored in etcd has been migrated. Read upgrades and platforms for the exact removed versions.

Upgrade CRDs with their controllers. This is especially important when using ArtifactGenerator or ImageUpdateAutomation, whose schemas changed in a 2.9 maintenance release. Repository manifests can be migrated with flux migrate -f where supported.

Breaking Helm post-render behavior

The HelmRelease post-render default is combined, so hooks pass through post-rendering. A chart that requires the former behavior must explicitly use nohooks before the controller upgrade.

Image automation refspec restrictions

Remove force-update and ref-deletion operations from ImageUpdateAutomation refspecs. They are rejected by current controllers.

Registry provider validation

For OCIRepository and ImageRepository, set spec.provider to aws, azure, or gcp only when the registry URL matches and automatic OIDC is intended. For public registries and pull-secret authentication, omit it or use generic.

Kustomization health and ownership

Use spec.healthCheckExprs to teach Flux readiness semantics for custom resources. Select the API version and kind, then define CEL failed and current expressions. With wait: true, dependents wait until resources are current.

spec:
  wait: true
  healthCheckExprs:
    - apiVersion: cluster.x-k8s.io/v1beta1
      kind: Cluster
      failed: "status.conditions.filter(e, e.type == 'Ready').all(e, e.status == 'False')"
      current: "status.conditions.filter(e, e.type == 'Ready').all(e, e.status == 'True')"

For an API-group-wide rule, omit kind. Dependency entries in Kustomization.spec.dependsOn and HelmRelease.spec.dependsOn can also use CEL readiness expressions.

Use Kustomization.spec.ignore when another controller owns selected fields:

spec:
  ignore:
    - target:
        kind: Deployment
      paths:
        - /spec/replicas

This keeps fields such as HPA-managed replicas out of drift detection and apply. See Kustomizations and Helm for deletion policies, apply staging, decryption, and feature-gate interactions.

Helm reconciliation defaults

New Helm releases use Helm v4 server-side apply and kstatus health checks. Existing stored releases continue with client-side apply until opted in. Use the UseHelm3Defaults feature gate only when the previous apply and health behavior is required.

For quicker recovery, enable CancelHealthCheckOnNewRevision on helm-controller together with DefaultToRetryOnFailure. Cancellation can be caused by source or spec changes, watched ConfigMaps or Secrets, manual reconciliation, or Receiver triggers, and reports HealthCheckCanceled.

Use RetryOnFailure for install and upgrade retries. Inspect HelmRelease.status.inventory to see the managed object set.

HelmRelease.valuesFrom literal mode treats the entire referenced key as one string, matching helm install --set-literal; it does not parse types or expand dotted property names.

Source and identity choices

Use the stable source.toolkit.fluxcd.io/v1 API for OCIRepository; migration from v1beta2 requires only an apiVersion change. Git repositories support directory-based sparse checkout, HTTPS mutual TLS, GitHub App authentication, and several object-level Workload Identity paths.

Create GitHub App credentials with:

flux create secret githubapp github-auth \
  --app-id=1 \
  --app-installation-id=2 \
  --app-private-key=~/private-key.pem

Reference the Secret through spec.secretRef.name. Supported flows can look up the installation ID from the repository owner, so it need not always be provided. Read sources, auth, and artifacts before choosing static credentials, controller identity, or object identity.

ArtifactGenerator workflows

Install the optional source-watcher component with:

flux bootstrap ... --components-extra=source-watcher

ArtifactGenerator can combine Git, OCI, and Bucket content, split a monorepo into independently revised ExternalArtifact objects, and extract or modify Helm charts. spec.pathPattern discovers matching directories; named captures become variables in artifact names, labels, and copy rules.

Point a Kustomization source or a HelmRelease.spec.chartRef at an ExternalArtifact. Path-specific outputs prevent unrelated monorepo changes from triggering every deployment.

Image digest pinning

Set ImagePolicy.spec.digestReflectionPolicy: Always to track the latest digest. Image automation can then write <registry>/<name>:<tag>@<digest>. For resources that split image fields, use the :name, :tag, and :digest markers:

image:
  repository: docker.io/my-org/my-app # {"$imagepolicy": "flux-system:my-app:name"}
  tag: latest # {"$imagepolicy": "flux-system:my-app:tag"}
  digest: sha256:ec0119... # {"$imagepolicy": "flux-system:my-app:digest"}

The image APIs are stable at image.toolkit.fluxcd.io/v1. Update old commit templates away from removed .Updated and .Changed.ImageResult fields. Details are in image automation.

Reactive configuration

To reconcile immediately when a referenced ConfigMap or Secret changes, label that object:

metadata:
  labels:
    reconcile.fluxcd.io/watch: Enabled

Alternatively, configure the relevant controller with --watch-configs-label-selector=owner!=helm. This applies to supported Kustomization, HelmRelease, and Receiver references; consult the detailed reference for the exact fields.

Notifications, status, and Receivers

Flux object annotations can enrich notification events. Use event.toolkit.fluxcd.io/commit for commit status providers and event.toolkit.fluxcd.io/change_request for pull or merge request comment providers. Comment providers update a deduplicated deployment-status comment without an intermediary CI workflow.

Provider.spec.commitStatusExpr can derive per-cluster or per-tenant status identifiers with CEL. proxySecretRef and certSecretRef supply proxy and mutual-TLS material. A Provider of type otel converts reconciliation events into related source-rooted traces.

Receivers can filter resources with CEL. Generic Receivers can validate an OIDC ID token instead of an HMAC shared secret and can be invoked with:

flux trigger receiver

See notifications and Receivers for provider types, GitHub App and cloud authentication, GCR requirements, and event metadata behavior.

Debugging and operational tooling

Inspect fully merged configuration with:

flux debug kustomization --show-vars
flux debug helmrelease --show-values

These commands print referenced Secret values in clear text. Treat terminal output, logs, and captured transcripts as sensitive.

The CLI supports independently versioned plugins under ~/fluxcd/plugins. Pin versions or immutable digests in reproducible automation. The Flux Operator UI provides GitOps rollout views, workload dashboards, multi-pod and multi-container logs, and RBAC-guarded actions using user impersonation.

Read CLI and Operator for stable artifact commands, plugin lifecycle commands, and UI authentication details.