No description
| .claude | ||
| docs | ||
| gitops | ||
| images | ||
| infra | ||
| poc | ||
| scripts | ||
| symphony/config | ||
| .gitignore | ||
| CLAUDE.md | ||
| README.md | ||
symphonygrid
Reference architecture for running an IBM Spectrum Symphony compute grid with Windows workloads on ROSA + OpenShift Virtualization, with burst capacity into IBM Cloud (ROKS + OpenShift Virtualization).
Documents
- docs/reference-architecture.md — the reference architecture: topology, platform requirements, Symphony port/WAN configuration, licensing, burst mechanics, build plan, risk register.
- docs/deployment-plan.md — the executable plan: locked decisions D1–D8, phases 0–5 with exit criteria, execution model.
- docs/phase-log.md — running record of phase executions and measurements.
- docs/research/verified-findings.md — raw research log: every load-bearing claim with source URLs, verbatim evidence, and adversarial-verification votes (research date 2026-07-08/09).
- poc/ — runnable $0 PoC: CE cross-cluster burst across two OpenShift clusters (containers on cluster A; burst as hostNetwork pods AND as Linux VMs-running-CE-containers on cluster B), with the real containerized port matrix (base 17869, SSM 21000–21007), join-wrapper, runbook, and exit criteria mirroring Phase 3.
Solution tree (deployable)
infra/— Terraform:aws/(ROSA HCP + metal pool, Phase 1),ibm/(ROKS, Phase 3),interconnect/(IPsec VPN, Phase 3)gitops/— Argo CD app-of-apps per cluster; operators (OCP Virt, Pipelines), UDN, Symphony mgmt VMs, WindowsVirtualMachinePool, installer-repo, image-pipeline, KEDA (Phase 4)images/— Windows golden image workflow (WS2019 + Symphony baked, sysprep-cloned; seeimages/windows/README.md) and Linux mgmt cloud-initsymphony/config/— EGO/SOAM fragments encoding the WAN/port invariantsscripts/— phase0 checks, GitOps bootstrap, secret rendering (nothing sensitive in git), installer upload.claude/agents/— infra, gitops, windows-image, symphony-admin agents;CLAUDE.mdhas the rules
Start here: docs/deployment-plan.md → Phase 0 → scripts/phase0-checks.sh.
TL;DR
- Feasible today. OCP Virt is GA on ROSA (Classic + HCP, x86 bare-metal machine pools) and supported on ROKS (VPC bare-metal workers, RHCOS, OVN CNI, 4.20+ manual install).
- Windows Server 2016/2019 (2022 w/ Fix 601711) are supported Symphony hosts; containerized Symphony is a dead end (archived, Linux-only) — run Symphony traditionally inside VMs. (MapReduce is unsupported on Windows hosts.)
- Licensing gate: Symphony Advanced Edition BYOL is required for production. The free Community Edition cannot run this design — Linux-only Docker image (no Windows binaries), 64-core/cluster cap (burst hosts count), no support. In hand (2026-07-09): the Advanced Edition Evaluation — Windows + Linux 7.3.2.0 installers and an entitlement (
sym_advanced_edition 7.3.2, valid to 2026-12-31) from IBM's eval portal, stored ininstallers/(gitignored) — so the full PoC incl. Windows hosts and real Host Factory runs at $0 before procurement. - AWS side licensing: Windows License Included for OCP Virt on ROSA (GA 2026-03, per-vCPU, d1 instance types for compliance). IBM side: BYOL only (IBM Cloud is an Authorized Outsourcer — favorable, but get Microsoft sign-off).
- ROKS VMs get VPC-routable IPs via VNI + OVN localnet UDN — the enabler for burst hosts reaching AWS-side masters. Caveats (re-verified 2026-07-09): VNI is allowlist-gated GA, IBM docs conflict on 4.20 vs 4.21 (plan 4.21), and cross-Transit-Gateway reachability is inferred, not documented — validate in the manual burst proof. ROSA VMs cannot do the equivalent (Red Hat documents the underlay as unsupported); masters need NLB exposure or native-EC2 placement.
- The build gap: no Host Factory provider targets OpenShift Virtualization VMs (and no built-in path provisions Windows dynamically on IBM Cloud) — a custom KubeVirt provider on the documented 5-script interface is required. Prior art: FINOS open-resource-broker, google/symphony-gcp. (KEDA was evaluated for VM scaling and rejected: it can drive a VirtualMachinePool via /scale, but its scale-in is not grid-aware — Host Factory's requestReturnMachines drains gracefully.)
- Burst economics on ROKS: bare-metal pool is semi-static (monthly-ish billing, slow node join); the burst unit is the VM (minutes, ~free on paid metal). Watch cross-cloud egress: per-task payloads billed out of AWS and metered on Direct Link can exceed burst compute cost — the multicluster fallback keeps data local.