diff --git a/pkg/provider/kubernetes/gateway/fixtures/httproute/with_app_protocol_service.yml b/pkg/provider/kubernetes/gateway/fixtures/httproute/with_app_protocol_service.yml index c364c8f52..4f51360a0 100644 --- a/pkg/provider/kubernetes/gateway/fixtures/httproute/with_app_protocol_service.yml +++ b/pkg/provider/kubernetes/gateway/fixtures/httproute/with_app_protocol_service.yml @@ -59,3 +59,13 @@ spec: weight: 1 kind: Service group: "" + - name: whoami-HTTP + port: 80 + weight: 1 + kind: Service + group: "" + - name: whoami-HTTPS + port: 443 + weight: 1 + kind: Service + group: "" diff --git a/pkg/provider/kubernetes/gateway/fixtures/services.yml b/pkg/provider/kubernetes/gateway/fixtures/services.yml index 2f864c2f5..143dc8656 100644 --- a/pkg/provider/kubernetes/gateway/fixtures/services.yml +++ b/pkg/provider/kubernetes/gateway/fixtures/services.yml @@ -430,6 +430,80 @@ spec: name: wss appProtocol: kubernetes.io/wss +--- +kind: EndpointSlice +apiVersion: discovery.k8s.io/v1 +metadata: + name: whoami-HTTPS-abc + namespace: default + labels: + kubernetes.io/service-name: whoami-HTTPS + +addressType: IPv4 +ports: + - name: websecure + port: 8443 +endpoints: + - addresses: + - 10.10.0.16 + conditions: + ready: true + +--- +apiVersion: v1 +kind: Service +metadata: + name: whoami-HTTPS + namespace: default + +spec: + ports: + - name: websecure + protocol: TCP + appProtocol: HTTPS + port: 443 + targetPort: websecure + selector: + app: containous + task: whoami-HTTPS + +--- +kind: EndpointSlice +apiVersion: discovery.k8s.io/v1 +metadata: + name: whoami-HTTP-abc + namespace: default + labels: + kubernetes.io/service-name: whoami-HTTP + +addressType: IPv4 +ports: + - name: web + port: 8080 +endpoints: + - addresses: + - 10.10.0.17 + conditions: + ready: true + +--- +apiVersion: v1 +kind: Service +metadata: + name: whoami-HTTP + namespace: default + +spec: + ports: + - name: web + protocol: TCP + port: 80 + appProtocol: HTTP + targetPort: web + selector: + app: containous + task: whoami-HTTP + --- apiVersion: v1 kind: Service diff --git a/pkg/provider/kubernetes/gateway/grpcroute.go b/pkg/provider/kubernetes/gateway/grpcroute.go index ecf208568..39b84181a 100644 --- a/pkg/provider/kubernetes/gateway/grpcroute.go +++ b/pkg/provider/kubernetes/gateway/grpcroute.go @@ -430,7 +430,7 @@ func getGRPCServiceProtocol(portSpec corev1.ServicePort) (string, error) { return schemeH2C, nil } - switch ap := *portSpec.AppProtocol; ap { + switch ap := strings.ToLower(*portSpec.AppProtocol); ap { case appProtocolH2C: return schemeH2C, nil case appProtocolHTTPS: diff --git a/pkg/provider/kubernetes/gateway/httproute.go b/pkg/provider/kubernetes/gateway/httproute.go index 8af4cadd4..ebee5fd1f 100644 --- a/pkg/provider/kubernetes/gateway/httproute.go +++ b/pkg/provider/kubernetes/gateway/httproute.go @@ -817,7 +817,7 @@ func getHTTPServiceProtocol(portSpec corev1.ServicePort) (string, error) { return protocol, nil } - switch ap := *portSpec.AppProtocol; ap { + switch ap := strings.ToLower(*portSpec.AppProtocol); ap { case appProtocolH2C: return schemeH2C, nil case appProtocolHTTP, appProtocolWS: diff --git a/pkg/provider/kubernetes/gateway/kubernetes_test.go b/pkg/provider/kubernetes/gateway/kubernetes_test.go index f16051051..90e93f64f 100644 --- a/pkg/provider/kubernetes/gateway/kubernetes_test.go +++ b/pkg/provider/kubernetes/gateway/kubernetes_test.go @@ -2959,6 +2959,14 @@ func TestLoadHTTPRoutes_backendExtensionRef(t *testing.T) { Name: "default-whoami-wss-http-80", Weight: ptr.To(1), }, + { + Name: "default-whoami-HTTP-http-80", + Weight: ptr.To(1), + }, + { + Name: "default-whoami-HTTPS-http-443", + Weight: ptr.To(1), + }, }, }, }, @@ -3004,6 +3012,34 @@ func TestLoadHTTPRoutes_backendExtensionRef(t *testing.T) { }, }, }, + "default-whoami-HTTPS-http-443": { + LoadBalancer: &dynamic.ServersLoadBalancer{ + Strategy: dynamic.BalancerStrategyWRR, + Servers: []dynamic.Server{ + { + URL: "https://10.10.0.16:8443", + }, + }, + PassHostHeader: ptr.To(true), + ResponseForwarding: &dynamic.ResponseForwarding{ + FlushInterval: ptypes.Duration(100 * time.Millisecond), + }, + }, + }, + "default-whoami-HTTP-http-80": { + LoadBalancer: &dynamic.ServersLoadBalancer{ + Strategy: dynamic.BalancerStrategyWRR, + Servers: []dynamic.Server{ + { + URL: "http://10.10.0.17:8080", + }, + }, + PassHostHeader: ptr.To(true), + ResponseForwarding: &dynamic.ResponseForwarding{ + FlushInterval: ptypes.Duration(100 * time.Millisecond), + }, + }, + }, }, ServersTransports: map[string]*dynamic.ServersTransport{}, },