Releases¶
Releases allow the user to add parameters to a ComponentVersion. A Release
is deployed by binding it to a Target with a ReleaseBinding — either
created directly or generated by a Profile that matches the Target. This
abstraction enables building complex deployment scenarios with multiple
applications and multiple clusters.
The Release controller itself only resolves the ComponentVersion reference.
Rendering is triggered by the Target controller once the Release is bound to
a Target (see Bootstrap).
Create a Release of the ComponentVersion¶
Create a Release resource that references our discovered ComponentVersion:
# release.yaml
apiVersion: solar.opendefense.cloud/v1alpha1
kind: Release
metadata:
name: ocm-demo-release
namespace: test
spec:
componentVersionRef:
name: opendefense-cloud-ocm-demo-v26-4-2
values:
replicaCount: 3
imagePullSecrets:
- name: regcred
kubectl apply -n test -f ./release.yaml
The Release was created and can be inspected with kubectl:
$ kubectl get release -n test
NAME CREATED AT
ocm-demo-release 2026-07-24T11:20:36Z
Wait for it to resolve the ComponentVersion:
$ kubectl get release -n test ocm-demo-release \
-o jsonpath='{.status.conditions[?(@.type=="ComponentVersionResolved")].status}'
True
status.effectiveUniqueName is also populated — this is the key the Target
controller later uses to deduplicate Releases of the same component on a
Target:
$ kubectl get release -n test ocm-demo-release -o jsonpath='{.status.effectiveUniqueName}'
opendefense-cloud-ocm-demo
No RenderTask exists yet, and nothing has been pushed to a registry — that
only happens once this Release is bound to a Target. Continue to
Bootstrap.