From 48d9df8a82c8228c2923402e4c35b4a590eabeef Mon Sep 17 00:00:00 2001 From: Taufik Mulyana Date: Thu, 28 Nov 2024 10:31:41 +0700 Subject: [PATCH 1/5] fix: allow hostname to use subdomain with single label/character Signed-off-by: Taufik Mulyana --- api/v1alpha1/backend_types.go | 2 +- .../crds/generated/gateway.envoyproxy.io_backends.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/api/v1alpha1/backend_types.go b/api/v1alpha1/backend_types.go index 563bb5d2019..be69322cf66 100644 --- a/api/v1alpha1/backend_types.go +++ b/api/v1alpha1/backend_types.go @@ -94,7 +94,7 @@ type FQDNEndpoint struct { // // +kubebuilder:validation:MinLength=1 // +kubebuilder:validation:MaxLength=253 - // +kubebuilder:validation:Pattern=`^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9]))*$` + // +kubebuilder:validation:Pattern=`^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$` Hostname string `json:"hostname"` // Port defines the port of the backend endpoint. diff --git a/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_backends.yaml b/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_backends.yaml index 7d0da8385be..298abf4cb5a 100644 --- a/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_backends.yaml +++ b/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_backends.yaml @@ -80,7 +80,7 @@ spec: endpoint. maxLength: 253 minLength: 1 - pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9]))*$ + pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string port: description: Port defines the port of the backend endpoint. From cf1cc7ba6e5f51ae331a9cdb638d5c8cdd395d05 Mon Sep 17 00:00:00 2001 From: Taufik Mulyana Date: Thu, 28 Nov 2024 10:50:04 +0700 Subject: [PATCH 2/5] add test Signed-off-by: Taufik Mulyana --- test/cel-validation/backend_test.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/test/cel-validation/backend_test.go b/test/cel-validation/backend_test.go index a46a2d4078a..576cfbc1e85 100644 --- a/test/cel-validation/backend_test.go +++ b/test/cel-validation/backend_test.go @@ -75,6 +75,24 @@ func TestBackend(t *testing.T) { Port: 443, }, }, + { + FQDN: &egv1a1.FQDNEndpoint{ + Hostname: "sub.example.com", + Port: 443, + }, + }, + { + FQDN: &egv1a1.FQDNEndpoint{ + Hostname: "sub.s.example.com", + Port: 443, + }, + }, + { + FQDN: &egv1a1.FQDNEndpoint{ + Hostname: "sub1.s.sub.example.com", + Port: 443, + }, + }, }, } }, From cfe69abd72e21622a1e2d640b18e657944b825d4 Mon Sep 17 00:00:00 2001 From: Taufik Mulyana Date: Thu, 28 Nov 2024 11:09:26 +0700 Subject: [PATCH 3/5] fix test Signed-off-by: Taufik Mulyana --- test/cel-validation/backend_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/cel-validation/backend_test.go b/test/cel-validation/backend_test.go index 576cfbc1e85..bfdf4336735 100644 --- a/test/cel-validation/backend_test.go +++ b/test/cel-validation/backend_test.go @@ -202,10 +202,10 @@ func TestBackend(t *testing.T) { } }, wantErrors: []string{ - "spec.endpoints[0].fqdn.hostname: Invalid value: \"host name\": spec.endpoints[0].fqdn.hostname in body should match '^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9]))*$'", - "spec.endpoints[1].fqdn.hostname: Invalid value: \"host_name\": spec.endpoints[1].fqdn.hostname in body should match '^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9]))*$'", - "spec.endpoints[2].fqdn.hostname: Invalid value: \"hostname:443\": spec.endpoints[2].fqdn.hostname in body should match '^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9]))*$", - "spec.endpoints[3].fqdn.hostname: Invalid value: \"host.*.name\": spec.endpoints[3].fqdn.hostname in body should match '^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9]))*$", + "spec.endpoints[0].fqdn.hostname: Invalid value: \"host name\": spec.endpoints[0].fqdn.hostname in body should match '^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$'", + "spec.endpoints[1].fqdn.hostname: Invalid value: \"host_name\": spec.endpoints[1].fqdn.hostname in body should match '^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$'", + "spec.endpoints[2].fqdn.hostname: Invalid value: \"hostname:443\": spec.endpoints[2].fqdn.hostname in body should match '^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", + "spec.endpoints[3].fqdn.hostname: Invalid value: \"host.*.name\": spec.endpoints[3].fqdn.hostname in body should match '^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$", }, }, { From 19dbff1723f7197e5b471cc91b7515e6165c0462 Mon Sep 17 00:00:00 2001 From: Taufik Mulyana Date: Sat, 30 Nov 2024 22:51:30 +0700 Subject: [PATCH 4/5] fix coverage test Signed-off-by: Taufik Mulyana --- test/cel-validation/backend_test.go | 6 ------ 1 file changed, 6 deletions(-) diff --git a/test/cel-validation/backend_test.go b/test/cel-validation/backend_test.go index bfdf4336735..f49ea9005e8 100644 --- a/test/cel-validation/backend_test.go +++ b/test/cel-validation/backend_test.go @@ -87,12 +87,6 @@ func TestBackend(t *testing.T) { Port: 443, }, }, - { - FQDN: &egv1a1.FQDNEndpoint{ - Hostname: "sub1.s.sub.example.com", - Port: 443, - }, - }, }, } }, From c49eebb8e496ec43245d2006707e21671ddd01cd Mon Sep 17 00:00:00 2001 From: Taufik Mulyana Date: Fri, 6 Dec 2024 14:39:13 +0700 Subject: [PATCH 5/5] fix lint Signed-off-by: Taufik Mulyana --- test/cel-validation/backend_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/cel-validation/backend_test.go b/test/cel-validation/backend_test.go index a147b965de2..42b3470da46 100644 --- a/test/cel-validation/backend_test.go +++ b/test/cel-validation/backend_test.go @@ -87,7 +87,7 @@ func TestBackend(t *testing.T) { Port: 443, }, }, - { + { FQDN: &egv1a1.FQDNEndpoint{ Hostname: "sub.s.example.com", Port: 443,