diff --git a/go/internal/controller/agent_controller.go b/go/internal/controller/agent_controller.go index d1271c109..4deed8c27 100644 --- a/go/internal/controller/agent_controller.go +++ b/go/internal/controller/agent_controller.go @@ -70,7 +70,7 @@ func (r *AgentController) SetupWithManager(mgr ctrl.Manager) error { WithOptions(controller.Options{ NeedLeaderElection: ptr.To(true), }). - For(&v1alpha2.Agent{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})) + For(&v1alpha2.Agent{}, builder.WithPredicates(predicate.GenerationChangedPredicate{}, predicate.LabelChangedPredicate{})) // Setup owns relationships for resources created by the Agent controller - // for now ownership of agent resources is handled by the ADK translator diff --git a/go/internal/controller/mcp_server_controller.go b/go/internal/controller/mcp_server_controller.go index dee0ee3cd..eaa93f451 100644 --- a/go/internal/controller/mcp_server_controller.go +++ b/go/internal/controller/mcp_server_controller.go @@ -65,7 +65,7 @@ func (r *MCPServerController) SetupWithManager(mgr ctrl.Manager) error { WithOptions(controller.Options{ NeedLeaderElection: ptr.To(true), }). - For(&v1alpha1.MCPServer{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})). + For(&v1alpha1.MCPServer{}, builder.WithPredicates(predicate.GenerationChangedPredicate{}, predicate.LabelChangedPredicate{})). Owns(&appsv1.Deployment{}, builder.WithPredicates(predicate.ResourceVersionChangedPredicate{})). Owns(&corev1.Service{}, builder.WithPredicates(predicate.ResourceVersionChangedPredicate{})). Owns(&corev1.ConfigMap{}, builder.WithPredicates(predicate.ResourceVersionChangedPredicate{})). diff --git a/go/internal/controller/translator/agent/adk_api_translator.go b/go/internal/controller/translator/agent/adk_api_translator.go index 9c4a257cc..2ac6195df 100644 --- a/go/internal/controller/translator/agent/adk_api_translator.go +++ b/go/internal/controller/translator/agent/adk_api_translator.go @@ -325,7 +325,7 @@ func (a *adkApiTranslator) buildManifest( }, corev1.EnvVar{ Name: "KAGENT_URL", - Value: fmt.Sprintf("http://kagent-controller.%s:8083", utils.GetResourceNamespace()), + Value: fmt.Sprintf("http://%s.%s:8083", utils.GetControllerName(), utils.GetResourceNamespace()), }, ) diff --git a/go/internal/utils/common.go b/go/internal/utils/common.go index 8caccb6a3..43672d900 100644 --- a/go/internal/utils/common.go +++ b/go/internal/utils/common.go @@ -33,6 +33,15 @@ func GetResourceNamespace() string { return "kagent" } +// GetControllerName returns the name for the kagent controller, +// using the KAGENT_CONTROLLER_NAME environment variable or defaulting to "kagent-controller". +func GetControllerName() string { + if val := os.Getenv("KAGENT_CONTROLLER_NAME"); val != "" { + return val + } + return "kagent-controller" +} + // ResourceRefString formats namespace and name as a string reference in "namespace/name" format. func ResourceRefString(namespace, name string) string { return fmt.Sprintf("%s/%s", namespace, name) diff --git a/helm/kagent/templates/controller-deployment.yaml b/helm/kagent/templates/controller-deployment.yaml index 559abd51f..75f95d772 100644 --- a/helm/kagent/templates/controller-deployment.yaml +++ b/helm/kagent/templates/controller-deployment.yaml @@ -88,6 +88,10 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace + - name: KAGENT_CONTROLLER_NAME + valueFrom: + fieldRef: + fieldPath: spec.serviceAccountName - name: LOG_LEVEL value: {{ .Values.controller.loglevel | quote }} - name: OTEL_TRACING_ENABLED