Release Binding
The release chain is how DevsPortal separates what you deploy from where and how it runs — and it's what gives you safe promotion and reliable rollback. A Component is snapshotted into an immutable ComponentRelease; a ReleaseBinding binds that release to one Environment (applying per-environment overrides) and produces a RenderedRelease — the final Kubernetes objects on the target data plane. Resources follow the same shape with ResourceRelease and ResourceReleaseBinding.
Component → ComponentRelease → ReleaseBinding → RenderedRelease
Resource → ResourceRelease → ResourceReleaseBinding → RenderedRelease
The key idea: the same release is bound to each environment. Promotion doesn't rebuild — it points the next environment at the release you already verified.
ReleaseBinding
Binds a ComponentRelease to one environment and carries that environment's overrides.
| Kind | ReleaseBinding |
| Scope | Namespaced · Audience Platform engineer / developer |
| Field | Description |
|---|---|
spec.owner.projectName / componentName | The component this binding belongs to |
spec.environment | The target environment name |
spec.releaseName | The ComponentRelease being bound |
spec.state | Active (deployed) or undeployed |
spec.componentTypeEnvironmentConfigs | Overrides for ComponentType environment-config parameters (replicas, resources) |
spec.traitEnvironmentConfigs | Per-trait-instance overrides, keyed by instanceName |
spec.workloadOverrides | Workload-level overrides (env vars, file mounts) |
apiVersion: openchoreo.dev/v1alpha1
kind: ReleaseBinding
metadata:
name: cart-api-production
namespace: fedshi
spec:
owner:
projectName: checkout
componentName: cart-api
environment: production
releaseName: cart-api-5d7f658d9c
state: Active
componentTypeEnvironmentConfigs:
replicas: 3
resources:
requests:
cpu: "500m"
memory: "512Mi"
ComponentRelease
An immutable snapshot of everything about a component — its type, parameters, traits, workload, and image. A new one is created only when something actually changes; it's the unit you deploy and promote. Rollback is just binding an earlier ComponentRelease.
| Kind | ComponentRelease · Scope Namespaced · created automatically |
ResourceRelease
The resource-side equivalent: an immutable snapshot of a Resource plus its ResourceType, created automatically when the resource changes.
| Kind | ResourceRelease · Scope Namespaced · created automatically |
ResourceReleaseBinding
Binds a ResourceRelease to an environment — the resource-side analog of a ReleaseBinding.
Unlike component releases, these are created explicitly (by a platform engineer or GitOps).
| Field | Description |
|---|---|
spec.resourceReleaseRef | The ResourceRelease being bound |
spec.environmentName | The target environment |
spec.resourceTypeEnvironmentConfigs | Per-environment overrides (size, memory) |
spec.retainPolicy | Per-environment override of the ResourceType's default (Delete/Retain) |
RenderedRelease
The fully-rendered Kubernetes objects for a binding — the Deployments, Services, HTTPRoutes, StatefulSets, Secrets, and NetworkPolicies that get applied to the target data plane. Created by the ReleaseBinding (or ResourceReleaseBinding) controller; you rarely touch it directly.
| Kind | RenderedRelease · Scope Namespaced · controller-managed |
Create in the portal
Release bindings aren't made from the Create… page — they're produced by deploying and promoting on a component's Deploy tab:
- Open the component (e.g.
shortener-webin theurl-shortenersystem) and go to the Deploy tab — it shows a card per environment in pipeline order. - Click Deploy on the first environment to bind the latest ComponentRelease there; click Promote to advance the same release to the next stage.
- Use the gear icon on a card to set per-environment overrides.
ComponentRelease,ResourceRelease, andRenderedReleaseare created automatically — you don't author them. Full guide: Deploy and promote.
See also
- Deploy and promote (developer view) — autoDeploy, promotion, overrides, rollback.
- Component · Resource · Environment · Planes
- Upstream field-level API reference.