Skip to content

Red-Hat-SE-RTO/ibm-fusion-workshop

Repository files navigation

Modern Hybrid Infrastructure: IBM Storage Fusion & OpenShift Data Foundation

Build and Deploy to GitHub Pages

View the Workshop Content

A 2-hour hands-on workshop deployed on OpenShift via ArgoCD GitOps, following the Field-Sourced Content Template Helm App of Apps pattern.

Workshop Overview

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

Architecture

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.

Prerequisites

Deployment

Option A: AgnosticD v2 (Recommended for RHDP)

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.

Option B: Manual Helm Deployment

Use this if you already have a running OCP cluster with IBM Fusion and ODF.

1. Clone and configure

git clone https://github.com/Red-Hat-SE-RTO/ibm-fusion-workshop.git
cd ibm-fusion-workshop

Edit values.yaml:

  • Set deployer.domain to your cluster's apps domain
  • Set gitops.repoUrl and components.showroom.content.repoUrl to your GitHub repo URL
  • Set workshop.openshift_console_url and workshop.fusion_ui_url for 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

2. Create the OpenAI API key secret

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>'

3. Push to GitHub

git add -A && git commit -m "Configure workshop for my cluster"
git push origin main

4. Deploy via ArgoCD

oc 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)

5. Verify

# 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-user1

Repository Structure

ibm-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

Scaling Users

Add or remove users in values.yaml:

users:
  - user1
  - user2
  - user3
  # ...add as many as needed

Each 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>

AgnosticD Variable Mapping

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

Technology Stack

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

External References

Product Documentation

Storage & Data Services

Virtualization

Data Protection

Data Cataloging & AI

OpenShift 4.21 & The Horizon (Module 5)

Autonomic Virtualization

AI Inference: Gateway API Inference Extension & llm-d

IBM Content-Aware Storage

GPU Scheduling & AI Training

Platform Release Notes

Workshop Infrastructure

About

This 2-hour technical workshop provides guided, hands-on experience with IBM Storage Fusion 2.12 and OpenShift Data Foundation 4.18 running on Red Hat OpenShift Container Platform 4.18.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors