A 2-hour hands-on workshop deployed on OpenShift via ArgoCD GitOps, following the Field-Sourced Content Template Helm App of Apps pattern.
| Module | Duration | Type | Topic |
|---|---|---|---|
| 0 | 30 min | Presentation/Demo | Installation & Architecture |
| 1 | 15 min | Guided Tour | Architecture Tour & Storage Provisioning |
| 2 | 30 min | Hands-on Lab | OpenShift Virtualization & RWX Live Migration |
| 3 | 25 min | Hands-on Lab | Modern Data Protection (CBT & Backups) |
| 4 | 20 min | Hands-on Lab / Presentation | AI-Driven Data Cataloging with MCP |
| 5 | 15 min | Presentation | The 4.21 Horizon: AI & Autonomic Operations |
GitHub Repository
│
└─► ArgoCD (App of Apps)
├─► machineset ─────────► Extra worker MachineSet (sync-wave 0)
├─► rhacm ──────────────► Red Hat ACM operator (sync-wave 0)
├─► workshop-infra ─────► Per-user Namespaces + RBAC (sync-wave 1)
├─► dcs ────────────────► IBM Data Cataloging Service (sync-wave 1)
├─► lightspeed ─────────► OpenShift Lightspeed + MCP (sync-wave 1)
├─► dcs-setup ──────────► Sample data + DCS configuration (sync-wave 2)
├─► showroom-user1 ─────► Showroom Pod (showroom-deployer chart, sync-wave 2)
├─► showroom-user2 ─────► Showroom Pod
└─► showroom-userN ─────► Showroom Pod
Each user gets their own Showroom
instance deployed via the official showroom-single-pod Helm chart (v1.3.4)
with per-user user_data attributes injected through ArgoCD.
- RHDP environment: Order OpenShift Container Platform with IBM Fusion from the Red Hat Demo Platform. Must be provisioned 90 minutes prior to session start.
- AgnosticD v2 (Option A): Set up locally per the AgnosticD v2 Setup Guide
ocandhelmCLI tools available- An OpenAI API key (for OpenShift Lightspeed in Module 4)
Requires a one-time AgnosticD v2 setup. See agnosticd/README.md for the full deployment path. Quick summary:
# Copy the vars file into your agnosticd-v2-vars directory
cp agnosticd/vars/ibm-fusion-workshop.yml ~/Development/agnosticd-v2-vars/
# Provision (from the agnosticd-v2 directory)
cd ~/Development/agnosticd-v2
./bin/agd provision -g myfusion -c ibm-fusion-workshop -a <your-sandbox-account>This provisions the base OCP cluster and runs the ocp4_workload_field_content
workload, which creates an ArgoCD Application pointing to this repository.
ArgoCD then deploys all components automatically.
Use this if you already have a running OCP cluster with IBM Fusion and ODF.
git clone https://github.com/Red-Hat-SE-RTO/ibm-fusion-workshop.git
cd ibm-fusion-workshopEdit values.yaml:
- Set
deployer.domainto your cluster's apps domain - Set
gitops.repoUrlandcomponents.showroom.content.repoUrlto your GitHub repo URL - Set
workshop.openshift_console_urlandworkshop.fusion_ui_urlfor your cluster - Set
components.machineset.*for your cluster's infrastructure ID, AMI, region, and AZ - Add/remove entries under
users:for the number of participants
oc create namespace openshift-lightspeed 2>/dev/null || true
oc create secret generic openai-api-key \
-n openshift-lightspeed \
--from-literal=api-key='<YOUR_OPENAI_API_KEY>'git add -A && git commit -m "Configure workshop for my cluster"
git push origin mainoc login --token=<token> --server=<api-url>
helm template workshop . | oc apply -f -This creates the root ArgoCD Applications which automatically sync in order:
- sync-wave 0:
machineset(extra worker nodes),rhacm(Advanced Cluster Management) - sync-wave 1:
workshop-infra(per-user namespaces + RBAC),dcs(Data Cataloging),lightspeed(OpenShift Lightspeed) - sync-wave 2:
dcs-setup(sample data + DCS config),showroom-<user>(one Showroom lab guide per user)
# Check ArgoCD applications
oc get applications -n openshift-gitops
# Check all showroom pods
for ns in $(oc get ns -o name | grep showroom); do
echo "=== $ns ==="
oc get pods -n "${ns##*/}"
done
# Get showroom route for user1
oc get route -n showroom-user1ibm-fusion-workshop/
├── Chart.yaml # Master Helm chart
├── values.yaml # Central configuration (all tunables)
├── default-site.yml # Antora playbook for GitHub Pages build
├── templates/
│ ├── _helpers.tpl
│ └── applications.yaml # ArgoCD App of Apps (all components + per-user showroom)
├── components/
│ ├── machineset/ # Extra worker MachineSet for capacity
│ ├── rhacm/ # Red Hat Advanced Cluster Management operator
│ ├── workshop-infra/ # Per-user namespaces + RBAC + network policies
│ ├── dcs/ # IBM Fusion Data Cataloging Service instance
│ ├── dcs-setup/ # Sample data upload + DCS connection config
│ ├── lightspeed/ # OpenShift Lightspeed operator + MCP config
│ └── (showroom is deployed via external chart, not a local component)
├── agnosticd/ # AgnosticD v2 deployment path
│ ├── README.md # Full AgnosticD deployment instructions
│ └── vars/
│ └── ibm-fusion-workshop.yml # AgnosticD vars file
├── content/ # Showroom Antora lab guide
│ ├── antora.yml
│ └── modules/ROOT/
│ ├── nav.adoc
│ ├── assets/images/
│ ├── examples/
│ ├── partials/
│ └── pages/
│ ├── index.adoc
│ ├── module-00-installation.adoc
│ ├── module-01-architecture.adoc
│ ├── module-02-virtualization.adoc
│ ├── module-03-data-protection.adoc
│ ├── module-04-data-cataloging.adoc
│ ├── module-05-horizon.adoc
│ ├── references.adoc
│ └── conclusion.adoc
├── .github/workflows/
│ └── gh-pages.yml # GitHub Pages build via Antora
└── README.md
Add or remove users in values.yaml:
users:
- user1
- user2
- user3
# ...add as many as neededEach user gets:
- A dedicated namespace (
workshop-<user>) with admin RBAC - KubeVirt admin role for VM operations
- A Showroom lab guide instance at
https://showroom-<user>.<apps-domain>
This workshop uses the Field-Sourced Content Helm path via the
ocp4_workload_field_content workload. The AgnosticD vars file is at
agnosticd/vars/ibm-fusion-workshop.yml.
| Helm Value | AgnosticD Variable | Description |
|---|---|---|
gitops.repoUrl / components.showroom.content.repoUrl |
ocp4_workload_field_content_gitops_repo_url |
Workshop git repo |
gitops.revision / components.showroom.content.repoRef |
ocp4_workload_field_content_gitops_repo_ref |
Git branch/tag |
deployer.domain |
cluster_domain (auto-injected) |
Cluster apps domain |
| Component | Version |
|---|---|
| Red Hat OpenShift Container Platform | 4.18 |
| OpenShift Data Foundation (ODF) | 4.18 |
| IBM Storage Fusion | 2.12 |
| OpenShift Virtualization | 4.18 |
| Red Hat ACM | 2.14 |
| OpenShift Lightspeed | stable |
| Showroom Deployer | 1.3.4 |
- IBM Storage Fusion 2.12 Docs
- OpenShift Data Foundation 4.18 Docs
- OpenShift Container Platform 4.18 Docs
- IBM Fusion Data Cataloging Service
- DCS MCP Server Documentation
- Model Context Protocol Specification
- Red Hat OpenShift Lightspeed
- Exploring your Catalog with Natural Language through MCP (IBM Community)
Autonomic Virtualization
- Dynamic VM CPU Workload Rebalancing with Load Aware Descheduler
- Load Aware Rebalancing with OpenShift Virtualization
- Enabling Descheduler Evictions on VMs (OKD 4.21)
- Descheduler PSI Evaluation Repository
- PSI - Pressure Stall Information (Linux Kernel)
- Cross-Cluster Live Migration (OKD 4.21)
- What's New in OpenShift Virtualization 4.21
AI Inference: Gateway API Inference Extension & llm-d
- Gateway API Inference Extension (Official Docs)
- Gateway API Inference Extension (GitHub)
- Introducing Gateway API Inference Extension (Kubernetes Blog)
- Deep Dive into GIE (CNCF)
- OpenShift 4.20: Accelerating Virtualization and AI
- Run Model-as-a-Service for Multiple LLMs on OpenShift
- llm-d (Official Site)
- llm-d (GitHub)
- Welcome llm-d to the CNCF
IBM Content-Aware Storage
- Content-Aware Storage for the Generative AI Era (IBM Research)
- IBM Fusion CAS: Making Data Better, Faster and Stronger
- IBM CAS for RAG AI Workflows (NAND Research)
- IBM Fusion CAS vs State-of-the-Art RAG Benchmarks
- IBM Fusion for Red Hat AI
- Building Enterprise LLMOps on Fusion HCI with OpenShift AI
GPU Scheduling & AI Training
- Dynamic Resource Allocation Goes GA in OpenShift 4.21
- AI Workloads (OCP 4.21 Docs)
- Improve GPU Utilization with Kueue in OpenShift AI
Platform Release Notes