Skip to main content

Service Deployment Failures

Purpose: For operators, shows how to resolve missing CRDs, Helm value conflicts, and dependency ordering problems.

Prerequisites

  • kubectl access to the cluster
  • flux CLI 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.

  1. Check if the CRD exists:
kubectl get crd | grep <crd-name>
  1. If missing, the CRD-providing service may not have reconciled yet. Check its status:
flux get kustomizations -A | grep <dependency>
  1. 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.

  1. Get the error details:
kubectl describe helmrelease <name> -n <namespace>
  1. 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
  2. Test the values locally:

helm template <chart> <repo>/<chart> -f override-values.yaml --version <version>
  1. 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.

  1. Check the Kustomization error:
flux get kustomization <name> -n flux-system
  1. Verify the spec.path still exists at the new tag.

  2. Review the release notes for the new base version for breaking changes or path renames.