Skip to main content
Version: Next

Project

A Project represents a cloud-native application composed of multiple components in OpenChoreo. It serves as the fundamental unit of isolation and provides a logical boundary for organizing related components, services, and resources.

API Version

openchoreo.dev/v1alpha1

Resource Definition

Metadata

Projects are namespace-scoped resources.

apiVersion: openchoreo.dev/v1alpha1
kind: Project
metadata:
name: <project-name>
namespace: <namespace> # Namespace for grouping projects

Spec Fields

FieldTypeRequiredDefaultDescription
deploymentPipelineRefDeploymentPipelineRefYes-Reference to the DeploymentPipeline that defines the promotion paths between environments for this project. Must reference an existing DeploymentPipeline in the same namespace
typeProjectTypeRefYes-Reference to the (Cluster)ProjectType that defines the infrastructure template materialized in each environment's data-plane namespace (immutable)
parametersobjectNo-Project-level values validated against the referenced type's parameters schema and inlined into each ProjectRelease snapshot
note

type is immutable after creation. The Project controller automatically cuts a new ProjectRelease whenever the inlined type snapshot or the parameters values change. Projects created through the OpenChoreo API or the Backstage UI default type to the platform's default ClusterProjectType when no type is chosen; manifests applied directly must set it.

DeploymentPipelineRef

Reference to a DeploymentPipeline that defines the promotion paths between environments for this project.

FieldTypeRequiredDefaultDescription
kindstringNoDeploymentPipelineKind of the deployment pipeline resource
namestringYes-Name of the deployment pipeline resource

ProjectTypeRef

Reference to the project's infrastructure template.

FieldTypeRequiredDefaultDescription
kindstringNoProjectTypeProjectType or ClusterProjectType
namestringYes-Name of the referenced type (DNS-1123 label, min: 1)

Status Fields

FieldTypeDefaultDescription
observedGenerationinteger0The generation observed by the controller
conditions[]Condition[]Standard Kubernetes conditions tracking the project state
latestReleaseLatestProjectRelease-The most recent ProjectRelease cut for this project

LatestProjectRelease

ProjectReleaseBindings pin spec.projectRelease to the name recorded here (or to an older release for rollback).

FieldTypeDescription
namestringName of the latest ProjectRelease (<project>-<hash>)
hashstringSpec hash that produced the release; a new release is cut when the recomputed hash drifts

Condition Types

Common condition types for Project resources:

  • Ready - Indicates if the project is fully provisioned and ready
  • Reconciled - Indicates if the controller has successfully reconciled the project
  • NamespaceProvisioned - Indicates if project namespaces have been created in all environments

Examples

Basic Project

A simple project referencing the default deployment pipeline:

apiVersion: openchoreo.dev/v1alpha1
kind: Project
metadata:
name: internal-apps
namespace: default
annotations:
openchoreo.dev/display-name: Internal Applications
openchoreo.dev/description: This project contains components that are used by company's internal applications
spec:
deploymentPipelineRef:
name: default-deployment-pipeline
type:
kind: ClusterProjectType
name: default

Project With a Custom Type and Parameters

apiVersion: openchoreo.dev/v1alpha1
kind: Project
metadata:
name: online-store
namespace: default
spec:
deploymentPipelineRef:
name: default
type:
kind: ClusterProjectType
name: standard-project
parameters:
tier: premium

Annotations

Projects support the following annotations:

AnnotationDescription
openchoreo.dev/display-nameHuman-readable name for UI display
openchoreo.dev/descriptionDetailed description of the project