fix: decouple operator from internal secrets providers #721
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem Solved
The original implementation was passing secrets as CLI arguments (
--secret
) to thethv
command, which was non-functional because the "none" secrets provider does not allow it:Resolves #521
Solution Implemented
Replaced the CLI argument approach with secure Kubernetes-native secret injection:
Key Changes Made:
Modified
deploymentForMCPServer
function inmcpserver_controller.go
:--secret
argumentsAdded
generateSecretsPodTemplatePatch
function:mcp
container using Kubernetes Secret referencesValueFrom.SecretKeyRef
instead of plain text valuesAdded
mergePodTemplateSpecs
function:Updated
deploymentNeedsUpdate
function:Fixed test file
mcpserver_pod_template_test.go
:TestDeploymentForMCPServerWithSecrets
to validate the new approachUpdated example
mcpserver_github.yaml
:podTemplateSpec
workaround back to the (corrected)secrets
CRD implementationSecurity Benefits
Functionality Benefits
secrets
field in MCPServer CRD remains unchangedTesting
Results
Token is securely handled in resources:
Plaintext value is not found:
Future considerations
At some point we might want a full
kubernetes
secrets provider inthv
, but the end result (addingvalueFrom.secretKeyRef
env's) would likely be the same.