From 1ebb991a656da6cc633bb4f6e1042c6be815cf8b Mon Sep 17 00:00:00 2001 From: Balazs Stasz Date: Sat, 22 Feb 2025 15:01:59 +0100 Subject: [PATCH 1/5] Added Secret and ConfigMap parsing Signed-off-by: Balazs Stasz --- internal/gatewayapi/resource/load.go | 30 +++++++++++++++++++ .../resource/testdata/all-resources.in.yaml | 22 ++++++++++++++ .../resource/testdata/all-resources.out.yaml | 22 ++++++++++++++ 3 files changed, 74 insertions(+) diff --git a/internal/gatewayapi/resource/load.go b/internal/gatewayapi/resource/load.go index d9bcaa9b14..24f61d1e5c 100644 --- a/internal/gatewayapi/resource/load.go +++ b/internal/gatewayapi/resource/load.go @@ -99,6 +99,8 @@ func loadKubernetesYAMLToResources(input []byte, addMissingResources bool) (*Res } kobjVal := reflect.ValueOf(kobj).Elem() spec := kobjVal.FieldByName("Spec") + data := kobjVal.FieldByName("Data") + stringData := kobjVal.FieldByName("StringData") switch gvk.Kind { case KindEnvoyProxy: @@ -311,6 +313,34 @@ func loadKubernetesYAMLToResources(input []byte, addMissingResources bool) (*Res Spec: typedSpec.(egv1a1.BackendSpec), } resources.Backends = append(resources.Backends, backend) + case KindSecret: + typedData := data.Interface() + typedStringData := stringData.Interface() + secret := &corev1.Secret{ + TypeMeta: metav1.TypeMeta{ + Kind: KindSecret, + }, + ObjectMeta: metav1.ObjectMeta{ + Name: name, + Namespace: namespace, + }, + Data: typedData.(map[string][]byte), + StringData: typedStringData.(map[string]string), + } + resources.Secrets = append(resources.Secrets, secret) + case KindConfigMap: + typedData := data.Interface() + configMap := &corev1.ConfigMap{ + TypeMeta: metav1.TypeMeta{ + Kind: KindConfigMap, + }, + ObjectMeta: metav1.ObjectMeta{ + Name: name, + Namespace: namespace, + }, + Data: typedData.(map[string]string), + } + resources.ConfigMaps = append(resources.ConfigMaps, configMap) } return nil diff --git a/internal/gatewayapi/resource/testdata/all-resources.in.yaml b/internal/gatewayapi/resource/testdata/all-resources.in.yaml index 733660178e..910e7b25f8 100644 --- a/internal/gatewayapi/resource/testdata/all-resources.in.yaml +++ b/internal/gatewayapi/resource/testdata/all-resources.in.yaml @@ -229,3 +229,25 @@ spec: - ip: address: 0.0.0.0 port: 4321 +--- +apiVersion: v1 +kind: Secret +metadata: + name: secret + namespace: default +data: + .secret-file: dmFsdWUtMg0KDQo= +stringData: + secret: "literal value" +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: configmap + namespace: default +data: + player_initial_lives: "3" + game.properties: | + enemy.types=aliens,monsters + player.maximum-lives=5 + \ No newline at end of file diff --git a/internal/gatewayapi/resource/testdata/all-resources.out.yaml b/internal/gatewayapi/resource/testdata/all-resources.out.yaml index 162b782ab2..7cd4d0c4be 100644 --- a/internal/gatewayapi/resource/testdata/all-resources.out.yaml +++ b/internal/gatewayapi/resource/testdata/all-resources.out.yaml @@ -358,3 +358,25 @@ udpRoutes: weight: 1 status: parents: null +secrets: +- kind: Secret + metadata: + creationTimestamp: null + name: secret + namespace: default + data: + .secret-file: dmFsdWUtMg0KDQo= + stringData: + secret: "literal value" +configMaps: +- kind: ConfigMap + metadata: + creationTimestamp: null + name: configmap + namespace: default + data: + player_initial_lives: "3" + game.properties: | + enemy.types=aliens,monsters + player.maximum-lives=5 + \ No newline at end of file From f570815ebf15ed743fece9d14757db8e88564196 Mon Sep 17 00:00:00 2001 From: Balazs Stasz Date: Sat, 22 Feb 2025 15:51:48 +0100 Subject: [PATCH 2/5] Updated release notes Signed-off-by: Balazs Stasz --- release-notes/current.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/release-notes/current.yaml b/release-notes/current.yaml index 660061be80..26ad3a13f0 100644 --- a/release-notes/current.yaml +++ b/release-notes/current.yaml @@ -16,6 +16,7 @@ new features: | Added support for defining Lua EnvoyExtensionPolicies bug fixes: | + Added support for Secret and ConfigMap parsing in Standalone mode. # Enhancements that improve performance. performance improvements: | From 8676f0c476d4d344a26c5428dbc9114bc9679db1 Mon Sep 17 00:00:00 2001 From: Balazs Stasz Date: Sat, 22 Feb 2025 18:42:34 +0100 Subject: [PATCH 3/5] Fixed lint issues Signed-off-by: Balazs Stasz --- internal/gatewayapi/resource/load.go | 2 +- internal/gatewayapi/resource/testdata/all-resources.in.yaml | 1 - internal/gatewayapi/resource/testdata/all-resources.out.yaml | 1 - release-notes/current.yaml | 2 +- 4 files changed, 2 insertions(+), 4 deletions(-) diff --git a/internal/gatewayapi/resource/load.go b/internal/gatewayapi/resource/load.go index 24f61d1e5c..e3357b0b27 100644 --- a/internal/gatewayapi/resource/load.go +++ b/internal/gatewayapi/resource/load.go @@ -324,7 +324,7 @@ func loadKubernetesYAMLToResources(input []byte, addMissingResources bool) (*Res Name: name, Namespace: namespace, }, - Data: typedData.(map[string][]byte), + Data: typedData.(map[string][]byte), StringData: typedStringData.(map[string]string), } resources.Secrets = append(resources.Secrets, secret) diff --git a/internal/gatewayapi/resource/testdata/all-resources.in.yaml b/internal/gatewayapi/resource/testdata/all-resources.in.yaml index 910e7b25f8..002a5ceb1c 100644 --- a/internal/gatewayapi/resource/testdata/all-resources.in.yaml +++ b/internal/gatewayapi/resource/testdata/all-resources.in.yaml @@ -250,4 +250,3 @@ data: game.properties: | enemy.types=aliens,monsters player.maximum-lives=5 - \ No newline at end of file diff --git a/internal/gatewayapi/resource/testdata/all-resources.out.yaml b/internal/gatewayapi/resource/testdata/all-resources.out.yaml index 7cd4d0c4be..1fe4d65f43 100644 --- a/internal/gatewayapi/resource/testdata/all-resources.out.yaml +++ b/internal/gatewayapi/resource/testdata/all-resources.out.yaml @@ -379,4 +379,3 @@ configMaps: game.properties: | enemy.types=aliens,monsters player.maximum-lives=5 - \ No newline at end of file diff --git a/release-notes/current.yaml b/release-notes/current.yaml index b158ec2f15..a9c96f6af7 100644 --- a/release-notes/current.yaml +++ b/release-notes/current.yaml @@ -18,7 +18,7 @@ new features: | Added support for HorizontalPodAutoscaler to helm chart bug fixes: | - Added support for Secret and ConfigMap parsing in Standalone mode. + Added support for Secret and ConfigMap parsing in Standalone mode. # Enhancements that improve performance. performance improvements: | From 09b46ee92407b2575b3338dfb2663f45311775b1 Mon Sep 17 00:00:00 2001 From: Balazs Stasz Date: Sat, 22 Feb 2025 18:55:39 +0100 Subject: [PATCH 4/5] Fixed gen-check issues Signed-off-by: Balazs Stasz --- .../resource/testdata/all-resources.out.yaml | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/internal/gatewayapi/resource/testdata/all-resources.out.yaml b/internal/gatewayapi/resource/testdata/all-resources.out.yaml index 1fe4d65f43..201a6b1f0c 100644 --- a/internal/gatewayapi/resource/testdata/all-resources.out.yaml +++ b/internal/gatewayapi/resource/testdata/all-resources.out.yaml @@ -71,6 +71,17 @@ clientTrafficPolicies: requestReceivedTimeout: 50ms status: ancestors: null +configMaps: +- data: + game.properties: | + enemy.types=aliens,monsters + player.maximum-lives=5 + player_initial_lives: "3" + kind: ConfigMap + metadata: + creationTimestamp: null + name: configmap + namespace: default envoyPatchPolicies: - kind: EnvoyPatchPolicy metadata: @@ -234,6 +245,16 @@ namespaces: name: gateway-conformance-infra spec: {} status: {} +secrets: +- data: + .secret-file: dmFsdWUtMg0KDQo= + kind: Secret + metadata: + creationTimestamp: null + name: secret + namespace: default + stringData: + secret: literal value securityPolicies: - kind: SecurityPolicy metadata: @@ -358,24 +379,3 @@ udpRoutes: weight: 1 status: parents: null -secrets: -- kind: Secret - metadata: - creationTimestamp: null - name: secret - namespace: default - data: - .secret-file: dmFsdWUtMg0KDQo= - stringData: - secret: "literal value" -configMaps: -- kind: ConfigMap - metadata: - creationTimestamp: null - name: configmap - namespace: default - data: - player_initial_lives: "3" - game.properties: | - enemy.types=aliens,monsters - player.maximum-lives=5 From c9dff92c8bf4e484c3907d6d7269edf86db65adb Mon Sep 17 00:00:00 2001 From: Balazs Stasz Date: Tue, 25 Feb 2025 20:30:06 +0100 Subject: [PATCH 5/5] Added new test cases for Secret Signed-off-by: Balazs Stasz --- .../resource/testdata/all-resources.in.yaml | 18 +++++++++++++++++- .../resource/testdata/all-resources.out.yaml | 16 +++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/internal/gatewayapi/resource/testdata/all-resources.in.yaml b/internal/gatewayapi/resource/testdata/all-resources.in.yaml index 002a5ceb1c..6bb5994374 100644 --- a/internal/gatewayapi/resource/testdata/all-resources.in.yaml +++ b/internal/gatewayapi/resource/testdata/all-resources.in.yaml @@ -233,7 +233,7 @@ spec: apiVersion: v1 kind: Secret metadata: - name: secret + name: secret-with-data-and-string-data namespace: default data: .secret-file: dmFsdWUtMg0KDQo= @@ -241,6 +241,22 @@ stringData: secret: "literal value" --- apiVersion: v1 +kind: Secret +metadata: + name: secret-with-data + namespace: default +data: + .secret-file: dmFsdWUtMg0KDQo= +--- +apiVersion: v1 +kind: Secret +metadata: + name: secret-with-string-data + namespace: default +stringData: + secret: "literal value" +--- +apiVersion: v1 kind: ConfigMap metadata: name: configmap diff --git a/internal/gatewayapi/resource/testdata/all-resources.out.yaml b/internal/gatewayapi/resource/testdata/all-resources.out.yaml index 201a6b1f0c..00f0bf210c 100644 --- a/internal/gatewayapi/resource/testdata/all-resources.out.yaml +++ b/internal/gatewayapi/resource/testdata/all-resources.out.yaml @@ -251,7 +251,21 @@ secrets: kind: Secret metadata: creationTimestamp: null - name: secret + name: secret-with-data-and-string-data + namespace: default + stringData: + secret: literal value +- data: + .secret-file: dmFsdWUtMg0KDQo= + kind: Secret + metadata: + creationTimestamp: null + name: secret-with-data + namespace: default +- kind: Secret + metadata: + creationTimestamp: null + name: secret-with-string-data namespace: default stringData: secret: literal value