Service Deployment Failures
Purpose: For operators, shows how to resolve missing CRDs, Helm value conflicts, and dependency ordering problems.
Prerequisites
kubectlaccess to the clusterfluxCLI installed
Missing CRDs
Symptom: HelmRelease fails with no matches for kind "X" in version "Y".
The chart depends on CRDs that have not been installed yet. In openCenter, CRD installation is handled by the install.crds: CreateReplace setting in the HelmRelease.
- Check if the CRD exists:
kubectl get crd | grep <crd-name>
- If missing, the CRD-providing service may not have reconciled yet. Check its status:
flux get kustomizations -A | grep <dependency>
- Force reconciliation of the dependency:
flux reconcile kustomization <dependency-name> -n flux-system
Dependency Ordering
Services in openCenter have implicit ordering. For example, cert-manager must be running before services that create Certificate resources.
FluxCD Kustomization resources support dependsOn to enforce ordering:
spec:
dependsOn:
- name: cert-manager-base
If a service deploys before its dependency, it will fail and retry according to remediation.retries. Check the dependency chain:
flux get kustomizations -A
Look for services in False state whose dependencies are also not ready.
Helm Value Conflicts
Symptom: HelmRelease shows template rendering failed.
- Get the error details:
kubectl describe helmrelease <name> -n <namespace>
-
Common causes:
- Override values reference a key that does not exist in the chart
- Type mismatch (string where integer expected)
- Removed field in a chart version upgrade
-
Test the values locally:
helm template <chart> <repo>/<chart> -f override-values.yaml --version <version>
- Fix the override values, commit, and push. FluxCD re-reconciles automatically.
Namespace Not Created
Symptom: Resources fail to apply because the target namespace does not exist.
The Kustomization targetNamespace field sets the namespace, but the namespace itself must exist. In openCenter, base manifests include namespace.yaml fo
r each service.
If the namespace is missing:
kubectl create namespace <namespace>
flux reconcile kustomization <name> -n flux-system
Service Stuck After Base Version Update
After updating the GitRepository tag to a new openCenter-gitops-base version, a service may fail if the base structure changed.
- Check the Kustomization error:
flux get kustomization <name> -n flux-system
-
Verify the
spec.pathstill exists at the new tag. -
Review the release notes for the new base version for breaking changes or path renames.