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.

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

HelmRepository

Defined in openCenter-gitops-base base manifests. Points to upstream Helm chart registries.

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

Kustomization

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

apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: cert-manager-base
namespace: flux-system
spec:
sourceRef:
kind: GitRepository
name: opencenter-cert-manager
path: applications/base/services/cert-manager
targetNamespace: cert-manager
interval: 10m
prune: true
postBuild:
substituteFrom:
- kind: ConfigMap
name: cluster-vars
decryption:
provider: sops
secretRef:
name: sops-age
FieldDescription
spec.sourceRefWhich source to pull manifests from
spec.pathDirectory path within the source
spec.targetNamespaceDefault namespace for resources
spec.pruneDelete resources removed from Git
spec.postBuild.substituteFromConfigMaps/Secrets for variable substitution
spec.decryptionSOPS decryption config (provider + key secret)

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.16.2"
sourceRef:
kind: HelmRepository
name: jetstack
interval: 10m
install:
crds: CreateReplace
remediation:
retries: 3
upgrade:
crds: CreateReplace
remediation:
retries: 3
valuesFrom:
- kind: ConfigMap
name: cert-manager-values
FieldDescription
spec.chart.spec.chartChart name in the repository
spec.chart.spec.versionPinned chart version
spec.chart.spec.sourceRefWhich HelmRepository to pull from
spec.install.crdsCRD install policy: CreateReplace, Skip
spec.install.remediationRetry count on failed install
spec.upgrade.remediationRetry count on failed upgrade
spec.valuesFromExternal values sources (ConfigMap or Secret)

Reconciliation Flow

  1. FluxCD polls GitRepository at the configured interval
  2. On new commits/tags, the source controller fetches the archive
  3. Kustomization controller builds manifests, substitutes variables, decrypts secrets
  4. HelmRelease controller installs or upgrades the Helm chart
  5. Failed reconciliations retry according to remediation.retries

Check reconciliation status with:

flux get sources git -A
flux get kustomizations -A
flux get helmreleases -A