Parent
#3515
What to build
Convert the pilot's -artifacts release (cert-manager-artifacts) from a directly-deployed Helm release into plain, git-stored manifests reconciled by the existing GitOps apps.
End-to-end behavior:
- During reconcile the operator renders the
-artifacts release from its unchanged source (charts/raw + values/<app>/<app>-raw.gotmpl), splits the multi-document stream, and writes one Kubernetes object per file, then commits before the GitOps app syncs.
- Path convention:
<kind> folder is the lowercased singular kind (clusterissuer, externalsecret, certificate); filename is metadata.name.
- Namespaced objects →
env/manifests/namespaces/<namespace>/<kind>/<name>.yaml
- Cluster-scoped objects →
env/manifests/global/<kind>/<name>.yaml
- The
-artifacts release no longer produces its own ArgoCD Application; the split files are reconciled by the existing gitops-ns-<namespace> / gitops-global apps (recursive directory sync).
- The ADR-2026-08-20 Phase-1 bootstrap subset (
ExternalSecret/custom-ca, ClusterIssuer/custom-ca when customRootCA is set) is still applied directly during initial install; the full set lands in git for ArgoCD post-install.
The multi-doc → per-file splitter should be a pure function (rendered YAML in, { path → single-object YAML } out) so folder casing and namespaced-vs-global bucketing are unit-testable.
Acceptance criteria
Blocked by
Parent
#3515
What to build
Convert the pilot's
-artifactsrelease (cert-manager-artifacts) from a directly-deployed Helm release into plain, git-stored manifests reconciled by the existing GitOps apps.End-to-end behavior:
-artifactsrelease from its unchanged source (charts/raw+values/<app>/<app>-raw.gotmpl), splits the multi-document stream, and writes one Kubernetes object per file, then commits before the GitOps app syncs.<kind>folder is the lowercased singular kind (clusterissuer,externalsecret,certificate); filename ismetadata.name.env/manifests/namespaces/<namespace>/<kind>/<name>.yamlenv/manifests/global/<kind>/<name>.yaml-artifactsrelease no longer produces its own ArgoCDApplication; the split files are reconciled by the existinggitops-ns-<namespace>/gitops-globalapps (recursive directory sync).ExternalSecret/custom-ca,ClusterIssuer/custom-cawhencustomRootCAis set) is still applied directly during initial install; the full set lands in git for ArgoCD post-install.The multi-doc → per-file splitter should be a pure function (rendered YAML in,
{ path → single-object YAML }out) so folder casing and namespaced-vs-global bucketing are unit-testable.Acceptance criteria
cert-manager-artifactsproduces one file per object under the correctnamespaces/<ns>/<kind>/<name>.yamlorglobal/<kind>/<name>.yamlpath, with lowercased-singular kind folders.ClusterIssuer) land underenv/manifests/global/...; namespaced objects underenv/manifests/namespaces/....cert-manager-artifactsrelease no longer creates its ownApplication; split files reconcile via the existing gitops-ns/global apps.Blocked by