Unify ARO and ROSA Helm charts under single charts - #15
Conversation
Update gitops.basePath to charts/ and add gitops.cloud (aro|rosa) parameter in both Terraform bootstraps. Update Makefile CHARTS_DIR.
AGENTS.md reflects the new charts/ layout and six-wave structure. deploy_existing_openshift/README.md drops stale PCA_Deployment_ROSA/charts path references. Add unify-aro-rosa-plan.md to local-docs.
Single chart set replaces the two parallel chart trees. ROSA charts serve as the base; cloud-specific config lives in values-aro.yaml values-rosa.yaml per chart. ARO gains observability, guardrails, MCP, and full IDE coverage (Roo Code + Continue + Cline). ROSA gains EPP, TLS cert job, benchmarks, and DevSpaces dashboard samples.
…pipelines - Delete standalone vscode-extensions-config.yaml (already created in devspaces-global-config.yaml with full 4-extension list) - Rename datasciencepipelines → aipipelines in DataScienceCluster template (RHOAI 3.4 renamed the component; fixes ArgoCD ComparisonError on ARO) Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Sprig's default function treats boolean false as empty, so `false | default true` returns true. Use `not (eq false ...)` instead, which correctly respects an explicit false value. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Replace lookup+randAlphaNum with sha256sum(ns/release/pca-grafana). lookup and randAlphaNum produce different values on each ArgoCD sync, causing constant drift. Deterministic hash survives restarts and syncs. Add checksum annotation to Deployment to roll on password change. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
…spaces fields - tlsJob.enabled: false (RHOAI auto-creates qwen36-vllm-kserve-self-signed-certs) - aiGateway.tls.secretName updated to match RHOAI-created cert - observability.enabled: true with Grafana + Langfuse + OTel for ARO - pca-observability.prometheus.accessMode: namespace (existing OCP) - devspaces list uses correct field names (name/user not workspaceName/username)
- Remove continue-config from devspaces-global-config.yaml; DevSpaces operator propagates global CMs into user namespaces (subpath mount, read-only) and would clobber per-ns API key/headers. Continue config lives only in per-namespace continue-configmaps.yaml. - DSC: modelsAsService → Removed, remove modelmeshserving (RHOAI 3.4) - NFD image: v4.17 → v4.21 Co-Authored-By: Itay Katav <itay1551@users.noreply.github.com> Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Add vllm.useCustomRuntime flag for ARO where RHOAI bundled vLLM does not support Qwen3.5-MoE (Qwen3.6-35B requires vLLM >= 0.18). When enabled, renders ServingRuntime + InferenceService instead of LLMInferenceService. - servingruntime.yaml: new, conditional on vllm.useCustomRuntime - inferenceservice.yaml: new, conditional on vllm.useCustomRuntime - llminferenceservice.yaml: gated on not .Values.vllm.useCustomRuntime - llm-d-gateway-httproute.yaml: InferencePool rules only when epp.enabled; fallback service uses configurable model.workloadServiceSuffix (default kserve-workload-svc for ROSA, predictor for ARO) - tls-secret-job.yaml: fix CN > 64 char limit; use short CN=llm-d-gateway, full FQDN in SAN only (modern TLS ignores CN, checks SAN) - values.yaml: add vllm.useCustomRuntime: false default - values-aro.yaml: useCustomRuntime: true, tlsJob: true, predictor suffix, full observability enabled, CUDA compat env vars removed (driver 580+ supports vLLM 0.19.0 natively without compat shims) Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
- llm-d-gateway-httproute: fallback service uses port 80 (KServe service exposes 80→8000; port 8000 is pod-direct only for InferencePool/EPP) - pca-observability/values.yaml: update adminPassword comment to reflect deterministic hash approach (aligned with upstream PR rh-ai-quickstart#14) - values-aro.yaml (operators): nfd.enabled: true — ARO requires NFD to label GPU nodes with nvidia.com/gpu.deploy.* so driver DaemonSet schedules Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
kserve-workload-svc (ROSA/LLMInferenceService) exposes port 8000. InferenceService predictor (ARO/useCustomRuntime) exposes port 80→8000. Add model.workloadServicePort (default 8000) and override to 80 in values-aro.yaml so the llm-d gateway HTTPRoute uses the correct port for each cloud. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
- pca-observability.namespace: hacohen-ai-coder → ai-serving (test artifact)
- add {{- fail }} guard for empty gitops.cloud in app-of-apps template
- pca-benchmarks/values.yaml: enabled: false (opt-in, not opt-out)
- hardware-profiles.yaml: add | int cast for cpu counts (HardwareProfile CRD expects integer)
- subscriptions.yaml: double-chain serviceMesh/serverless guards to match NFD pattern
- datasciencecluster.yaml: add modelmeshserving: Removed explicitly
- values-aro.yaml: epp.enabled: false (InferencePool/InferenceModel CRDs absent on RHOAI 3.3.1)
|
Thank you for the huge PR @Hadar301 I see that you wrote:
The 18 fails on ROSA deployment, wasn't pre-existing. Regarding the existing OpenShift cluster, we had 0 failures during the full deployment. We need to merge when we don't have failed tests. |
- model.name: qwen36-vllm → qwen3-coder in values-aro.yaml so service names and pod labels match ROSA smoke test expectations - model.servedName: new field lets vLLM serve a model under a different API name (ARO: serves Qwen3.6-35B as Qwen3-Coder-30B for test parity) - vllm.enableThinking: false adds --chat-template-kwargs to ServingRuntime args to disable Qwen3 thinking mode per cloud (default true = enabled) - epp.enabled: false in values-aro.yaml (InferencePool CRDs absent RHOAI 3.3.1) - pca-observability.namespace: ai-serving (was hacohen-ai-coder test artifact) - ARO HELM_ARGS documented in deploy-existing-openshift Cursor skill Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
ARO31 passed / 17 failed / 6 skipped — full stack deployed: Qwen3.6-35B on H100 NVL via vLLM v0.19.0, Grafana, Langfuse, OTel, RHCL gateway, Continue/Roo Code/Cline. Additional ARO-specific failures beyond the ROSA infrastructure issues above:
Proposed test fixes (separate PR)
Full per-test table: |
Summary
PCA_Deployment_ARO/charts/andPCA_Deployment_ROSA/charts/) into a singlecharts/directory at the repo rootvalues-aro.yamlandvalues-rosa.yamloverlays;pca-app-of-appsselects the overlay viagitops.cloud: aro|rosainjected from Terraformpca-benchmarkschart (ported from ARO, disabled on ROSA by default)oc runstdout mixing), not regressionsKey changes
Chart unification
charts/pca-app-of-apps: addsgitops.cloudparam and Wave 5 forpca-benchmarkscharts/pca-operators: gates NFD / ServiceMesh / Serverless on feature flags; channels parameterized per cloudcharts/pca-platform-config:datasciencepipelines→aipipelines(RHOAI 3.4); NFD image v4.21charts/pca-ai-serving: model/hardware/storage/vLLM fully parameterized; addsvllm.useCustomRuntimeflag for ARO (usesServingRuntime+InferenceServiceinstead ofLLMInferenceServicebecause RHOAI 3.3.x bundles vLLM ~0.13 which does not support Qwen3.5-MoE); EPP/TLS job/InferenceRouting conditional; TLS CN length fix (≤64 chars); fallback service port configurable per cloudcharts/pca-devspaces: removes globalcontinue-config(DevSpaces operator subpath propagation overwrites per-ns keys); onlyvscode-extensions-configremains global; dashboard samples and OpenCode build ported from AROcharts/pca-benchmarks: new chart from ARO, parameterized,enabled: falseby default on ROSAcharts/pca-ai-serving/charts/pca-observability: Grafana password uses deterministic sha256 hash (ArgoCD-safe;randAlphaNum/lookupdrift on every sync)Infrastructure
gitops-bootstrap.tf:gitops.basePath→charts,gitops.cloud: aro|rosaaddedMakefile:CHARTS_DIR := chartsPCA_Deployment_ARO/charts/andPCA_Deployment_ROSA/charts/deletedDocumentation
AGENTS.md: updated directory structure and 6-chart wave tableREADME.md: deployment guide extracted to newDEPLOYMENT.mdlocal-docs/aro-rosa-gap-analysis.md: documents all ARO/ROSA gaps found during testing (vLLM compat, GuardrailsOrchestrator controller removed in RHOAI 3.4, Sprig boolean bug, ArgoCD cascade deletion risk).cursor/skills/deploy-existing-openshift/SKILL.md: kuadrant shared-cluster workaround, guardrails teardown finalizer fixTest plan
helm templatedry-run all 6 charts × 2 cloud values — no errorsmake smoke AI_NAMESPACE=hacohen-ai-coder DEV_NAMESPACE=hacohen-dev1-devspaces— ROSA: 34 pass / 14 fail (pre-existing) / 6 skipmake smoke AI_NAMESPACE=hacohen-ai-coder DEV_NAMESPACE=hacohen-dev1-devspaces— ARO: 30 pass / 18 fail (pre-existing + model name mismatch) / 6 skip