Skip to main content

FluxCD Resources

Purpose: For platform engineers, provides FluxCD CRD field reference as used by openCenter.

Resource Types​

openCenter uses four FluxCD Custom Resource Definitions (CRDs):

CRDAPI GroupPurpose
GitRepositorysource.toolkit.fluxcd.io/v1Tracks a Git repository as a source
HelmRepositorysource.toolkit.fluxcd.io/v1Tracks a Helm chart repository
Kustomizationkustomize.toolkit.fluxcd.io/v1Reconciles manifests from a source
HelmReleasehelm.toolkit.fluxcd.io/v2Manages a Helm chart release

GitRepository​

Each platform service has a GitRepository in services/sources/ pointing to openCenter-gitops-base (community) or opencenter-gitops-enterprise (enterprise).

Community Source​

apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
name: opencenter-cert-manager-community
namespace: flux-system
spec:
url: ssh://git@github.com/opencenter-cloud/openCenter-gitops-base.git
ref:
tag: release-2026.01
secretRef:
name: opencenter-base-deploy-key
interval: 15m

Enterprise Source​

apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
name: opencenter-gitops-enterprise
namespace: flux-system
spec:
url: ssh://git@github.com/opencenter-cloud/opencenter-gitops-enterprise.git
ref:
branch: main
secretRef:
name: enterprise-repo-deploy-key
interval: 1m
FieldDescription
spec.urlGit clone URL (SSH for private repos)
spec.ref.tagPinned tag for reproducible deployments
spec.ref.branchTrack a branch (enterprise repos)
spec.secretRefKubernetes Secret with SSH deploy key
spec.intervalHow often FluxCD polls for changes

HelmRepository​

Defined in service base manifests. Points to upstream Helm chart registries (community) or private OCI registries (enterprise).

apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: jetstack
namespace: cert-manager
spec:
url: https://charts.jetstack.io
interval: 1h
type: default

In enterprise deployments, the upstream source is replaced with a private OCI registry via Kustomize patches.

Kustomization​

Defined in services/fluxcd/. Pulls manifests from a GitRepository and applies them.

Community Pattern​

apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: cert-manager
namespace: flux-system
spec:
sourceRef:
kind: GitRepository
name: opencenter-cert-manager-community
path: ./applications/base/services/cert-manager
interval: 5m
retryInterval: 1m
timeout: 10m
prune: true
wait: true
decryption:
provider: sops
secretRef:
name: sops-age

Enterprise Pattern​

apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: cert-manager-enterprise
namespace: flux-system
spec:
sourceRef:
kind: GitRepository
name: opencenter-gitops-enterprise
path: ./applications/enterprise/services/cert-manager/overlays/install
interval: 10m
retryInterval: 1m
timeout: 10m
prune: true
wait: true
healthChecks:
- apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
name: cert-manager
namespace: cert-manager
FieldDescription
spec.sourceRefWhich source to pull manifests from
spec.pathDirectory path within the source
spec.intervalReconciliation interval (default: 5m)
spec.pruneDelete resources removed from Git
spec.waitWait for resources to become ready
spec.decryptionSOPS decryption config (provider + key secret)
spec.healthChecksResources to monitor for readiness

HelmRelease​

Defined in openCenter-gitops-base base manifests. Manages Helm chart installation and upgrades.

apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: cert-manager
namespace: cert-manager
spec:
chart:
spec:
chart: cert-manager
version: "v1.18.2"
sourceRef:
kind: HelmRepository
name: jetstack
interval: 5m
driftDetection:
mode: enabled
install:
crds: CreateReplace
remediation:
retries: 3
upgrade:
crds: CreateReplace
remediation:
retries: 3
valuesFrom:
- kind: Secret
name: cert-manager-values
- kind: Secret
name: cert-manager-values-override
optional: true
FieldDescription
spec.chart.spec.chartChart name in the repository
spec.chart.spec.versionPinned chart version
spec.chart.spec.sourceRefWhich HelmRepository to pull from
spec.driftDetection.modeEnable drift detection (enabled)
spec.install.crdsCRD install policy: CreateReplace, Skip
spec.install.remediationRetry count on failed install
spec.upgrade.remediationRetry count on failed upgrade
spec.valuesFromValues sources (Secret or ConfigMap, optional flag for overrides)

Values Layering​

HelmReleases use valuesFrom to layer values (merged in order, later wins):

  1. Chart defaults — built into the Helm chart
  2. Base values — <service>-values Secret (from gitops-base helm-values/)
  3. Enterprise values — appended by enterprise overlay (optional)
  4. Cluster override — <service>-values-override Secret (from cluster repo, optional: true)

Reconciliation Flow​

  1. Source Controller polls GitRepository every 15m (sources) / HelmRepository every 1h
  2. On new commits/tags, fetches the archive
  3. Kustomize Controller reconciles every 5m — builds manifests, decrypts SOPS secrets
  4. Helm Controller installs/upgrades on chart or values changes
  5. Drift Detection re-applies manifests if cluster state diverges from Git
  6. Failed reconciliations retry per remediation.retries

Useful Commands​

# Source status
flux get sources git -A

# Kustomization status
flux get kustomizations -A

# HelmRelease status
flux get helmreleases -A

# Force immediate reconciliation
flux reconcile source git flux-system
flux reconcile kustomization cert-manager

# Suspend/resume (maintenance windows)
flux suspend kustomization cert-manager
flux resume kustomization cert-manager