Skip to content

[WIP] feat: integrate MCP Gateway, OpenShell, and Model as a Service into OpenShift Helm chart#307

Open
luis5tb wants to merge 6 commits into
RHEcosystemAppEng:mainfrom
luis5tb:worktree-kagenti
Open

[WIP] feat: integrate MCP Gateway, OpenShell, and Model as a Service into OpenShift Helm chart#307
luis5tb wants to merge 6 commits into
RHEcosystemAppEng:mainfrom
luis5tb:worktree-kagenti

Conversation

@luis5tb

@luis5tb luis5tb commented Jun 23, 2026

Copy link
Copy Markdown
Collaborator

Updates the OpenShift Helm chart with three optional platform integrations,
all disabled by default for full backward compatibility:

  • MCP Gateway (mcpGateway.enabled) — Replaces the MCP sidecar with a standalone MCP server registered
    behind the Kuadrant MCP Gateway, enabling federated tool discovery, centralized auth, and per-tool metrics
  • OpenShell (openshell.enabled) — Registers the agent with NVIDIA's OpenShell
    sandboxed execution platform. Creates a SandboxTemplate CR (agents.x-k8s.io/v1beta1) so the OpenShell
    gateway can spawn sandboxed agent instances with policy-enforced filesystem, network, process, and inference
    constraints. Sandbox pods use GCP service account credentials for secure authentication.
  • Model as a Service (modelService.enabled) — Points the agent at an external OpenShift AI MaaS endpoint
    (or any OpenAI-compatible gateway) instead of direct Gemini/Vertex AI access

Changes

MCP Gateway (mcpGateway.enabled: true)

  • MCP server runs as standalone Deployment+Service (sidecar removed)
  • HTTPRoute and MCPServerRegistration CRs register with the Kuadrant MCP Gateway
  • NetworkPolicy restricts MCP pod ingress to agent and gateway namespaces

OpenShell (openshell.enabled: true)

  • SandboxTemplate CR defines how sandboxed agent instances are provisioned
  • Agent Deployment labeled with openshell.nvidia.com/sandbox-template for discovery
  • NetworkPolicy allows ingress from the OpenShell gateway namespace
  • Prerequisites: kubernetes-sigs/agent-sandbox CRDs, OpenShell gateway Helm chart, privileged SCC

Model as a Service (modelService.enabled: true)

  • ConfigMap overrides LLM_PROVIDER to litellm, sets LLM_API_BASE and LLM_MODEL
  • Works with OpenShift AI MaaS, LiteLLM proxy, or direct vLLM/KServe endpoints
  • No Python code changes — reuses existing LiteLLM provider path

Documentation

  • Full README sections for each integration (what changes, prerequisites, config, verification)
  • Combined "Enabling All Three Together" example
  • Configuration reference tables for all new values

Test plan

  • helm template with all features disabled — no new resources rendered
  • helm template --set openshell.enabled=true — SandboxTemplate, NetworkPolicy, labels present
  • helm template --set mcpGateway.enabled=true — MCP standalone resources rendered, sidecar removed
  • helm template --set modelService.enabled=true — LLM_PROVIDER=litellm in ConfigMap
  • grep -ri kagenti deploy/openshift/ returns zero matches
  • Deploy on OpenShift cluster with each feature individually and all together

🤖 Generated with Claude Code

luis5tb and others added 5 commits July 1, 2026 17:54
When mcpGateway.enabled is true:
- MCP server runs as standalone Deployment+Service (not a sidecar)
- HTTPRoute registers the MCP server with the Gateway API gateway
- MCPServerRegistration CR registers it with Kuadrant MCP Gateway
- Agent MCP_SERVER_URL points to the gateway /mcp endpoint
- NetworkPolicy restricts MCP pod ingress to agent and gateway namespace
- MCP sidecar and mcp-tmp volume are removed from the agent pod

Requires: Red Hat Connectivity Link 1.3+, Gateway API CRDs,
a pre-configured Gateway with MCPGatewayExtension.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When kagenti.enabled is true:
- Agent Deployment labeled with kagenti.io/type, protocol.kagenti.io/a2a,
  and kagenti.io/framework for operator discovery
- AgentRuntime CR (agent.kagenti.dev/v1alpha1) enrolls the agent for
  SPIFFE workload identity, OTEL tracing, and A2A discovery
- OTEL config auto-overridden to point at Kagenti's collector
- Kagenti operator injects sidecars (SPIFFE, Keycloak, Envoy) automatically

Requires: Kagenti Operator v0.2.0+, SPIRE, Keycloak, Istio Ambient mesh.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When modelService.enabled is true:
- LLM_PROVIDER set to litellm (OpenAI-compatible protocol)
- LLM_MODEL and LLM_API_BASE point to the MaaS gateway endpoint
- Direct Gemini/Vertex AI config remains but is not used

Supports OpenShift AI MaaS, external LiteLLM proxy, or any
OpenAI-compatible endpoint (vLLM, KServe InferenceService).

Requires: OpenShift AI 3.4+ with MaaS enabled, or any external
OpenAI-compatible model gateway.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…fig reference

- Prerequisites table with required operators and minimum versions
  (Connectivity Link 1.3+, Kagenti v0.2.0+, OpenShift AI 3.4+)
- Detailed usage sections for MCP Gateway, Kagenti, and Model as a Service
  with configuration examples and verification commands
- Configuration reference tables for mcpGateway, kagenti, and modelService
- Combined deployment example for enabling all three features
- Updated MCP Sidecar section header to note MCP Gateway alternative

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When kagenti.enabled is true, OTEL tracing is auto-enabled but
otel.metricsEnabled remains independent and defaults to false.
Users wanting both must set both flags explicitly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@luis5tb luis5tb force-pushed the worktree-kagenti branch from e3d48d5 to 0ad309f Compare July 1, 2026 16:20
Remove Kagenti agent identity and monitoring integration (AgentRuntime CR,
SPIFFE labels, OTEL override) and replace with NVIDIA OpenShell sandboxed
execution support.

When openshell.enabled is true:
- A SandboxTemplate CR (agents.x-k8s.io/v1beta1) is created for the
  OpenShell gateway to spawn sandboxed agent instances
- The agent Deployment is labeled for OpenShell discovery
- A NetworkPolicy allows ingress from the OpenShell gateway namespace
- Sandbox pods use GCP service account credentials (not API key)

MCP Gateway and Model as a Service integrations are unchanged.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@luis5tb luis5tb changed the title [WIP] feat: integrate MCP Gateway, Kagenti, and Model as a Service into OpenShift Helm chart [WIP] feat: integrate MCP Gateway, OpenShell, and Model as a Service into OpenShift Helm chart Jul 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant