Skip to content

Commit fa7ba50

Browse files
mevan-karuVajiraPrabuddhaka
authored andcommitted
Release v0.8.0 docs
1 parent 736c835 commit fa7ba50

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+12839
-4
lines changed

docusaurus.config.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,14 @@ const config: Config = {
4747
'classic',
4848
{
4949
docs: {
50-
lastVersion: 'v0.7.x',
50+
lastVersion: 'v0.8.x',
5151
versions: {
52+
'v0.8.x': {
53+
label: 'v0.8.x',
54+
},
55+
'v0.7.x': {
56+
label: 'v0.7.x',
57+
},
5258
'v0.6.x': {
5359
label: 'v0.6.x',
5460
},
@@ -94,9 +100,9 @@ const config: Config = {
94100

95101
themeConfig: {
96102
announcementBar: {
97-
id: 'release_v0_6_0',
103+
id: 'release_v0_8_0',
98104
content:
99-
'🎉️ OpenChoreo <a target="_blank" rel="noopener noreferrer" href="https://github.com/openchoreo/openchoreo/releases/tag/v0.7.0">v0.7.0</a> has been released! Explore what’s new. 🎉',
105+
'🎉️ OpenChoreo <a target="_blank" rel="noopener noreferrer" href="https://github.com/openchoreo/openchoreo/releases/tag/v0.8.0">v0.8.0</a> has been released! Explore what’s new. 🎉',
100106
isCloseable: true,
101107
},
102108
algolia: {

src/components/GetStarted/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ const installOptions: InstallOption[] = [
4444
'A good option if you want to understand how things are wired under the hood.'
4545
],
4646
buttonText: 'Full Install Guide',
47-
buttonLink: '/docs/getting-started/single-cluster/',
47+
buttonLink: '/docs/getting-started/production/single-cluster/',
4848
className: 'fullInstall'
4949
}
5050
];
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[//] # (This file stores the constants used across the documentation.)
2+
3+
export const versions = {
4+
dockerTag: 'v0.8.0',
5+
githubRef: 'release-v0.8', // Used for the GitHub Raw URL references. Example: main, latest, v0.1.0
6+
helmChart: '0.8.0',
7+
};
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
---
2+
title: Developer Abstractions
3+
description: Developer abstractions for building and running applications
4+
---
5+
6+
# Developer Abstractions
7+
8+
Developer abstractions in OpenChoreo enable teams to build, deploy, and operate cloud-native applications without
9+
managing infrastructure complexity. These abstractions provide a declarative model for expressing application
10+
architecture, dependencies, and operational requirements while the platform handles the underlying Kubernetes resources,
11+
networking, and security configurations automatically.
12+
13+
## Project
14+
15+
A **Project** represents a bounded context in Domain-Driven Design terms - a cohesive collection of components that
16+
together implement a specific business capability or application domain. It serves as the primary organizational unit
17+
for developers, defining clear boundaries for code ownership, deployment coordination, and operational responsibility.
18+
19+
Projects establish both logical and physical boundaries in the platform. Logically, they group related components that
20+
share common business logic, data models, and team ownership. Physically, they translate into isolated deployment units
21+
with dedicated namespaces, network boundaries, and security policies. This alignment between organizational structure
22+
and technical architecture enables teams to work autonomously while maintaining clear integration points with other
23+
projects.
24+
25+
The project boundary also defines the scope for internal communication and shared resources. Components within a project
26+
can communicate freely with each other. This locality principle reduces complexity for
27+
developers while maintaining security and isolation between different application domains.
28+
29+
## Component
30+
31+
A **Component** represents a deployable unit of software - the fundamental building block of applications in OpenChoreo.
32+
Each component encapsulates a specific piece of functionality, whether it's a microservice handling business logic, a
33+
web application serving user interfaces, or a background job processing data.
34+
35+
Components use a **ComponentType** reference to determine their deployment characteristics. This reference follows the
36+
format `{workloadType}/{componentTypeName}`, such as `deployment/web-service` or `cronjob/data-processor`. This explicit
37+
typing allows platform engineers to define multiple variations of deployment patterns for the same workload type, each
38+
tuned for different use cases.
39+
40+
The Component resource connects four essential elements:
41+
42+
**ComponentType Reference** specifies which platform-defined template governs this component's deployment. The
43+
ComponentType defines the available configuration schema, resource templates, and allowed workflows. This separation
44+
of concerns means developers work with a simplified interface while platform engineers maintain control over
45+
infrastructure patterns.
46+
47+
**Parameters** provide the component-specific configuration values that conform to the schema defined in the
48+
ComponentType. These values include both static parameters that remain consistent across environments and
49+
environment-overridable parameters that can be customized per environment through ComponentDeployment resources. The
50+
inline schema syntax from the ComponentType validates these values automatically, ensuring developers provide correct
51+
types and stay within defined constraints.
52+
53+
**Traits** enable composition of additional capabilities into the component. Each trait instance adds specific
54+
functionality like persistent storage, caching, or monitoring. Traits can be instantiated multiple times with
55+
different configurations using unique instance names. For example, a component might attach multiple persistent volume
56+
traits for different storage needs, each with its own size, storage class, and mount configuration. Traits use the
57+
same schema-driven approach as ComponentTypes, with parameters and environment overrides that can be customized through
58+
ComponentDeployment resources.
59+
60+
**Workflow Configuration** optionally specifies how to build the component from source code. This references a
61+
Workflow and provides the developer-configured schema values needed to execute builds. The workflow integration
62+
enables automated container image creation triggered by code changes or manual developer actions.
63+
64+
The component abstraction thus becomes a declarative specification that combines:
65+
- A ComponentType that defines *how* to deploy
66+
- Parameters that configure *what* to deploy
67+
- Traits that compose *additional capabilities*
68+
- A Workflow that defines *how to build*
69+
70+
This composition-based approach enables developers to assemble complex applications from reusable building blocks
71+
while the platform ensures consistency, governance, and operational best practices through the underlying ComponentType
72+
and Trait templates.
73+
74+
## Workload
75+
76+
A **Workload** defines the runtime contract of a component - specifying what the component needs to run. The workload
77+
focuses on application requirements rather than infrastructure details, which are handled by the platform through Classes.
78+
79+
Each component has one workload that describes its runtime needs through several key specifications:
80+
81+
**Containers** define the container images to deploy, along with their commands, arguments, and environment variables.
82+
This tells the platform what code to run and how to configure it.
83+
84+
**Endpoints** specify the network interfaces that the component exposes - the ports and protocols it listens on. Each
85+
endpoint declares its type (HTTP, gRPC, TCP, etc.) and port number. These definitions tell the platform what network
86+
services the component provides, enabling automatic service creation and network policy generation.
87+
88+
**Connections** declare the component's dependencies on other services, whether internal to the platform or external
89+
third-party services. Each connection specifies how to inject service information into the component through environment
90+
variables. This enables the platform to manage service discovery, configure network policies, and track dependencies.
91+
92+
This declarative specification can be generated from configuration files in the source repository or applied directly
93+
to the cluster. The separation between workload (what the application needs) and classes (how the platform provides it)
94+
enables platform teams to control infrastructure policies while developers focus on application requirements. Resource
95+
limits, scaling parameters, and operational policies come from the ServiceClass or WebApplicationClass, while the
96+
workload simply declares what the application needs to function.
97+
98+
## ComponentWorkflowRun
99+
100+
A **ComponentWorkflowRun** represents a runtime execution instance of a ComponentWorkflow - a specialized workflow type
101+
designed specifically for building components. While ComponentWorkflows define the build template and schema,
102+
ComponentWorkflowRuns represent actual build executions with specific parameter values and ownership tracking.
103+
104+
ComponentWorkflowRuns bridge the gap between developer intent and CI/CD execution for component builds. Developers
105+
create ComponentWorkflowRun resources to trigger builds, providing component ownership information, repository details,
106+
and build parameters. The platform handles all the complexity of rendering the final workflow specification,
107+
synchronizing secrets, and managing execution in the build plane.
108+
109+
Each ComponentWorkflowRun captures three essential pieces of information:
110+
111+
**Ownership Tracking** links the build execution to a specific component and project. This enables traceability,
112+
allowing the platform to track which builds belong to which components and maintain build history per component. The
113+
ownership information includes both project name and component name, ensuring proper audit trails and enabling
114+
component-specific build operations.
115+
116+
**System Parameters** provide the structured repository information required for build-specific platform features. These
117+
parameters follow a fixed structure with `repository.url`, `repository.revision.branch`, `repository.revision.commit`,
118+
and `repository.appPath` fields. This predictable structure enables the platform to support auto-builds triggered by
119+
webhooks, manual build actions in the UI, build traceability linking images to source commits, and monorepo support by
120+
identifying specific application paths within repositories.
121+
122+
**Developer Parameters** provide values for the flexible configuration schema defined by the platform engineer in the
123+
ComponentWorkflow. These might include build version numbers, test modes, resource allocations, timeout settings,
124+
caching configurations, and retry limits. The schema validation ensures type correctness and constraint satisfaction
125+
automatically.
126+
127+
This abstraction provides a specialized interface for component builds, where developers interact with curated schemas
128+
rather than complex CI/CD pipeline definitions. The separation of concerns allows platform engineers to control build
129+
implementation and security policies through ComponentWorkflow templates while developers manage repository information
130+
and build parameters through ComponentWorkflowRun instances. ComponentWorkflowRuns can be created manually for ad-hoc
131+
builds or automatically by platform controllers in response to code changes, supporting both interactive development and
132+
fully automated CI/CD pipelines while maintaining consistent execution patterns and governance specifically tailored for
133+
component build operations.

0 commit comments

Comments
 (0)