This project contains the manifests and scripts to deploy OpenChoreo in a more production-ready manner using Helm charts and Kubernetes manifests.
- Kubernetes Cluster: A running Kubernetes cluster (e.g., Minikube, GKE, EKS, AKS).
- kubectl: Configured to communicate with your cluster.
- Helm: Version 3.12+ installed.
platform/environments/: Definitions for Development, QA, Pre-Prod, and Production environments.platform/projects/: Definitions for Projects (grouping of applications).openchoreo-control-plane/: Helm chart for the Control Plane.openchoreo-data-plane/: Helm chart for the Data Plane.
catalog/teams/: Definitions for Teams and Users (e.g., Platform Team).catalog/apis/: Definitions for APIs (e.g., OpenAPI specs).catalog/components/: Definitions for Services, Libraries, and Documentation.catalog/components/architecture-docs/: System architecture documentation (TechDocs).
templates/: Custom software templates (e.g., Java 21 Spring Boot 3).
dev-connect.sh: Script to automatically handle port-forwarding.
The Control Plane manages the OpenChoreo platform, including the API, UI, and core controllers.
Important: Before installing, apply the PVC for Asgardeo Thunder and install Gateway API CRDs:
# Install Gateway API CRDs (Required by cert-manager)
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/standard-install.yaml
# Create Namespace and PVC
kubectl create namespace openchoreo-system
kubectl apply -f pvc.yamlThen install the chart. Note: We override several URLs to localhost to allow local login to work without internal DNS resolution.
helm install openchoreo-control-plane ./openchoreo-control-plane \
--namespace openchoreo-systemThe Data Plane is where your applications will be deployed.
Note: We disable cert-manager (already installed) and enable a temporary volume for Envoy (fix for macOS/Docker).
helm install openchoreo-data-plane ./openchoreo-data-plane \
--namespace openchoreo-data-plane \
--create-namespace \
--set cert-manager.enabled=false \
--set gateway.envoy.mountTmpVolume=trueTo easily access the UI and handle the necessary port-forwards, run the helper script:
./dev-connect.shThis will start port-forwarding for:
- UI: http://localhost:7007
- Identity Provider: http://localhost:8090
- Gateway: http://localhost:9080
Credentials:
- Username:
admin@openchoreo.dev - Password:
Admin@123
- Push the
catalog/folder to a Git repository (e.g., GitHub). - In OpenChoreo UI, go to Create -> Register Existing Component.
- Enter the URL to the raw YAML file (e.g.,
https://github.com/your-user/your-repo/blob/main/catalog/teams/platform-team.yaml). - Click Analyze and then Import.
- Push the
templates/folder to a Git repository. - In OpenChoreo UI, go to Create -> Register Existing Component.
- Enter the URL to the
template.yamlfile (e.g.,https://github.com/your-user/your-repo/blob/main/templates/spring-boot-3/template.yaml). - Click Analyze and then Import.
TechDocs is enabled in "local" mode. To view documentation:
- Register the
catalog/components/architecture-docs/catalog-info.yamlcomponent. - Go to the Docs tab in the UI.
- Select "System Architecture Documentation" to view the rendered site.
- kubectl apply -f https://raw.githubusercontent.com/openchoreo/openchoreo/release-v0.6/samples/from-image/go-greeter-service/greeter-service.yaml
- kubectl get component,workload,releasebinding -A
- kubectl get component greeter-service
- kubectl get releasebinding greeter-service-development
- kubectl get deployment -A | grep greeter
- kubectl get pods -A | grep greeter
- kubectl get httproute -A -o wide
- curl http://development.openchoreoapis.localhost:9080/greeter-service/greeter/greet