A Helm chart for provisioning OpenShift resources needed for workshop environments. This chart deploys all required runtime resources into <user>-devspaces namespaces, bypassing typical access restrictions.
While primarily designed for DevSpaces workshop environments, this chart can provision any cluster resources needed for workshop participants. Resources are deployed into user-specific namespaces following the pattern <user>-devspaces.
This chart provisions the following resources:
- MinIO: S3-compatible object storage (API on port 9000, console on 9001)
- Kafka: Strimzi-managed Kafka cluster with auto-topic creation
- Kafka Topics: Pre-configured topics for workshop exercises
- Kafka UI: Web-based Kafka management interface
- KEDA: Kubernetes Event-Driven Autoscaling for Kafka topics
- Tekton Pipelines: CI/CD pipelines for Spring Boot applications
- Maven build and package
- Container image build
- Application deployment
- Tekton Triggers: Automated pipeline triggers for git pushes
- Routes: OpenShift routes for API and console access
- RBAC: Necessary service accounts and role bindings
First, add the workshop Helm repository to your OpenShift cluster:
oc apply -f https://raw.githubusercontent.com/na-launch-workshop/platform-workshop-runtimes/master/install.yamlThen install the chart to a user's namespace:
helm install <release-name> workshop-charts/workshop-runtimes -n <user>-devspacesFor example:
helm install runtimes workshop-charts/workshop-runtimes -n alice-devspacesClone the repository and deploy the chart:
git clone https://github.com/na-launch-workshop/platform-workshop-runtimes.git
cd platform-workshop-runtimes
helm install <release-name> . -n <user>-devspacesUpdate an existing deployment:
# From the published repository
helm upgrade <release-name> workshop-charts/workshop-runtimes -n <user>-devspaces
# Or from local source
helm upgrade <release-name> . -n <user>-devspacesRemove all provisioned resources :
helm uninstall <release-name> -n <user>-devspacesEdit values.yaml to customize the deployment:
replicaCount: 1
image:
repository: quay.io/minio/minio
tag: latest
pullPolicy: IfNotPresent
env:
rootUser: admin
rootPassword: admin123
service:
type: ClusterIP
ports:
api: 9000
console: 9001- MinIO Credentials: Change
env.rootUserandenv.rootPassword - Image Version: Update
image.tagfor specific MinIO versions - Resource Limits: Add resource requests/limits in
resources - Node Placement: Configure
nodeSelector,tolerations,affinity
To add new workshop resources:
- Create a new template file in
templates/(e.g.,templates/myresource.yaml) - Use Helm templating for namespace injection:
namespace: {{ .Release.Namespace }} - Add configuration values to
values.yamlif needed - Deploy with
helm upgrade
The chart includes a complete CI/CD stack for Spring Boot applications:
- maven-package: Clones git repo and runs Maven build
- build-image: Creates container image using Buildah
- deploy-app: Deploys to OpenShift with the image
Automated triggers respond to git webhooks and start pipelines automatically:
workshop-springboot-hello_by_lang- Standard Spring Boot appworkshop-springboot-using_camel- Camel integration app
<user>-devspaces namespace
├── MinIO (Object Storage)
│ ├── API Service (:9000)
│ └── Console Service (:9001)
├── Kafka Cluster
│ ├── Kafka Broker (:9092)
│ ├── Zookeeper
│ └── Topics (auto-created)
├── Kafka UI (Management)
├── KEDA ScaledObjects
└── Tekton CI/CD
├── Pipeline Definitions
├── Task Definitions
├── Triggers (EventListener)
└── PersistentVolumeClaims
This chart is automatically published to GitHub Pages on every push to the master branch via GitHub Actions. The workflow:
- Packages the Helm chart
- Generates the Helm repository index
- Publishes to
https://na-launch-workshop.github.io/platform-workshop-runtimes
Users can then install via the HelmChartRepository CR in install.yaml.
.
├── Chart.yaml # Chart metadata
├── values.yaml # Default configuration values
├── install.yaml # HelmChartRepository CR for OpenShift
├── templates/ # Kubernetes resource templates
│ ├── deployment.yaml # MinIO deployment
│ ├── service.yaml # MinIO services
│ ├── route-*.yaml # OpenShift routes
│ ├── kafka.yaml # Kafka cluster
│ ├── kafka-topics.yaml # Topic definitions
│ ├── kafka-ui.yaml # Kafka UI
│ ├── keda-*.yaml # KEDA autoscaling
│ └── tekton-*.yaml # CI/CD pipelines
└── .github/
└── workflows/
└── helm-release.yaml # Auto-publish workflow
- Make changes to templates or values
- Validate with
helm template . --debug - Test deployment in a dev namespace
- Verify resources are created:
oc get all -n <namespace> - Push to
masterto trigger automatic publishing to the Helm repository
helm list -n <user>-devspaces
oc get all -n <user>-devspacesoc get route console -n <user>-devspacestkn pipeline list -n <user>-devspaces
tkn pipelinerun logs -f -n <user>-devspacesoc get kafka -n <user>-devspaces
oc get kafkatopic -n <user>-devspacesCheck Helm deployment status:
helm status <release-name> -n <user>-devspacesView pipeline run logs:
tkn pipelinerun ls -n <user>-devspaces
tkn pipelinerun logs <pipelinerun-name> -n <user>-devspacesCheck Kafka operator logs:
oc logs -l name=strimzi-cluster-operator -n openshift-operators- Resources use ephemeral storage by default (suitable for workshops)
- Kafka topics are auto-created when accessed
- The chart assumes Strimzi Kafka operator is installed cluster-wide
- Tekton operator must be installed for pipeline resources
- KEDA operator required for autoscaling features
This chart is for workshop/educational use.