External Secret Integration for MCP Servers#6484
External Secret Integration for MCP Servers#6484calvinmclean wants to merge 12 commits intoobot-platform:mainfrom
Conversation
Signed-off-by: Nick Hale <4175918+njhale@users.noreply.github.com>
EntelligenceAI PR SummaryFixes a nil-dereference bug in
Confidence Score: 5/5 - Safe to MergeSafe to merge — this PR correctly addresses a nil-dereference bug in Key Findings:
Files requiring special attention
|
There was a problem hiding this comment.
Adds end-to-end Kubernetes Secret binding support for MCP server environment variables and headers, enabling GitOps-managed credential injection with optional dynamic file-mount rotation without pod restarts.
- New
MCPSecretBindingtype (name,key,file,dynamic) added toMCPHeaderand propagated through OpenAPI, deep copy, and UI type definitions pkg/mcp/secretbindings.goprovidesMergeBoundCreds,HashReferencedKeys,ManifestReferencesSecret, andManifestHasOnlyDynamicFileBindingsForSecretutilitiespkg/controller/handlers/mcpsecretbinding/handler.gowatches Secrets in the obot namespace and fans out annotation-hash bumps to referencingMCPServerCRDs, with selective session shutdown skipped for dynamic file bindingsmcp.MergeBoundCredsintegrated into all API handler paths (mcp, mcpcatalogs, mcpgateway, systemmcpserver, poweruserworkspace) before server config constructionValidateSecretBindingsandValidateTemplateReferencesenforce GitOps-only usage, mutual exclusivity with static values, anddynamic-requires-filerules in both server and catalog entry handlers/controllersLocalK8sClientandObotNamespacethreaded fromServices→Server→api.Contextto support Secret lookups; nil-safe on Docker backend- Drift detection in
mcpserver.gomigrated fromSlicesEqualIgnoreOrderto sort-then-hash for order-independent comparison - UI components updated to render read-only Secret binding metadata, surface missing-Secret warnings, and disable save on non-Kubernetes engines with binding errors
No description provided.