Skip to content

Commit a1ec309

Browse files
Mirage20shirolk
authored andcommitted
Refactor Core Concepts documentation for accuracy and clarity
- Replace monolithic concepts docs with 4 focused documents - Add developer-abstractions, platform-abstractions, runtime-model, resource-relationships - Remove unimplemented features (API, Config Management, tracing, DDoS protection) - Fix broken links to old core-concepts paths - Update navigation to use new /docs/concepts/ structure
1 parent c3d273e commit a1ec309

File tree

11 files changed

+545
-1121
lines changed

11 files changed

+545
-1121
lines changed

_data/docs_nav.yml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,16 @@
1919
url: /docs/getting-started/deploy-your-first-component/
2020
- title: Examples Catalog
2121
url: /docs/learn-from-examples/examples-catalog/
22-
- title: Core Concepts
22+
- title: Concepts
2323
children:
24-
- title: Concepts and Abstractions
25-
url: /docs/core-concepts/concepts-and-abstractions/
24+
- title: Developer Abstractions
25+
url: /docs/concepts/developer-abstractions/
26+
- title: Platform Abstractions
27+
url: /docs/concepts/platform-abstractions/
28+
- title: Runtime Model
29+
url: /docs/concepts/runtime-model/
2630
- title: Resource Relationships
27-
url: /docs/core-concepts/resource-relationship/
28-
- title: Navigating OpenChoreo
29-
url: /docs/core-concepts/navigating-openchoreo/
31+
url: /docs/concepts/resource-relationships/
3032
# - title: Integrating with OpenChoreo
3133
# children:
3234
# - title: CI Integration
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
---
2+
layout: docs
3+
title: Developer Abstractions
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 provide the connection between source code and running applications. They define how code is built, what
36+
resources it requires, and how it should be deployed. This abstraction allows developers to focus on application logic
37+
while the platform handles the complexities of containerization, orchestration, and lifecycle management.
38+
39+
## Component Types
40+
41+
OpenChoreo provides specialized component types that represent common application patterns, each with its own
42+
operational characteristics and platform integrations.
43+
44+
### Service
45+
46+
A **Service** component represents backend applications that expose APIs or handle business logic. Services are the
47+
workhorses of cloud-native applications, processing requests, managing data, and integrating with other systems. The
48+
platform understands that services need stable network identities, load balancing, and API management capabilities.
49+
50+
Services can expose multiple protocols including HTTP, gRPC, and TCP, with the platform handling the appropriate
51+
routing and load balancing for each protocol type.
52+
53+
### WebApplication
54+
55+
A **WebApplication** component represents frontend applications that serve user interfaces. These might be single-page
56+
applications, server-side rendered websites, or static content. The platform recognizes that web applications have
57+
different operational requirements than backend services and provides appropriate deployment patterns through the
58+
WebApplicationClass.
59+
60+
### ScheduledTask
61+
62+
A **ScheduledTask** component represents batch jobs, cron jobs, and other time-based workloads. Unlike continuously
63+
running services, scheduled tasks execute at specific times or intervals, complete their work, and terminate.
64+
ScheduledTasks are configured with cron expressions to define when they should run, and the platform handles the
65+
scheduling through the ScheduledTaskClass and Kubernetes CronJob resources.
66+
67+
## Workload
68+
69+
A **Workload** defines the runtime contract of a component - specifying what the component needs to run. The workload
70+
focuses on application requirements rather than infrastructure details, which are handled by the platform through Classes.
71+
72+
Each component has one workload that describes its runtime needs through several key specifications:
73+
74+
**Containers** define the container images to deploy, along with their commands, arguments, and environment variables.
75+
This tells the platform what code to run and how to configure it.
76+
77+
**Endpoints** specify the network interfaces that the component exposes - the ports and protocols it listens on. Each
78+
endpoint declares its type (HTTP, gRPC, TCP, etc.) and port number. These definitions tell the platform what network
79+
services the component provides, enabling automatic service creation and network policy generation.
80+
81+
**Connections** declare the component's dependencies on other services, whether internal to the platform or external
82+
third-party services. Each connection specifies how to inject service information into the component through environment
83+
variables. This enables the platform to manage service discovery, configure network policies, and track dependencies.
84+
85+
This declarative specification can be generated from configuration files in the source repository or applied directly
86+
to the cluster. The separation between workload (what the application needs) and classes (how the platform provides it)
87+
enables platform teams to control infrastructure policies while developers focus on application requirements. Resource
88+
limits, scaling parameters, and operational policies come from the ServiceClass or WebApplicationClass, while the
89+
workload simply declares what the application needs to function.
90+
91+
## Build
92+
93+
A **Build** represents the process of transforming source code into deployable artifacts. It captures the build
94+
configuration, tracks build execution, and manages the resulting container images. The build abstraction provides a
95+
consistent interface for different build strategies while handling the complexities of secure, reproducible builds.
96+
97+
Builds in OpenChoreo are first-class resources that can be monitored, audited, and managed independently of deployments.
98+
This separation enables practices like building once and deploying many times, pre-building images for faster
99+
deployments, and maintaining clear traceability from source code to running containers.
100+
101+
The platform supports multiple build strategies to accommodate different technology stacks and organizational
102+
preferences. Whether using Cloud Native Buildpacks for automatic, opinionated builds or custom Dockerfiles for complete
103+
control, the build abstraction provides a consistent operational model.
Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
---
2+
layout: docs
3+
title: Platform Abstractions
4+
---
5+
6+
# Platform Abstractions
7+
8+
Platform abstractions in OpenChoreo provide the foundational infrastructure layer that platform engineers use to build
9+
and manage Internal Developer Platforms. These abstractions establish organizational boundaries, manage infrastructure
10+
resources, and define the operational policies that enable developer self-service while maintaining security and
11+
compliance.
12+
13+
## Organization
14+
15+
The **Organization** represents the highest level of tenancy in OpenChoreo, serving as the root container for all
16+
platform resources. It establishes the fundamental isolation boundary between different business units, teams, or
17+
customers in a multi-tenant platform.
18+
19+
Organizations provide complete resource isolation through dedicated Kubernetes namespaces, ensuring that resources,
20+
configurations, and workloads from different organizations never interact. This isolation extends beyond simple
21+
namespace separation to include network policies, RBAC rules, and resource quotas, creating a secure multi-tenant
22+
environment.
23+
24+
Each organization maintains its own set of platform resources, application resources, and runtime configurations. This
25+
hierarchical structure enables platform teams to manage multiple independent tenants on the same OpenChoreo
26+
installation, each with their own governance policies, resource limits, and operational procedures.
27+
28+
## Infrastructure Planes
29+
30+
OpenChoreo separates infrastructure concerns into specialized planes, each serving a distinct purpose in the platform
31+
architecture. This separation enables independent scaling, security isolation, and operational management of different
32+
platform functions.
33+
34+
### DataPlane
35+
36+
A **DataPlane** represents a Kubernetes cluster where application workloads run. It abstracts the complexity of cluster
37+
management, providing a unified interface for deploying applications across multiple clusters regardless of their
38+
location or underlying infrastructure.
39+
40+
DataPlanes encapsulate all the configuration needed to connect to and manage a Kubernetes cluster, including connection
41+
credentials, TLS certificates, and cluster-specific settings. They enable platform teams to register multiple clusters -
42+
whether on-premises, in public clouds, or at edge locations - and manage them through a single control plane.
43+
44+
Each DataPlane can host multiple environments and projects, with OpenChoreo managing the creation of namespaces, network
45+
policies, and other cluster resources automatically. This abstraction allows platform teams to treat clusters as
46+
interchangeable infrastructure resources, enabling strategies like geographic distribution, compliance-based placement,
47+
and disaster recovery.
48+
49+
### BuildPlane
50+
51+
A **BuildPlane** provides dedicated infrastructure for executing continuous integration and build workloads. By
52+
separating build operations from runtime workloads, BuildPlanes ensure that resource-intensive compilation and testing
53+
processes don't impact production applications.
54+
55+
BuildPlanes integrate with Argo Workflows to provide a scalable, Kubernetes-native CI/CD execution environment. They
56+
handle the complete build lifecycle, from source code retrieval through compilation, testing, and container image
57+
creation. This separation also provides security benefits, isolating potentially untrusted build processes from
58+
production environments.
59+
60+
Platform engineers configure BuildPlanes with the necessary tools, credentials, and policies for building applications.
61+
This includes container registry credentials, build tool configurations, and security scanning policies. BuildPlanes can
62+
be scaled independently based on build demand and can be distributed geographically to reduce latency for development
63+
teams.
64+
65+
### Observability Plane
66+
67+
The **Observability Plane** provides centralized logging infrastructure for the entire platform. It collects and
68+
aggregates logs from all other planes - Control, Data, and Build - providing a unified view of platform operations and
69+
application behavior.
70+
71+
Built on OpenSearch, the Observability Plane offers full-text search capabilities and log retention management. The
72+
Observer API provides authenticated access to log data, enabling integration with external monitoring tools and
73+
dashboards. Unlike other planes, the Observability Plane has no custom resources to manage - it operates independently
74+
after initial setup, receiving log streams from Fluentbit agents deployed across the platform.
75+
76+
Platform engineers configure the Observability Plane once during initial setup, establishing log collection pipelines,
77+
retention policies, and access controls. This centralized approach ensures that all platform activity is auditable and
78+
debuggable while maintaining security boundaries between organizations.
79+
80+
## Environment
81+
82+
An **Environment** represents a stage in the software delivery lifecycle, such as development, staging, or production.
83+
Environments provide the context for deploying and running applications, defining the policies, configurations, and
84+
constraints that apply to workloads in that stage.
85+
86+
Environments are not just labels or namespaces - they are first-class abstractions that define where applications
87+
should be deployed (which DataPlane) and serve as targets for deployment pipelines. This abstraction enables platform
88+
teams to organize different stages of the delivery pipeline.
89+
90+
Each environment represents a distinct deployment target. Development environments might target smaller clusters or
91+
shared infrastructure, while production environments target dedicated, high-availability clusters. The Environment
92+
resource primarily defines the mapping to infrastructure (DataPlane) and serves as a reference point for deployments
93+
and promotion workflows.
94+
95+
## DeploymentPipeline
96+
97+
A **DeploymentPipeline** defines the allowed progression paths for applications moving through environments. It
98+
represents the organization's software delivery process as a declarative configuration, encoding promotion rules,
99+
approval requirements, and quality gates.
100+
101+
DeploymentPipelines go beyond simple environment ordering to define complex promotion topologies. They can specify
102+
parallel paths for different types of releases and conditional progressions based on application characteristics.
103+
This flexibility allows organizations to implement sophisticated delivery strategies while maintaining governance and
104+
control.
105+
106+
The pipeline abstraction also serves as an integration point for organizational processes. Manual approval gates can be
107+
configured for sensitive environments, automated testing can be triggered at promotion boundaries, and compliance checks
108+
can be enforced before production deployment. This ensures that all applications follow organizational standards
109+
regardless of which team develops them.
110+
111+
## Class System
112+
113+
OpenChoreo implements the standard Kubernetes Class pattern, similar to GatewayClass or StorageClass, enabling platform
114+
engineers to define platform-level abstractions that developers consume through their applications.
115+
116+
### The Class Pattern
117+
118+
Classes are platform-level resources that encode organizational standards, best practices, and governance policies.
119+
Platform engineers create Classes for different workload types - ServiceClass for backend services, WebApplicationClass
120+
for frontend applications, and ScheduledTaskClass for batch jobs. Each Class defines the platform standards that
121+
applications must follow when claiming these resources.
122+
123+
Just as GatewayClass defines infrastructure capabilities that Gateway resources consume, or StorageClass defines how
124+
storage should be provisioned when a PersistentVolumeClaim is created, ServiceClass defines how services should be
125+
deployed when developers create Service resources. This pattern provides a clean separation between platform
126+
capabilities (defined by platform engineers) and application requirements (expressed by developers).
127+
128+
### Class Consumption
129+
130+
When developers create application resources like Service or WebApplication, they reference the appropriate Class,
131+
similar to how a PersistentVolumeClaim references a StorageClass. The platform uses the Class definition to provision
132+
the actual workload with the correct configuration, policies, and governance rules.
133+
134+
Environment-specific Bindings act as the instantiation of this claim in a specific environment. While the Service
135+
resource expresses the developer's intent and references a ServiceClass, the ServiceBinding represents the actual
136+
deployment of that service in a particular environment with environment-specific overrides.
137+
138+
This consumption model balances standardization with flexibility. Platform teams maintain control over critical
139+
configurations through Classes while developers express their requirements through simple resource definitions. The
140+
platform handles the complex mapping between developer intent and infrastructure reality.
141+
142+

0 commit comments

Comments
 (0)