Skip to main content
A Release Target is the combination of a Deployment, Environment, and Resource. It represents a specific place where a deployment version can be released.

Understanding Release Targets

The core formula:

Example

Given:
  • Deployment: API Service
  • Environment: Production (matches 2 resources)
    • Resource 1: prod-cluster-us-east
    • Resource 2: prod-cluster-us-west
Release Targets Created:
  1. API Service → Production → prod-cluster-us-east
  2. API Service → Production → prod-cluster-us-west
Each release target can independently receive deployment versions.

How Release Targets are Created

Release targets are created automatically based on selectors:

1. Environment Selector Matches Resources

Environment defines a resource selector:
This matches all resources with metadata.environment = "production".

2. Deployment Selector Further Filters (Optional)

Deployment can have an additional resource selector:
This limits the deployment to only Kubernetes clusters.

3. Intersection Creates Release Targets

The final set of resources is the intersection of:
  • Resources matched by environment selector
  • Resources matched by deployment selector (if present)
Example Calculation:

Release Target Properties

key

Unique identifier combining deployment, environment, and resource IDs. Format: {deploymentId}:{environmentId}:{resourceId} This key is used to track which version is currently deployed to each target.

Release Target Lifecycle

Creation

Release targets are created when:
  • A new deployment is created (targets created for all matching environments and resources)
  • A new environment is created (targets created for all deployments and matching resources)
  • A new resource is created that matches existing environment selectors (targets created for all deployments)

Deletion

Release targets are deleted when:
  • The deployment is deleted
  • The environment is deleted
  • The resource is deleted or no longer matches the selectors

Dynamic Updates

As resources are added, updated, or removed:
  • Resource metadata changes → Release targets re-evaluated
  • Resource matches environment selector → New release targets created
  • Resource stops matching → Release targets removed

Viewing Release Targets

Via Web UI

  1. Navigate to your deployment
  2. Click “Release Targets” tab
  3. See all targets with current deployed versions

Via CLI

Response:

Release Target Matrix

Think of release targets as a 3D matrix:
Each cell “RT” is a release target. For multiple deployments, this becomes a 3D cube:

Release Target States

While release targets don’t have an explicit “status” field, their state is determined by their current release:

No Release

Target exists but no version has been deployed yet.

Active Release

A version is currently being deployed (job in progress).

Completed Release

A version is successfully deployed (job completed).

Failed Release

Latest deployment attempt failed.

Pending Release

A release exists but is waiting for approval/policies.

Deployment Targeting Strategies

Strategy 1: Broad Matching

Environment matches many resources, deployment doesn’t filter:
Result: Deployment goes to every production resource. Use Case: Services that should run everywhere (monitoring agents, logging).

Strategy 2: Deployment-Level Filtering

Deployment limits which resources it can target:
Result: Deployment only goes to production Kubernetes clusters. Use Case: Platform-specific deployments (containers vs. VMs).

Strategy 3: Fine-Grained Environments

Create specific environments for precise targeting:
Result: Very specific set of release targets. Use Case: Region-specific deployments, gradual rollouts.

Release Target Locking

Release targets can be locked to prevent new deployments:
To unlock:
Use Cases:
  • Maintenance windows
  • Incident response (freeze deployments)
  • Testing/debugging (keep specific version)
Locked targets won’t receive new deployments until unlocked.

Querying Release Targets

By Deployment

Shows all targets for a specific deployment.

By Environment

Shows all targets in a specific environment.

By Resource

Shows all targets for a specific resource (all deployments).

With Filters

Release Target Count Estimates

Before creating a deployment, estimate how many release targets will be created:
Response:

Common Patterns

Pattern 1: Environment-Per-Region

Release Targets: API Service gets separate targets per region. Benefit: Independent regional deployments, gradual rollout by region.

Pattern 2: Tiered Resources

Release Targets: Services only deploy to appropriate tier resources. Benefit: Resource isolation, cost optimization.

Pattern 3: Canary Deployments

Release Targets: Separate targets for canary vs. stable. Benefit: Test new versions on canary before rolling out to stable.

Best Practices

Resource Metadata Design

Design resource metadata with targeting in mind:
This allows flexible targeting across multiple dimensions.

Selector Simplicity

Prefer Simple Selectors:
Over Complex Ones:
Complex selectors are harder to understand and maintain.

Validate Target Count

Before deploying:
  1. Check estimated release target count
  2. Verify targets match expectations
  3. Test in lower environment first

Monitor Release Targets

  • Track release target creation/deletion events
  • Alert on unexpected target count changes
  • Review targets when resources are added/updated

Troubleshooting

Too many release targets created

  • Review environment resource selectors
  • Check if deployment needs a resource selector to filter
  • Verify resource metadata is correct

Expected targets not created

  • Check environment selector matches resources
  • Verify deployment selector (if present) isn’t too restrictive
  • Ensure deployment and environment are in same system
  • Check resources exist and aren’t deleted

Targets created for wrong resources

  • Review selector logic (AND vs. OR)
  • Check resource metadata matches expectations
  • Test selectors with query API before applying

Release target disappeared

  • Check if resource was deleted
  • Verify resource still matches environment selector
  • Check if resource metadata changed

Next Steps