diff --git a/adapter/internal/operator/gateway-api/contexts.go b/adapter/internal/operator/gateway-api/contexts.go index 19ef402f99..40ab07009f 100644 --- a/adapter/internal/operator/gateway-api/contexts.go +++ b/adapter/internal/operator/gateway-api/contexts.go @@ -50,7 +50,7 @@ func (g *GatewayContext) ResetListeners() { listener := &g.Spec.Listeners[i] g.Status.Listeners[i] = gwapiv1.ListenerStatus{Name: listener.Name} g.listeners[i] = &ListenerContext{ - listenerStatusId: i, + listenerStatusID: i, Listener: listener, gateway: g.Gateway, } @@ -64,7 +64,7 @@ type ListenerContext struct { *gwapiv1.Listener gateway *gwapiv1.Gateway - listenerStatusId int + listenerStatusID int namespaceSelector labels.Selector tlsSecrets []*v1.Secret } @@ -80,7 +80,7 @@ func (l *ListenerContext) SetCondition(conditionType gwapiv1.ListenerConditionTy } index := -1 - for i, existing := range l.gateway.Status.Listeners[l.listenerStatusId].Conditions { + for i, existing := range l.gateway.Status.Listeners[l.listenerStatusID].Conditions { if existing.Type == cond.Type { // return early if the condition is unchanged if existing.Status == cond.Status && @@ -95,26 +95,26 @@ func (l *ListenerContext) SetCondition(conditionType gwapiv1.ListenerConditionTy } if index > -1 { - l.gateway.Status.Listeners[l.listenerStatusId].Conditions[index] = cond + l.gateway.Status.Listeners[l.listenerStatusID].Conditions[index] = cond } else { - l.gateway.Status.Listeners[l.listenerStatusId].Conditions = append(l.gateway.Status.Listeners[l.listenerStatusId].Conditions, cond) + l.gateway.Status.Listeners[l.listenerStatusID].Conditions = append(l.gateway.Status.Listeners[l.listenerStatusID].Conditions, cond) } } func (l *ListenerContext) SetSupportedKinds(kinds ...gwapiv1.RouteGroupKind) { - l.gateway.Status.Listeners[l.listenerStatusId].SupportedKinds = kinds + l.gateway.Status.Listeners[l.listenerStatusID].SupportedKinds = kinds } func (l *ListenerContext) IncrementAttachedRoutes() { - l.gateway.Status.Listeners[l.listenerStatusId].AttachedRoutes++ + l.gateway.Status.Listeners[l.listenerStatusID].AttachedRoutes++ } func (l *ListenerContext) AttachedRoutes() int32 { - return l.gateway.Status.Listeners[l.listenerStatusId].AttachedRoutes + return l.gateway.Status.Listeners[l.listenerStatusID].AttachedRoutes } func (l *ListenerContext) AllowsKind(kind gwapiv1.RouteGroupKind) bool { - for _, allowed := range l.gateway.Status.Listeners[l.listenerStatusId].SupportedKinds { + for _, allowed := range l.gateway.Status.Listeners[l.listenerStatusID].SupportedKinds { if GroupDerefOr(allowed.Group, "") == GroupDerefOr(kind.Group, "") && allowed.Kind == kind.Kind { return true @@ -148,7 +148,7 @@ func (l *ListenerContext) AllowsNamespace(namespace *v1.Namespace) bool { } func (l *ListenerContext) IsReady() bool { - for _, cond := range l.gateway.Status.Listeners[l.listenerStatusId].Conditions { + for _, cond := range l.gateway.Status.Listeners[l.listenerStatusID].Conditions { if cond.Type == string(gwapiv1.ListenerConditionProgrammed) && cond.Status == metav1.ConditionTrue { return true } @@ -158,7 +158,7 @@ func (l *ListenerContext) IsReady() bool { } func (l *ListenerContext) GetConditions() []metav1.Condition { - return l.gateway.Status.Listeners[l.listenerStatusId].Conditions + return l.gateway.Status.Listeners[l.listenerStatusID].Conditions } func (l *ListenerContext) SetTLSSecrets(tlsSecrets []*v1.Secret) { diff --git a/adapter/internal/operator/gateway-api/infrastructure/kubernetes/proxy/resource_provider_test.go b/adapter/internal/operator/gateway-api/infrastructure/kubernetes/proxy/resource_provider_test.go index 4b571d424b..7281ec61e6 100644 --- a/adapter/internal/operator/gateway-api/infrastructure/kubernetes/proxy/resource_provider_test.go +++ b/adapter/internal/operator/gateway-api/infrastructure/kubernetes/proxy/resource_provider_test.go @@ -3,7 +3,6 @@ // // The full text of the Apache license is available in the LICENSE file at // // the root of the repo. -// // todo(amali) package proxy // import ( diff --git a/adapter/internal/operator/gateway-api/resource.go b/adapter/internal/operator/gateway-api/resource.go index 5d4271f04e..7e407b0d35 100644 --- a/adapter/internal/operator/gateway-api/resource.go +++ b/adapter/internal/operator/gateway-api/resource.go @@ -150,3 +150,19 @@ func (c *ControllerResources) sort() { return cmp.Compare(c1.GatewayClass.Name, c2.GatewayClass.Name) }) } + +func (r *Resources) GetEndpointSlicesForBackend(svcNamespace, svcName string, backendKind string) []*discoveryv1.EndpointSlice { + var endpointSlices []*discoveryv1.EndpointSlice + for _, endpointSlice := range r.EndpointSlices { + var backendSelectorLabel string + switch backendKind { + case KindService: + backendSelectorLabel = discoveryv1.LabelServiceName + } + if svcNamespace == endpointSlice.Namespace && + endpointSlice.GetLabels()[backendSelectorLabel] == svcName { + endpointSlices = append(endpointSlices, endpointSlice) + } + } + return endpointSlices +} diff --git a/adapter/internal/operator/gateway-api/route.go b/adapter/internal/operator/gateway-api/route.go index 90544664e8..2a12e36158 100644 --- a/adapter/internal/operator/gateway-api/route.go +++ b/adapter/internal/operator/gateway-api/route.go @@ -1131,7 +1131,8 @@ func (t *Translator) processDestination(backendRefContext BackendRefContext, // Route to endpoints by default if !t.EndpointRoutingDisabled { - endpoints, addrType = getIREndpointsFromEndpointSlices(nil, servicePort.Name, servicePort.Protocol) + endpointSlices := resources.GetEndpointSlicesForBackend(backendNamespace, string(backendRef.Name), KindDerefOr(backendRef.Kind, KindService)) + endpoints, addrType = getIREndpointsFromEndpointSlices(endpointSlices, servicePort.Name, servicePort.Protocol) } else { // Fall back to Service ClusterIP routing ep := ir.NewDestEndpoint( diff --git a/adapter/internal/operator/provider/runner/provider_runner.go b/adapter/internal/operator/provider/runner/provider_runner.go index 508865fc88..d241b67e68 100644 --- a/adapter/internal/operator/provider/runner/provider_runner.go +++ b/adapter/internal/operator/provider/runner/provider_runner.go @@ -20,7 +20,7 @@ * */ -package provider_runner +package runner import ( "context" diff --git a/helm-charts/templates/data-plane/gateway-components/adapter/adapter-deployment.yaml b/helm-charts/templates/data-plane/gateway-components/adapter/adapter-deployment.yaml index 3416b7cdde..bc68bc052f 100644 --- a/helm-charts/templates/data-plane/gateway-components/adapter/adapter-deployment.yaml +++ b/helm-charts/templates/data-plane/gateway-components/adapter/adapter-deployment.yaml @@ -114,18 +114,18 @@ spec: mountPath: /home/wso2/security/truststore/partition-server.crt subPath: {{.Values.wso2.apk.dp.partitionServer.tls.fileName | default "tls.crt"}} {{- end }} - readinessProbe: - exec: - command: [ "sh", "check_health.sh" ] - initialDelaySeconds: {{ .Values.wso2.apk.dp.adapter.deployment.readinessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.wso2.apk.dp.adapter.deployment.readinessProbe.periodSeconds }} - failureThreshold: {{ .Values.wso2.apk.dp.adapter.deployment.readinessProbe.failureThreshold }} - livenessProbe: - exec: - command: [ "sh", "check_health.sh" ] - initialDelaySeconds: {{ .Values.wso2.apk.dp.adapter.deployment.livenessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.wso2.apk.dp.adapter.deployment.livenessProbe.periodSeconds }} - failureThreshold: {{ .Values.wso2.apk.dp.adapter.deployment.livenessProbe.failureThreshold }} + # readinessProbe: + # exec: + # command: [ "sh", "check_health.sh" ] + # initialDelaySeconds: {{ .Values.wso2.apk.dp.adapter.deployment.readinessProbe.initialDelaySeconds }} + # periodSeconds: {{ .Values.wso2.apk.dp.adapter.deployment.readinessProbe.periodSeconds }} + # failureThreshold: {{ .Values.wso2.apk.dp.adapter.deployment.readinessProbe.failureThreshold }} + # livenessProbe: + # exec: + # command: [ "sh", "check_health.sh" ] + # initialDelaySeconds: {{ .Values.wso2.apk.dp.adapter.deployment.livenessProbe.initialDelaySeconds }} + # periodSeconds: {{ .Values.wso2.apk.dp.adapter.deployment.livenessProbe.periodSeconds }} + # failureThreshold: {{ .Values.wso2.apk.dp.adapter.deployment.livenessProbe.failureThreshold }} securityContext: allowPrivilegeEscalation: false capabilities: