From 83bdb989c11c8f3cc5db42aef642345a09b5e5c0 Mon Sep 17 00:00:00 2001 From: Anthony Hausman Date: Thu, 23 Jul 2026 13:32:48 +0200 Subject: [PATCH] feat: make transport registry configurable Replace hardcoded ghcr.io registry with Helm value to allow custom registries. Fix invalid golangci-lint exclusions block to ignore long kubebuilder directives in api/. Signed-off-by: Anthony Hausman --- .golangci.yml | 9 ++++++-- helm/kmcp/templates/deployment.yaml | 8 ++++++- helm/kmcp/values.yaml | 5 +++++ .../transportadapter_translator.go | 21 +++++++++++++------ 4 files changed, 34 insertions(+), 9 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index a7246fb..3571212 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -25,16 +25,21 @@ linters: revive: rules: - name: comment-spacings +issues: + exclude-rules: + - path: 'api/.*' + linters: + - lll exclusions: generated: lax rules: - linters: - lll - path: api/* + path: api/.* - linters: - dupl - lll - path: internal/* + path: internal/.* paths: - third_party$ - builtin$ diff --git a/helm/kmcp/templates/deployment.yaml b/helm/kmcp/templates/deployment.yaml index bb044fc..b709037 100644 --- a/helm/kmcp/templates/deployment.yaml +++ b/helm/kmcp/templates/deployment.yaml @@ -46,10 +46,16 @@ spec: name: health protocol: TCP {{- end }} - {{- if .Values.controller.env }} + {{- if or .Values.controller.env (and .Values.transportAdapter .Values.transportAdapter.registry) }} env: + {{- if and .Values.transportAdapter .Values.transportAdapter.registry }} + - name: TRANSPORT_ADAPTER_REGISTRY + value: {{ .Values.transportAdapter.registry | quote }} + {{- end }} + {{- if .Values.controller.env }} {{- toYaml .Values.controller.env | nindent 8 }} {{- end }} + {{- end }} securityContext: {{- toYaml .Values.securityContext | nindent 10 }} {{- if .Values.controller.healthProbe.bindAddress }} diff --git a/helm/kmcp/values.yaml b/helm/kmcp/values.yaml index efd8b7d..0c8dcfa 100644 --- a/helm/kmcp/values.yaml +++ b/helm/kmcp/values.yaml @@ -108,3 +108,8 @@ service: type: ClusterIP port: 8443 targetPort: 8443 + +# Transport adapter configuration +transportAdapter: + # Override the default registry for the transport adapter image + registry: "ghcr.io/agentgateway" diff --git a/pkg/controller/transportadapter/transportadapter_translator.go b/pkg/controller/transportadapter/transportadapter_translator.go index c8e463f..df6992b 100644 --- a/pkg/controller/transportadapter/transportadapter_translator.go +++ b/pkg/controller/transportadapter/transportadapter_translator.go @@ -24,9 +24,10 @@ import ( ) const ( - transportAdapterRepository = "ghcr.io/agentgateway/agentgateway" - defaultTransportAdapterVersion = "0.9.0" - kgatewayMcpAppProtocol = "kgateway.dev/mcp" + defaultTransportAdapterRegistry = "ghcr.io/agentgateway" + transportAdapterImageName = "agentgateway" + defaultTransportAdapterVersion = "0.9.0" + kgatewayMcpAppProtocol = "kgateway.dev/mcp" ) // versionRegex validates that version strings contain only allowed characters @@ -672,17 +673,25 @@ func validateVersion(version string) error { // getTransportAdapterImage returns the transport adapter container image, // using the environment variable if provided and valid, otherwise using the default func getTransportAdapterImage() string { + transportAdapterRegistry := os.Getenv("TRANSPORT_ADAPTER_REGISTRY") + if transportAdapterRegistry == "" { + transportAdapterRegistry = defaultTransportAdapterRegistry + } + transportAdapterVersion := os.Getenv("TRANSPORT_ADAPTER_VERSION") if transportAdapterVersion == "" { - return fmt.Sprintf("%s:%s-musl", transportAdapterRepository, defaultTransportAdapterVersion) + return fmt.Sprintf("%s/%s:%s-musl", + transportAdapterRegistry, transportAdapterImageName, defaultTransportAdapterVersion) } if err := validateVersion(transportAdapterVersion); err != nil { klog.Warningf("Invalid TRANSPORT_ADAPTER_VERSION: %v, fallback to %s", err, defaultTransportAdapterVersion) - return fmt.Sprintf("%s:%s-musl", transportAdapterRepository, defaultTransportAdapterVersion) + return fmt.Sprintf("%s/%s:%s-musl", + transportAdapterRegistry, transportAdapterImageName, defaultTransportAdapterVersion) } - return fmt.Sprintf("%s:%s-musl", transportAdapterRepository, transportAdapterVersion) + return fmt.Sprintf("%s/%s:%s-musl", + transportAdapterRegistry, transportAdapterImageName, transportAdapterVersion) } func makePtr[T any](v T) *T {