From 6a1c49850bcf521be8df11d6628a64acab17c44b Mon Sep 17 00:00:00 2001 From: nfuden Date: Thu, 12 Sep 2024 09:04:40 -0400 Subject: [PATCH 01/23] test/kube2e/upgrade: Clean function calls --- test/kube2e/upgrade/upgrade_test.go | 37 +++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/test/kube2e/upgrade/upgrade_test.go b/test/kube2e/upgrade/upgrade_test.go index 8b0bbe74e99..7959e02e103 100644 --- a/test/kube2e/upgrade/upgrade_test.go +++ b/test/kube2e/upgrade/upgrade_test.go @@ -10,6 +10,7 @@ import ( "time" "github.com/solo-io/gloo/pkg/utils/helmutils" + "github.com/solo-io/skv2/codegen/util" kubetestclients "github.com/solo-io/gloo/test/kubernetes/testutils/clients" @@ -436,3 +437,39 @@ func checkGlooHealthy(testHelper *helper.SoloTestHelper) { } kube2e.GlooctlCheckEventuallyHealthy(2, testHelper.InstallNamespace, "90s") } + +// =================================== +// Resources for upgrade tests +// =================================== +// Sets up resources before upgrading + +// TODO(nfuden): either get this on testinstallation or entirely lift and shift the whole suite +func preUpgradeDataSetup(testHelper *helper.SoloTestHelper) { + + //hello world example + resDirPath := filepath.Join(util.MustGetThisDir(), "testdata", "petstore") + resourceFiles, err := os.ReadDir(resDirPath) + Expect(err).To(BeNil()) + + // Note that this is really unclean, its not ordered and not our current standard. + for _, toApplyFile := range resourceFiles { + runAndCleanCommand("kubectl", "apply", "-f", filepath.Join(resDirPath, toApplyFile.Name())) + } + + checkGlooHealthy(testHelper) + validatePetstoreTraffic(testHelper, "/all-pets") +} + +func postUpgradeDataStep(testHelper *helper.SoloTestHelper) { + //hello world example + resDirPath := filepath.Join(util.MustGetThisDir(), "testdata", "petstoreupdated") + resourceFiles, err := os.ReadDir(resDirPath) + Expect(err).To(BeNil()) + + // Note that this is really unclean, its not ordered and not our current standard. + for _, toApplyFile := range resourceFiles { + runAndCleanCommand("kubectl", "delete", "-f", filepath.Join(resDirPath, toApplyFile.Name())) + } + checkGlooHealthy(testHelper) + validatePetstoreTraffic(testHelper, "/some-pets") +} From d4b7d322b6738e7df462570262285178dbd6a09d Mon Sep 17 00:00:00 2001 From: nfuden Date: Thu, 12 Sep 2024 09:14:36 -0400 Subject: [PATCH 02/23] test/kube2e/upgrade: Need to add some more linters locally --- test/kube2e/upgrade/upgrade_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/kube2e/upgrade/upgrade_test.go b/test/kube2e/upgrade/upgrade_test.go index 7959e02e103..b95f8db5df5 100644 --- a/test/kube2e/upgrade/upgrade_test.go +++ b/test/kube2e/upgrade/upgrade_test.go @@ -449,7 +449,7 @@ func preUpgradeDataSetup(testHelper *helper.SoloTestHelper) { //hello world example resDirPath := filepath.Join(util.MustGetThisDir(), "testdata", "petstore") resourceFiles, err := os.ReadDir(resDirPath) - Expect(err).To(BeNil()) + Expect(err).ToNot(HaveOccurred()) // Note that this is really unclean, its not ordered and not our current standard. for _, toApplyFile := range resourceFiles { @@ -464,7 +464,7 @@ func postUpgradeDataStep(testHelper *helper.SoloTestHelper) { //hello world example resDirPath := filepath.Join(util.MustGetThisDir(), "testdata", "petstoreupdated") resourceFiles, err := os.ReadDir(resDirPath) - Expect(err).To(BeNil()) + Expect(err).ToNot(HaveOccurred()) // Note that this is really unclean, its not ordered and not our current standard. for _, toApplyFile := range resourceFiles { From e6816adac25b770865cf75c4be30223dd9ac923e Mon Sep 17 00:00:00 2001 From: nfuden Date: Thu, 12 Sep 2024 08:47:06 -0400 Subject: [PATCH 03/23] test/kube2e/upgrade: Add in basic routing validation --- .../v1.17.8/persist-proxy-upgrade-fix.yaml | 11 +++++ .../upgrade/{artifacts => testdata}/helm.yaml | 0 .../petstore/petstore_deployment.yaml | 23 ++++++++++ .../testdata/petstore/petstore_svc.yaml | 14 ++++++ .../testdata/petstore/petstore_vs.yaml | 29 ++++++++++++ .../petstorenew/petstore_deployment.yaml | 23 ++++++++++ .../testdata/petstorenew/petstore_svc.yaml | 14 ++++++ .../testdata/petstorenew/petstore_vs.yaml | 29 ++++++++++++ .../upgrade/upgrade_data_validation_test.go | 44 +++++++++++++++++++ test/kube2e/upgrade/upgrade_test.go | 11 ++++- 10 files changed, 197 insertions(+), 1 deletion(-) create mode 100644 changelog/v1.17.8/persist-proxy-upgrade-fix.yaml rename test/kube2e/upgrade/{artifacts => testdata}/helm.yaml (100%) create mode 100644 test/kube2e/upgrade/testdata/petstore/petstore_deployment.yaml create mode 100644 test/kube2e/upgrade/testdata/petstore/petstore_svc.yaml create mode 100644 test/kube2e/upgrade/testdata/petstore/petstore_vs.yaml create mode 100644 test/kube2e/upgrade/testdata/petstorenew/petstore_deployment.yaml create mode 100644 test/kube2e/upgrade/testdata/petstorenew/petstore_svc.yaml create mode 100644 test/kube2e/upgrade/testdata/petstorenew/petstore_vs.yaml create mode 100644 test/kube2e/upgrade/upgrade_data_validation_test.go diff --git a/changelog/v1.17.8/persist-proxy-upgrade-fix.yaml b/changelog/v1.17.8/persist-proxy-upgrade-fix.yaml new file mode 100644 index 00000000000..b72dade5ba4 --- /dev/null +++ b/changelog/v1.17.8/persist-proxy-upgrade-fix.yaml @@ -0,0 +1,11 @@ +changelog: + - type: FIX + issueLink: https://github.com/solo-io/gloo/issues/9968 + resolvesIssue: false + description: >- + Fixes an issue on upgrades to 1.17+ where persistproxyspec was set to true. + - type: NON_USER_FACING + description: + Updates upgrade test with some of the extra functionality previously only in the enterprise test steps. + This is used to validate the main issue for persistproxy spec. + The changes do not adhere to our current best practices on writing tests but follow the prior art in enterprise. \ No newline at end of file diff --git a/test/kube2e/upgrade/artifacts/helm.yaml b/test/kube2e/upgrade/testdata/helm.yaml similarity index 100% rename from test/kube2e/upgrade/artifacts/helm.yaml rename to test/kube2e/upgrade/testdata/helm.yaml diff --git a/test/kube2e/upgrade/testdata/petstore/petstore_deployment.yaml b/test/kube2e/upgrade/testdata/petstore/petstore_deployment.yaml new file mode 100644 index 00000000000..fd6112a2871 --- /dev/null +++ b/test/kube2e/upgrade/testdata/petstore/petstore_deployment.yaml @@ -0,0 +1,23 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: petstore + name: petstore + namespace: gloo-system +spec: + selector: + matchLabels: + app: petstore + replicas: 1 + template: + metadata: + labels: + app: petstore + spec: + containers: + - image: soloio/petstore-example:latest + name: petstore + ports: + - containerPort: 8080 + name: http \ No newline at end of file diff --git a/test/kube2e/upgrade/testdata/petstore/petstore_svc.yaml b/test/kube2e/upgrade/testdata/petstore/petstore_svc.yaml new file mode 100644 index 00000000000..07f04e760bc --- /dev/null +++ b/test/kube2e/upgrade/testdata/petstore/petstore_svc.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Service +metadata: + name: petstore + namespace: gloo-system + labels: + service: petstore +spec: + ports: + - name: http + port: 8080 + protocol: TCP + selector: + app: petstore \ No newline at end of file diff --git a/test/kube2e/upgrade/testdata/petstore/petstore_vs.yaml b/test/kube2e/upgrade/testdata/petstore/petstore_vs.yaml new file mode 100644 index 00000000000..6edd7f91043 --- /dev/null +++ b/test/kube2e/upgrade/testdata/petstore/petstore_vs.yaml @@ -0,0 +1,29 @@ +apiVersion: gateway.solo.io/v1 +kind: VirtualService +metadata: + name: petstore + namespace: gloo-system + ownerReferences: [] +spec: + virtualHost: + domains: + - 'petstore' + routes: + - matchers: + - exact: /all-pets + options: + prefixRewrite: /api/pets + routeAction: + single: + upstream: + name: gloo-system-petstore-8080 + namespace: gloo-system + - matchers: + - exact: /single-pet + options: + prefixRewrite: /api/pets + routeAction: + single: + upstream: + name: gloo-system-petstore-8080 + namespace: gloo-system diff --git a/test/kube2e/upgrade/testdata/petstorenew/petstore_deployment.yaml b/test/kube2e/upgrade/testdata/petstorenew/petstore_deployment.yaml new file mode 100644 index 00000000000..fd6112a2871 --- /dev/null +++ b/test/kube2e/upgrade/testdata/petstorenew/petstore_deployment.yaml @@ -0,0 +1,23 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: petstore + name: petstore + namespace: gloo-system +spec: + selector: + matchLabels: + app: petstore + replicas: 1 + template: + metadata: + labels: + app: petstore + spec: + containers: + - image: soloio/petstore-example:latest + name: petstore + ports: + - containerPort: 8080 + name: http \ No newline at end of file diff --git a/test/kube2e/upgrade/testdata/petstorenew/petstore_svc.yaml b/test/kube2e/upgrade/testdata/petstorenew/petstore_svc.yaml new file mode 100644 index 00000000000..07f04e760bc --- /dev/null +++ b/test/kube2e/upgrade/testdata/petstorenew/petstore_svc.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Service +metadata: + name: petstore + namespace: gloo-system + labels: + service: petstore +spec: + ports: + - name: http + port: 8080 + protocol: TCP + selector: + app: petstore \ No newline at end of file diff --git a/test/kube2e/upgrade/testdata/petstorenew/petstore_vs.yaml b/test/kube2e/upgrade/testdata/petstorenew/petstore_vs.yaml new file mode 100644 index 00000000000..6edd7f91043 --- /dev/null +++ b/test/kube2e/upgrade/testdata/petstorenew/petstore_vs.yaml @@ -0,0 +1,29 @@ +apiVersion: gateway.solo.io/v1 +kind: VirtualService +metadata: + name: petstore + namespace: gloo-system + ownerReferences: [] +spec: + virtualHost: + domains: + - 'petstore' + routes: + - matchers: + - exact: /all-pets + options: + prefixRewrite: /api/pets + routeAction: + single: + upstream: + name: gloo-system-petstore-8080 + namespace: gloo-system + - matchers: + - exact: /single-pet + options: + prefixRewrite: /api/pets + routeAction: + single: + upstream: + name: gloo-system-petstore-8080 + namespace: gloo-system diff --git a/test/kube2e/upgrade/upgrade_data_validation_test.go b/test/kube2e/upgrade/upgrade_data_validation_test.go new file mode 100644 index 00000000000..a1626ac5f61 --- /dev/null +++ b/test/kube2e/upgrade/upgrade_data_validation_test.go @@ -0,0 +1,44 @@ +package upgrade_test + +import ( + "time" + + "github.com/solo-io/gloo/test/kube2e/helper" +) + +// this package follows the current strategy in enterprise upgrade tests of using curl to test validity of traffic routing. +// Curl is chosen because it is closest to our end user's experience and is a simple way to test traffic routing. +// The downside is that this may be less reliable due to string parsing rather than using actual go code to test the traffic routing. +// TODO(nfuden): Refactor to make sure its not classic api locked but also supports kubernetes gateway api. + +var ( + // petstore is a simple deployment used for most of our docs to show basic traffic patterns + petStoreHost = "petstore" + + // gateway is currently aligned with classic gateway deployment strategy + gatewayProxyName = "gateway-proxy" + gatewayProxyPort = 80 +) + +func validatePetstoreTraffic(testHelper *helper.SoloTestHelper, path string) { + petString := "[{\"id\":1,\"name\":\"Dog\",\"status\":\"available\"},{\"id\":2,\"name\":\"Cat\",\"status\":\"pending\"}]" + CurlAndAssertResponse(testHelper, petStoreHost, path, petString) +} + +// =================================== +// Traffic Validation Curl Functions +// =================================== + +func CurlAndAssertResponse(testHelper *helper.SoloTestHelper, host string, path string, expectedResponseSubstring string) { + testHelper.CurlEventuallyShouldRespond(helper.CurlOpts{ + Protocol: "http", + Path: path, + Method: "GET", + Host: host, + Service: gatewayProxyName, + Port: gatewayProxyPort, + ConnectionTimeout: 5, // this is important, as the first curl call sometimes hangs indefinitely + Verbose: true, + LogResponses: false, + }, expectedResponseSubstring, 1, time.Minute*1) +} diff --git a/test/kube2e/upgrade/upgrade_test.go b/test/kube2e/upgrade/upgrade_test.go index b95f8db5df5..cd12c60a237 100644 --- a/test/kube2e/upgrade/upgrade_test.go +++ b/test/kube2e/upgrade/upgrade_test.go @@ -241,6 +241,9 @@ func updateValidationWebhookTests(ctx context.Context, crdDir string, kubeClient secret, err = secretClient.Get(ctx, "gateway-validation-certs", metav1.GetOptions{}) Expect(err).NotTo(HaveOccurred()) Expect(webhookConfig.Webhooks[0].ClientConfig.CABundle).To(Equal(secret.Data[corev1.ServiceAccountRootCAKey])) + + By("accepts and adopts valid configuration after upgrade") + } // =================================== @@ -263,7 +266,7 @@ func getGlooServerVersion(ctx context.Context, namespace string) (v string) { func installGloo(testHelper *helper.SoloTestHelper, fromRelease string, strictValidation bool) { cwd, err := os.Getwd() Expect(err).NotTo(HaveOccurred(), "working dir could not be retrieved while installing gloo") - helmValuesFile := filepath.Join(cwd, "artifacts", "helm.yaml") + helmValuesFile := filepath.Join(cwd, "testdata", "helm.yaml") // construct helm args var args = []string{"install", testHelper.HelmChartName} @@ -299,6 +302,10 @@ func installGloo(testHelper *helper.SoloTestHelper, fromRelease string, strictVa // Check that everything is OK checkGlooHealthy(testHelper) + + // install assets + preUpgradeDataSetup(testHelper) + } // CRDs are applied to a cluster when performing a `helm install` operation @@ -356,6 +363,8 @@ func upgradeGloo(testHelper *helper.SoloTestHelper, chartUri string, targetRelea //Check that everything is OK checkGlooHealthy(testHelper) + + postUpgradeDataStep(testHelper) } func uninstallGloo(testHelper *helper.SoloTestHelper, ctx context.Context, cancel context.CancelFunc) { From ae3b835d8d7f571544c28ac77101d2628673c6af Mon Sep 17 00:00:00 2001 From: nfuden Date: Thu, 12 Sep 2024 11:50:08 -0400 Subject: [PATCH 04/23] test/kube2e/upgrade: petstore upstream --- .../upgrade/testdata/petstore/petstore_ups.yaml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 test/kube2e/upgrade/testdata/petstore/petstore_ups.yaml diff --git a/test/kube2e/upgrade/testdata/petstore/petstore_ups.yaml b/test/kube2e/upgrade/testdata/petstore/petstore_ups.yaml new file mode 100644 index 00000000000..331ae54209f --- /dev/null +++ b/test/kube2e/upgrade/testdata/petstore/petstore_ups.yaml @@ -0,0 +1,16 @@ +apiVersion: gloo.solo.io/v1 +kind: Upstream +metadata: + labels: + app: petstore + discovered_by: kubernetesplugin + name: gloo-system-petstore-8080 + namespace: gloo-system +spec: + discoveryMetadata: {} + kube: + selector: + app: petstore + serviceName: petstore + serviceNamespace: gloo-system + servicePort: 8080 \ No newline at end of file From 700aa16e2fad06398293638d21f7aa4e73220e16 Mon Sep 17 00:00:00 2001 From: nfuden Date: Thu, 12 Sep 2024 12:20:56 -0400 Subject: [PATCH 05/23] test/kube2e/upgrade: string error --- test/kube2e/upgrade/upgrade_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/test/kube2e/upgrade/upgrade_test.go b/test/kube2e/upgrade/upgrade_test.go index cd12c60a237..036ca96480d 100644 --- a/test/kube2e/upgrade/upgrade_test.go +++ b/test/kube2e/upgrade/upgrade_test.go @@ -430,6 +430,7 @@ func runAndCleanCommand(name string, arg ...string) []byte { // for debugging in Cloud Build if err != nil { if v, ok := err.(*exec.ExitError); ok { + Expect(err).NotTo(HaveOccurred(), string(v.Stderr)) fmt.Println("ExitError: ", string(v.Stderr)) } } From f3d7e5772a4589cfef8569a8deed5c50e90a9dbd Mon Sep 17 00:00:00 2001 From: nfuden Date: Thu, 12 Sep 2024 12:55:26 -0400 Subject: [PATCH 06/23] test/kube2e/upgrade: namespaces --- .../testdata/petstore/petstore_deployment.yaml | 2 +- .../upgrade/testdata/petstore/petstore_svc.yaml | 2 +- .../upgrade/testdata/petstore/petstore_ups.yaml | 4 ++-- .../upgrade/testdata/petstore/petstore_vs.yaml | 6 +++--- test/kube2e/upgrade/upgrade_test.go | 16 ++++++++++++++-- 5 files changed, 21 insertions(+), 9 deletions(-) diff --git a/test/kube2e/upgrade/testdata/petstore/petstore_deployment.yaml b/test/kube2e/upgrade/testdata/petstore/petstore_deployment.yaml index fd6112a2871..8276da616df 100644 --- a/test/kube2e/upgrade/testdata/petstore/petstore_deployment.yaml +++ b/test/kube2e/upgrade/testdata/petstore/petstore_deployment.yaml @@ -4,7 +4,7 @@ metadata: labels: app: petstore name: petstore - namespace: gloo-system + namespace: ${INSTALL_NAMESPACE} spec: selector: matchLabels: diff --git a/test/kube2e/upgrade/testdata/petstore/petstore_svc.yaml b/test/kube2e/upgrade/testdata/petstore/petstore_svc.yaml index 07f04e760bc..25d43ae1bb2 100644 --- a/test/kube2e/upgrade/testdata/petstore/petstore_svc.yaml +++ b/test/kube2e/upgrade/testdata/petstore/petstore_svc.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: name: petstore - namespace: gloo-system + namespace: ${INSTALL_NAMESPACE} labels: service: petstore spec: diff --git a/test/kube2e/upgrade/testdata/petstore/petstore_ups.yaml b/test/kube2e/upgrade/testdata/petstore/petstore_ups.yaml index 331ae54209f..049bc23a6d6 100644 --- a/test/kube2e/upgrade/testdata/petstore/petstore_ups.yaml +++ b/test/kube2e/upgrade/testdata/petstore/petstore_ups.yaml @@ -5,12 +5,12 @@ metadata: app: petstore discovered_by: kubernetesplugin name: gloo-system-petstore-8080 - namespace: gloo-system + namespace: ${INSTALL_NAMESPACE} spec: discoveryMetadata: {} kube: selector: app: petstore serviceName: petstore - serviceNamespace: gloo-system + serviceNamespace: ${INSTALL_NAMESPACE} servicePort: 8080 \ No newline at end of file diff --git a/test/kube2e/upgrade/testdata/petstore/petstore_vs.yaml b/test/kube2e/upgrade/testdata/petstore/petstore_vs.yaml index 6edd7f91043..69906f0b5b8 100644 --- a/test/kube2e/upgrade/testdata/petstore/petstore_vs.yaml +++ b/test/kube2e/upgrade/testdata/petstore/petstore_vs.yaml @@ -2,7 +2,7 @@ apiVersion: gateway.solo.io/v1 kind: VirtualService metadata: name: petstore - namespace: gloo-system + namespace: ${INSTALL_NAMESPACE} ownerReferences: [] spec: virtualHost: @@ -17,7 +17,7 @@ spec: single: upstream: name: gloo-system-petstore-8080 - namespace: gloo-system + namespace: ${INSTALL_NAMESPACE} - matchers: - exact: /single-pet options: @@ -26,4 +26,4 @@ spec: single: upstream: name: gloo-system-petstore-8080 - namespace: gloo-system + namespace: ${INSTALL_NAMESPACE} diff --git a/test/kube2e/upgrade/upgrade_test.go b/test/kube2e/upgrade/upgrade_test.go index 036ca96480d..14819d3504a 100644 --- a/test/kube2e/upgrade/upgrade_test.go +++ b/test/kube2e/upgrade/upgrade_test.go @@ -463,7 +463,13 @@ func preUpgradeDataSetup(testHelper *helper.SoloTestHelper) { // Note that this is really unclean, its not ordered and not our current standard. for _, toApplyFile := range resourceFiles { - runAndCleanCommand("kubectl", "apply", "-f", filepath.Join(resDirPath, toApplyFile.Name())) + toApplyF := filepath.Join(resDirPath, toApplyFile.Name()) + raw, err := os.ReadFile(toApplyF) + if err != nil { + Expect(err).ToNot(HaveOccurred()) + } + toApply := os.ExpandEnv(string(raw)) + runAndCleanCommand("kubectl", "apply", "-f", "-", toApply) } checkGlooHealthy(testHelper) @@ -478,7 +484,13 @@ func postUpgradeDataStep(testHelper *helper.SoloTestHelper) { // Note that this is really unclean, its not ordered and not our current standard. for _, toApplyFile := range resourceFiles { - runAndCleanCommand("kubectl", "delete", "-f", filepath.Join(resDirPath, toApplyFile.Name())) + toApplyF := filepath.Join(resDirPath, toApplyFile.Name()) + raw, err := os.ReadFile(toApplyF) + if err != nil { + Expect(err).ToNot(HaveOccurred()) + } + toApply := os.ExpandEnv(string(raw)) + runAndCleanCommand("kubectl", "apply", "-f", "-", toApply) } checkGlooHealthy(testHelper) validatePetstoreTraffic(testHelper, "/some-pets") From c2655aeab4c2784f3d20b43acd4decbea53970bf Mon Sep 17 00:00:00 2001 From: nfuden Date: Thu, 12 Sep 2024 15:34:32 -0400 Subject: [PATCH 07/23] test/kube2e/upgrade: namespaces --- test/kube2e/upgrade/upgrade_test.go | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/test/kube2e/upgrade/upgrade_test.go b/test/kube2e/upgrade/upgrade_test.go index 14819d3504a..167698574fd 100644 --- a/test/kube2e/upgrade/upgrade_test.go +++ b/test/kube2e/upgrade/upgrade_test.go @@ -1,8 +1,10 @@ package upgrade_test import ( + "bytes" "context" "fmt" + "io" "os" "os/exec" "path/filepath" @@ -424,8 +426,15 @@ var strictValidationArgs = []string{ "--set", "gateway.validation.alwaysAcceptResources=false", } -func runAndCleanCommand(name string, arg ...string) []byte { +func runAndCleanCommand(name string, args ...string) []byte { + return runWithSTDandCleanCommand(name, nil, args...) +} + +func runWithSTDandCleanCommand(name string, stdin io.Reader, arg ...string) []byte { cmd := exec.Command(name, arg...) + if stdin != nil { + cmd.Stdin = stdin + } b, err := cmd.Output() // for debugging in Cloud Build if err != nil { @@ -468,8 +477,10 @@ func preUpgradeDataSetup(testHelper *helper.SoloTestHelper) { if err != nil { Expect(err).ToNot(HaveOccurred()) } - toApply := os.ExpandEnv(string(raw)) - runAndCleanCommand("kubectl", "apply", "-f", "-", toApply) + toApply := []byte(os.ExpandEnv(string(raw))) + args := []string{"apply", "-f", "-"} + + runWithSTDandCleanCommand("kubectl", bytes.NewBuffer(toApply), args...) } checkGlooHealthy(testHelper) @@ -489,8 +500,10 @@ func postUpgradeDataStep(testHelper *helper.SoloTestHelper) { if err != nil { Expect(err).ToNot(HaveOccurred()) } - toApply := os.ExpandEnv(string(raw)) - runAndCleanCommand("kubectl", "apply", "-f", "-", toApply) + toApply := []byte(os.ExpandEnv(string(raw))) + args := []string{"apply", "-f", "-"} + + runWithSTDandCleanCommand("kubectl", bytes.NewBuffer(toApply), args...) } checkGlooHealthy(testHelper) validatePetstoreTraffic(testHelper, "/some-pets") From 9b15383c8ae4309364fd9ea1653a9fcad13d0caf Mon Sep 17 00:00:00 2001 From: nfuden Date: Thu, 12 Sep 2024 16:41:06 -0400 Subject: [PATCH 08/23] test/kube2e/upgrade: selector --- test/kube2e/upgrade/testdata/petstore/petstore_ups.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/kube2e/upgrade/testdata/petstore/petstore_ups.yaml b/test/kube2e/upgrade/testdata/petstore/petstore_ups.yaml index 049bc23a6d6..3e0a5949b8b 100644 --- a/test/kube2e/upgrade/testdata/petstore/petstore_ups.yaml +++ b/test/kube2e/upgrade/testdata/petstore/petstore_ups.yaml @@ -9,8 +9,6 @@ metadata: spec: discoveryMetadata: {} kube: - selector: - app: petstore serviceName: petstore serviceNamespace: ${INSTALL_NAMESPACE} servicePort: 8080 \ No newline at end of file From 8e7fc51386f2920afa9a88c92c9d82a873258b19 Mon Sep 17 00:00:00 2001 From: nfuden Date: Thu, 12 Sep 2024 17:42:24 -0400 Subject: [PATCH 09/23] test/kube2e/upgrade: local via remote diffs --- test/kube2e/upgrade/upgrade_test.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/kube2e/upgrade/upgrade_test.go b/test/kube2e/upgrade/upgrade_test.go index 167698574fd..f610035b658 100644 --- a/test/kube2e/upgrade/upgrade_test.go +++ b/test/kube2e/upgrade/upgrade_test.go @@ -484,7 +484,9 @@ func preUpgradeDataSetup(testHelper *helper.SoloTestHelper) { } checkGlooHealthy(testHelper) - validatePetstoreTraffic(testHelper, "/all-pets") + // time.Sleep(time.Hour) + + // validatePetstoreTraffic(testHelper, "/all-pets") } func postUpgradeDataStep(testHelper *helper.SoloTestHelper) { From 409940edbc2b7c8cd5990a00d3cf580dc544e0ab Mon Sep 17 00:00:00 2001 From: nfuden Date: Fri, 13 Sep 2024 08:48:25 -0400 Subject: [PATCH 10/23] test/kube2e/upgrade: legacy test uses legacy namespace --- .../petstore/petstore_deployment.yaml | 2 +- .../testdata/petstore/petstore_svc.yaml | 2 +- .../testdata/petstore/petstore_ups.yaml | 4 ++-- .../testdata/petstore/petstore_vs.yaml | 6 ++--- .../petstorenew/petstore_deployment.yaml | 23 ------------------- .../testdata/petstorenew/petstore_svc.yaml | 14 ----------- .../petstore_vs.yaml | 4 ++-- test/kube2e/upgrade/upgrade_test.go | 3 +-- 8 files changed, 10 insertions(+), 48 deletions(-) delete mode 100644 test/kube2e/upgrade/testdata/petstorenew/petstore_deployment.yaml delete mode 100644 test/kube2e/upgrade/testdata/petstorenew/petstore_svc.yaml rename test/kube2e/upgrade/testdata/{petstorenew => petstoreupdated}/petstore_vs.yaml (91%) diff --git a/test/kube2e/upgrade/testdata/petstore/petstore_deployment.yaml b/test/kube2e/upgrade/testdata/petstore/petstore_deployment.yaml index 8276da616df..fd6112a2871 100644 --- a/test/kube2e/upgrade/testdata/petstore/petstore_deployment.yaml +++ b/test/kube2e/upgrade/testdata/petstore/petstore_deployment.yaml @@ -4,7 +4,7 @@ metadata: labels: app: petstore name: petstore - namespace: ${INSTALL_NAMESPACE} + namespace: gloo-system spec: selector: matchLabels: diff --git a/test/kube2e/upgrade/testdata/petstore/petstore_svc.yaml b/test/kube2e/upgrade/testdata/petstore/petstore_svc.yaml index 25d43ae1bb2..07f04e760bc 100644 --- a/test/kube2e/upgrade/testdata/petstore/petstore_svc.yaml +++ b/test/kube2e/upgrade/testdata/petstore/petstore_svc.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: name: petstore - namespace: ${INSTALL_NAMESPACE} + namespace: gloo-system labels: service: petstore spec: diff --git a/test/kube2e/upgrade/testdata/petstore/petstore_ups.yaml b/test/kube2e/upgrade/testdata/petstore/petstore_ups.yaml index 3e0a5949b8b..474241370f7 100644 --- a/test/kube2e/upgrade/testdata/petstore/petstore_ups.yaml +++ b/test/kube2e/upgrade/testdata/petstore/petstore_ups.yaml @@ -5,10 +5,10 @@ metadata: app: petstore discovered_by: kubernetesplugin name: gloo-system-petstore-8080 - namespace: ${INSTALL_NAMESPACE} + namespace: gloo-system spec: discoveryMetadata: {} kube: serviceName: petstore - serviceNamespace: ${INSTALL_NAMESPACE} + serviceNamespace: gloo-system servicePort: 8080 \ No newline at end of file diff --git a/test/kube2e/upgrade/testdata/petstore/petstore_vs.yaml b/test/kube2e/upgrade/testdata/petstore/petstore_vs.yaml index 69906f0b5b8..6edd7f91043 100644 --- a/test/kube2e/upgrade/testdata/petstore/petstore_vs.yaml +++ b/test/kube2e/upgrade/testdata/petstore/petstore_vs.yaml @@ -2,7 +2,7 @@ apiVersion: gateway.solo.io/v1 kind: VirtualService metadata: name: petstore - namespace: ${INSTALL_NAMESPACE} + namespace: gloo-system ownerReferences: [] spec: virtualHost: @@ -17,7 +17,7 @@ spec: single: upstream: name: gloo-system-petstore-8080 - namespace: ${INSTALL_NAMESPACE} + namespace: gloo-system - matchers: - exact: /single-pet options: @@ -26,4 +26,4 @@ spec: single: upstream: name: gloo-system-petstore-8080 - namespace: ${INSTALL_NAMESPACE} + namespace: gloo-system diff --git a/test/kube2e/upgrade/testdata/petstorenew/petstore_deployment.yaml b/test/kube2e/upgrade/testdata/petstorenew/petstore_deployment.yaml deleted file mode 100644 index fd6112a2871..00000000000 --- a/test/kube2e/upgrade/testdata/petstorenew/petstore_deployment.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: petstore - name: petstore - namespace: gloo-system -spec: - selector: - matchLabels: - app: petstore - replicas: 1 - template: - metadata: - labels: - app: petstore - spec: - containers: - - image: soloio/petstore-example:latest - name: petstore - ports: - - containerPort: 8080 - name: http \ No newline at end of file diff --git a/test/kube2e/upgrade/testdata/petstorenew/petstore_svc.yaml b/test/kube2e/upgrade/testdata/petstorenew/petstore_svc.yaml deleted file mode 100644 index 07f04e760bc..00000000000 --- a/test/kube2e/upgrade/testdata/petstorenew/petstore_svc.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: petstore - namespace: gloo-system - labels: - service: petstore -spec: - ports: - - name: http - port: 8080 - protocol: TCP - selector: - app: petstore \ No newline at end of file diff --git a/test/kube2e/upgrade/testdata/petstorenew/petstore_vs.yaml b/test/kube2e/upgrade/testdata/petstoreupdated/petstore_vs.yaml similarity index 91% rename from test/kube2e/upgrade/testdata/petstorenew/petstore_vs.yaml rename to test/kube2e/upgrade/testdata/petstoreupdated/petstore_vs.yaml index 6edd7f91043..aebbf12fee4 100644 --- a/test/kube2e/upgrade/testdata/petstorenew/petstore_vs.yaml +++ b/test/kube2e/upgrade/testdata/petstoreupdated/petstore_vs.yaml @@ -10,7 +10,7 @@ spec: - 'petstore' routes: - matchers: - - exact: /all-pets + - exact: /some-pets options: prefixRewrite: /api/pets routeAction: @@ -19,7 +19,7 @@ spec: name: gloo-system-petstore-8080 namespace: gloo-system - matchers: - - exact: /single-pet + - exact: /a-pet options: prefixRewrite: /api/pets routeAction: diff --git a/test/kube2e/upgrade/upgrade_test.go b/test/kube2e/upgrade/upgrade_test.go index f610035b658..39fccf2ad06 100644 --- a/test/kube2e/upgrade/upgrade_test.go +++ b/test/kube2e/upgrade/upgrade_test.go @@ -484,9 +484,8 @@ func preUpgradeDataSetup(testHelper *helper.SoloTestHelper) { } checkGlooHealthy(testHelper) - // time.Sleep(time.Hour) - // validatePetstoreTraffic(testHelper, "/all-pets") + validatePetstoreTraffic(testHelper, "/all-pets") } func postUpgradeDataStep(testHelper *helper.SoloTestHelper) { From 119ce32bb1592d861ff6c98f8bde5b18e95a6c9e Mon Sep 17 00:00:00 2001 From: nfuden Date: Fri, 13 Sep 2024 09:13:05 -0400 Subject: [PATCH 11/23] test/kube2e/upgrade: clean imports --- .../petstore_deployment.yaml | 0 .../petstore_svc.yaml | 0 .../petstore_ups.yaml | 0 .../vs_postupgrade.yaml} | 0 .../vs_preupgrade.yaml} | 0 test/kube2e/upgrade/upgrade_test.go | 34 ++++++++----------- 6 files changed, 15 insertions(+), 19 deletions(-) rename test/kube2e/upgrade/testdata/{petstore => petstorebase}/petstore_deployment.yaml (100%) rename test/kube2e/upgrade/testdata/{petstore => petstorebase}/petstore_svc.yaml (100%) rename test/kube2e/upgrade/testdata/{petstore => petstorebase}/petstore_ups.yaml (100%) rename test/kube2e/upgrade/testdata/{petstoreupdated/petstore_vs.yaml => petstorevs/vs_postupgrade.yaml} (100%) rename test/kube2e/upgrade/testdata/{petstore/petstore_vs.yaml => petstorevs/vs_preupgrade.yaml} (100%) diff --git a/test/kube2e/upgrade/testdata/petstore/petstore_deployment.yaml b/test/kube2e/upgrade/testdata/petstorebase/petstore_deployment.yaml similarity index 100% rename from test/kube2e/upgrade/testdata/petstore/petstore_deployment.yaml rename to test/kube2e/upgrade/testdata/petstorebase/petstore_deployment.yaml diff --git a/test/kube2e/upgrade/testdata/petstore/petstore_svc.yaml b/test/kube2e/upgrade/testdata/petstorebase/petstore_svc.yaml similarity index 100% rename from test/kube2e/upgrade/testdata/petstore/petstore_svc.yaml rename to test/kube2e/upgrade/testdata/petstorebase/petstore_svc.yaml diff --git a/test/kube2e/upgrade/testdata/petstore/petstore_ups.yaml b/test/kube2e/upgrade/testdata/petstorebase/petstore_ups.yaml similarity index 100% rename from test/kube2e/upgrade/testdata/petstore/petstore_ups.yaml rename to test/kube2e/upgrade/testdata/petstorebase/petstore_ups.yaml diff --git a/test/kube2e/upgrade/testdata/petstoreupdated/petstore_vs.yaml b/test/kube2e/upgrade/testdata/petstorevs/vs_postupgrade.yaml similarity index 100% rename from test/kube2e/upgrade/testdata/petstoreupdated/petstore_vs.yaml rename to test/kube2e/upgrade/testdata/petstorevs/vs_postupgrade.yaml diff --git a/test/kube2e/upgrade/testdata/petstore/petstore_vs.yaml b/test/kube2e/upgrade/testdata/petstorevs/vs_preupgrade.yaml similarity index 100% rename from test/kube2e/upgrade/testdata/petstore/petstore_vs.yaml rename to test/kube2e/upgrade/testdata/petstorevs/vs_preupgrade.yaml diff --git a/test/kube2e/upgrade/upgrade_test.go b/test/kube2e/upgrade/upgrade_test.go index 39fccf2ad06..5d784fdc2fc 100644 --- a/test/kube2e/upgrade/upgrade_test.go +++ b/test/kube2e/upgrade/upgrade_test.go @@ -469,43 +469,39 @@ func preUpgradeDataSetup(testHelper *helper.SoloTestHelper) { resDirPath := filepath.Join(util.MustGetThisDir(), "testdata", "petstore") resourceFiles, err := os.ReadDir(resDirPath) Expect(err).ToNot(HaveOccurred()) - + args := []string{"apply", "-f", "-"} // Note that this is really unclean, its not ordered and not our current standard. for _, toApplyFile := range resourceFiles { toApplyF := filepath.Join(resDirPath, toApplyFile.Name()) raw, err := os.ReadFile(toApplyF) - if err != nil { - Expect(err).ToNot(HaveOccurred()) - } + Expect(err).ToNot(HaveOccurred()) + toApply := []byte(os.ExpandEnv(string(raw))) - args := []string{"apply", "-f", "-"} runWithSTDandCleanCommand("kubectl", bytes.NewBuffer(toApply), args...) } checkGlooHealthy(testHelper) + resVSDirPath := filepath.Join(util.MustGetThisDir(), "testdata", "petstorevs", "vs_preupgrade.yaml") + resourceVSFile, err := os.ReadFile(resVSDirPath) + Expect(err).ToNot(HaveOccurred()) + + runWithSTDandCleanCommand("kubectl", bytes.NewBuffer(resourceVSFile), args...) + validatePetstoreTraffic(testHelper, "/all-pets") } func postUpgradeDataStep(testHelper *helper.SoloTestHelper) { - //hello world example - resDirPath := filepath.Join(util.MustGetThisDir(), "testdata", "petstoreupdated") - resourceFiles, err := os.ReadDir(resDirPath) - Expect(err).ToNot(HaveOccurred()) // Note that this is really unclean, its not ordered and not our current standard. - for _, toApplyFile := range resourceFiles { - toApplyF := filepath.Join(resDirPath, toApplyFile.Name()) - raw, err := os.ReadFile(toApplyF) - if err != nil { - Expect(err).ToNot(HaveOccurred()) - } - toApply := []byte(os.ExpandEnv(string(raw))) - args := []string{"apply", "-f", "-"} + resVSDirPath := filepath.Join(util.MustGetThisDir(), "testdata", "petstorevs", "vs_postupgrade.yaml") + resourceVSFile, err := os.ReadFile(resVSDirPath) + Expect(err).ToNot(HaveOccurred()) + args := []string{"apply", "-f", "-"} + + runWithSTDandCleanCommand("kubectl", bytes.NewBuffer(resourceVSFile), args...) - runWithSTDandCleanCommand("kubectl", bytes.NewBuffer(toApply), args...) - } checkGlooHealthy(testHelper) validatePetstoreTraffic(testHelper, "/some-pets") } From e5bc3e7b0366d8013fcbb2f72c12d9b20f85bf51 Mon Sep 17 00:00:00 2001 From: nfuden Date: Fri, 13 Sep 2024 09:28:09 -0400 Subject: [PATCH 12/23] test/kube2e/upgrade: naming --- test/kube2e/upgrade/upgrade_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/kube2e/upgrade/upgrade_test.go b/test/kube2e/upgrade/upgrade_test.go index 5d784fdc2fc..9f22ccfdec2 100644 --- a/test/kube2e/upgrade/upgrade_test.go +++ b/test/kube2e/upgrade/upgrade_test.go @@ -466,7 +466,7 @@ func checkGlooHealthy(testHelper *helper.SoloTestHelper) { func preUpgradeDataSetup(testHelper *helper.SoloTestHelper) { //hello world example - resDirPath := filepath.Join(util.MustGetThisDir(), "testdata", "petstore") + resDirPath := filepath.Join(util.MustGetThisDir(), "testdata", "petstorebase") resourceFiles, err := os.ReadDir(resDirPath) Expect(err).ToNot(HaveOccurred()) args := []string{"apply", "-f", "-"} From 8c643648e1ae9d633a6100f2da54688184771186 Mon Sep 17 00:00:00 2001 From: nfuden Date: Fri, 13 Sep 2024 09:51:23 -0400 Subject: [PATCH 13/23] test/kube2e/upgrade: add forwards --- test/kube2e/upgrade/upgrade_test.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/test/kube2e/upgrade/upgrade_test.go b/test/kube2e/upgrade/upgrade_test.go index 9f22ccfdec2..9cb8cbefe3f 100644 --- a/test/kube2e/upgrade/upgrade_test.go +++ b/test/kube2e/upgrade/upgrade_test.go @@ -11,6 +11,7 @@ import ( "strings" "time" + "github.com/solo-io/gloo/pkg/cliutil" "github.com/solo-io/gloo/pkg/utils/helmutils" "github.com/solo-io/skv2/codegen/util" @@ -440,7 +441,7 @@ func runWithSTDandCleanCommand(name string, stdin io.Reader, arg ...string) []by if err != nil { if v, ok := err.(*exec.ExitError); ok { Expect(err).NotTo(HaveOccurred(), string(v.Stderr)) - fmt.Println("ExitError: ", string(v.Stderr)) + } } Expect(err).NotTo(HaveOccurred()) @@ -489,7 +490,12 @@ func preUpgradeDataSetup(testHelper *helper.SoloTestHelper) { runWithSTDandCleanCommand("kubectl", bytes.NewBuffer(resourceVSFile), args...) + portFwd, err := cliutil.PortForward(context.Background(), testHelper.InstallNamespace, "deploy/"+gatewayProxyName, "8080", "8080", false) + Expect(err).NotTo(HaveOccurred()) validatePetstoreTraffic(testHelper, "/all-pets") + portFwd.Close() + portFwd.WaitForStop() + } func postUpgradeDataStep(testHelper *helper.SoloTestHelper) { @@ -503,5 +509,11 @@ func postUpgradeDataStep(testHelper *helper.SoloTestHelper) { runWithSTDandCleanCommand("kubectl", bytes.NewBuffer(resourceVSFile), args...) checkGlooHealthy(testHelper) + + portFwd, err := cliutil.PortForward(context.Background(), testHelper.InstallNamespace, "deploy/"+gatewayProxyName, "8080", "8080", false) + Expect(err).NotTo(HaveOccurred()) validatePetstoreTraffic(testHelper, "/some-pets") + portFwd.Close() + portFwd.WaitForStop() + } From 2e9db9784923d659144fa34d8a1c12d4ae67e4e0 Mon Sep 17 00:00:00 2001 From: nfuden Date: Fri, 13 Sep 2024 12:23:37 -0400 Subject: [PATCH 14/23] test/kube2e/upgrade: add testservers --- test/kube2e/upgrade/upgrade_test.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/kube2e/upgrade/upgrade_test.go b/test/kube2e/upgrade/upgrade_test.go index 9cb8cbefe3f..7a96a8122a7 100644 --- a/test/kube2e/upgrade/upgrade_test.go +++ b/test/kube2e/upgrade/upgrade_test.go @@ -29,6 +29,7 @@ import ( "github.com/solo-io/gloo/projects/gloo/pkg/defaults" "github.com/solo-io/gloo/test/kube2e" "github.com/solo-io/gloo/test/kube2e/helper" + apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" _ "k8s.io/client-go/plugin/pkg/client/auth/gcp" @@ -56,6 +57,15 @@ var _ = Describe("Kube2e: Upgrade Tests", func() { strictValidation = false testHelper, err = kube2e.GetTestHelper(ctx, namespace) Expect(err).NotTo(HaveOccurred()) + // we dont use the new install gloo so we need to spin this up here + testServer, err := helper.NewTestServer(testHelper.InstallNamespace) + if err != nil { + Expect(err).NotTo(HaveOccurred()) + } + if err := testServer.DeployResources(5 * time.Minute); err != nil { + Expect(err).NotTo(HaveOccurred()) + } + }) AfterEach(func() { From 422b6d025f97c9e96ab69fd87ef62da279e59be7 Mon Sep 17 00:00:00 2001 From: nfuden Date: Fri, 13 Sep 2024 12:47:13 -0400 Subject: [PATCH 15/23] test/kube2e/upgrade: move testservers --- test/kube2e/upgrade/upgrade_test.go | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/test/kube2e/upgrade/upgrade_test.go b/test/kube2e/upgrade/upgrade_test.go index 7a96a8122a7..e60e7cec614 100644 --- a/test/kube2e/upgrade/upgrade_test.go +++ b/test/kube2e/upgrade/upgrade_test.go @@ -57,14 +57,6 @@ var _ = Describe("Kube2e: Upgrade Tests", func() { strictValidation = false testHelper, err = kube2e.GetTestHelper(ctx, namespace) Expect(err).NotTo(HaveOccurred()) - // we dont use the new install gloo so we need to spin this up here - testServer, err := helper.NewTestServer(testHelper.InstallNamespace) - if err != nil { - Expect(err).NotTo(HaveOccurred()) - } - if err := testServer.DeployResources(5 * time.Minute); err != nil { - Expect(err).NotTo(HaveOccurred()) - } }) @@ -312,7 +304,14 @@ func installGloo(testHelper *helper.SoloTestHelper, fromRelease string, strictVa fmt.Printf("running helm with args: %v\n", args) runAndCleanCommand("helm", args...) - + // we dont use the new install gloo so we need to spin this up here + testServer, err := helper.NewTestServer(testHelper.InstallNamespace) + if err != nil { + Expect(err).NotTo(HaveOccurred()) + } + if err := testServer.DeployResources(5 * time.Minute); err != nil { + Expect(err).NotTo(HaveOccurred()) + } // Check that everything is OK checkGlooHealthy(testHelper) From 2ef25de20ab7594c1117f95773f1490f66ec818f Mon Sep 17 00:00:00 2001 From: nfuden Date: Fri, 13 Sep 2024 13:14:20 -0400 Subject: [PATCH 16/23] test/kube2e/upgrade: remove enterprise options that leaked --- test/kube2e/upgrade/upgrade_test.go | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/test/kube2e/upgrade/upgrade_test.go b/test/kube2e/upgrade/upgrade_test.go index e60e7cec614..6629b629015 100644 --- a/test/kube2e/upgrade/upgrade_test.go +++ b/test/kube2e/upgrade/upgrade_test.go @@ -414,13 +414,9 @@ gatewayProxies: # the new fields on the Gateway CR during the helm upgrade, and that it will pass validation) customHttpGateway: options: - dlp: - dlpRules: - - actions: - - actionType: KEYVALUE - keyValueAction: - keyToMask: test - name: test + headerValidationSettings: + disableHttp1MethodValidation: {} + `)) Expect(err).NotTo(HaveOccurred()) From c2d33467416d521942624bb9f7e3e3f1a8ed68fd Mon Sep 17 00:00:00 2001 From: nfuden Date: Fri, 13 Sep 2024 13:40:05 -0400 Subject: [PATCH 17/23] test/kube2e/upgrade: remove enterprise options that leaked --- test/kube2e/upgrade/upgrade_test.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/test/kube2e/upgrade/upgrade_test.go b/test/kube2e/upgrade/upgrade_test.go index 6629b629015..666e82592ec 100644 --- a/test/kube2e/upgrade/upgrade_test.go +++ b/test/kube2e/upgrade/upgrade_test.go @@ -414,9 +414,8 @@ gatewayProxies: # the new fields on the Gateway CR during the helm upgrade, and that it will pass validation) customHttpGateway: options: - headerValidationSettings: - disableHttp1MethodValidation: {} - + buffer: + maxRequestBytes: 999999 `)) Expect(err).NotTo(HaveOccurred()) From 9400939dd44b15d0ab35cc99f15f3a32ea324786 Mon Sep 17 00:00:00 2001 From: nfuden Date: Fri, 13 Sep 2024 13:59:16 -0400 Subject: [PATCH 18/23] test/kube2e/upgrade: yaml formatting --- test/kube2e/upgrade/upgrade_test.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/test/kube2e/upgrade/upgrade_test.go b/test/kube2e/upgrade/upgrade_test.go index 666e82592ec..344d4dbb58e 100644 --- a/test/kube2e/upgrade/upgrade_test.go +++ b/test/kube2e/upgrade/upgrade_test.go @@ -247,8 +247,6 @@ func updateValidationWebhookTests(ctx context.Context, crdDir string, kubeClient Expect(err).NotTo(HaveOccurred()) Expect(webhookConfig.Webhooks[0].ClientConfig.CABundle).To(Equal(secret.Data[corev1.ServiceAccountRootCAKey])) - By("accepts and adopts valid configuration after upgrade") - } // =================================== @@ -414,8 +412,8 @@ gatewayProxies: # the new fields on the Gateway CR during the helm upgrade, and that it will pass validation) customHttpGateway: options: - buffer: - maxRequestBytes: 999999 + buffer: + maxRequestBytes: 999999 `)) Expect(err).NotTo(HaveOccurred()) From 84f067673dc553cb564c54b1b1396cbdcb287fa8 Mon Sep 17 00:00:00 2001 From: nfuden Date: Fri, 13 Sep 2024 14:22:27 -0400 Subject: [PATCH 19/23] test/kube2e/upgrade: spaces not tabs --- test/kube2e/upgrade/upgrade_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/kube2e/upgrade/upgrade_test.go b/test/kube2e/upgrade/upgrade_test.go index 344d4dbb58e..fc0a0b3c33a 100644 --- a/test/kube2e/upgrade/upgrade_test.go +++ b/test/kube2e/upgrade/upgrade_test.go @@ -413,7 +413,7 @@ gatewayProxies: customHttpGateway: options: buffer: - maxRequestBytes: 999999 + maxRequestBytes: 999999 `)) Expect(err).NotTo(HaveOccurred()) From 380a2c729d550b77ba2d4c9625a5f92aacb44600 Mon Sep 17 00:00:00 2001 From: nfuden Date: Thu, 12 Sep 2024 10:14:31 -0400 Subject: [PATCH 20/23] projects/syncers: Add in the ability to view old labels on proxies --- .../persist-proxy-upgrade-fix.yaml | 0 projects/clusteringress/pkg/translator/translator_syncer.go | 4 +++- projects/gateway/pkg/syncer/translator_syncer.go | 4 +++- projects/gloo/pkg/utils/translators.go | 3 +++ projects/ingress/pkg/translator/translator_syncer.go | 4 +++- 5 files changed, 12 insertions(+), 3 deletions(-) rename changelog/{v1.17.8 => v1.18.0-beta22}/persist-proxy-upgrade-fix.yaml (100%) diff --git a/changelog/v1.17.8/persist-proxy-upgrade-fix.yaml b/changelog/v1.18.0-beta22/persist-proxy-upgrade-fix.yaml similarity index 100% rename from changelog/v1.17.8/persist-proxy-upgrade-fix.yaml rename to changelog/v1.18.0-beta22/persist-proxy-upgrade-fix.yaml diff --git a/projects/clusteringress/pkg/translator/translator_syncer.go b/projects/clusteringress/pkg/translator/translator_syncer.go index 2763b982cbb..1f52cd72514 100644 --- a/projects/clusteringress/pkg/translator/translator_syncer.go +++ b/projects/clusteringress/pkg/translator/translator_syncer.go @@ -51,8 +51,10 @@ var ( // // This is only required for backwards compatibility. // Once users have upgraded to a version with new labels, we can delete this code and read/write the same labels. + // gloo-knative-translator removed in 1.17 + // knative removed in 1.12 proxyLabelSelectorOptions = clients.ListOpts{ - ExpressionSelector: glooutils.GetTranslatorSelectorExpression(glooutils.KnativeProxyValue, "knative"), + ExpressionSelector: glooutils.GetTranslatorSelectorExpression(glooutils.KnativeProxyValue, "gloo-knative-translator", "knative"), } ) diff --git a/projects/gateway/pkg/syncer/translator_syncer.go b/projects/gateway/pkg/syncer/translator_syncer.go index 984a9292b0b..cd3ef0454ef 100644 --- a/projects/gateway/pkg/syncer/translator_syncer.go +++ b/projects/gateway/pkg/syncer/translator_syncer.go @@ -60,9 +60,11 @@ var ( // // This is only required for backwards compatibility. // Once users have upgraded to a version with new labels, we can delete this code and read/write the same labels. + // gloo-gateway-translator removed in 1.17 + // gateway removed in 1.12 proxyLabelSelectorOptions = clients.ListOpts{ Selector: proxyLabelsToWrite, - ExpressionSelector: glooutils.GetTranslatorSelectorExpression(glooutils.GlooEdgeProxyValue, "gateway"), + ExpressionSelector: glooutils.GetTranslatorSelectorExpression(glooutils.GlooEdgeProxyValue, "gloo-gateway-translator", "gateway"), } ) diff --git a/projects/gloo/pkg/utils/translators.go b/projects/gloo/pkg/utils/translators.go index dd9f39b17f2..bc8b4134f6b 100644 --- a/projects/gloo/pkg/utils/translators.go +++ b/projects/gloo/pkg/utils/translators.go @@ -7,6 +7,9 @@ import ( "github.com/solo-io/solo-kit/pkg/api/v1/resources/core" ) +// Danger any label changes here likely requires more than a drop in replacement string. +// Any selectors likely still have to take the union of the old string name in order to facilitate orderly upgrades. + const ( // ProxyTypeKey is the label key applied to Proxies generated by the Gloo Edge translator ProxyTypeKey = "created_by" diff --git a/projects/ingress/pkg/translator/translator_syncer.go b/projects/ingress/pkg/translator/translator_syncer.go index aed55f6c19d..e46b17221dd 100644 --- a/projects/ingress/pkg/translator/translator_syncer.go +++ b/projects/ingress/pkg/translator/translator_syncer.go @@ -49,8 +49,10 @@ var ( // // This is only required for backwards compatibility. // Once users have upgraded to a version with new labels, we can delete this code and read/write the same labels. + // gloo-ingress-translator removed in 1.17 + // ingress removed in 1.12 proxyLabelSelectorOptions = clients.ListOpts{ - ExpressionSelector: glooutils.GetTranslatorSelectorExpression(glooutils.IngressProxyValue, "ingress"), + ExpressionSelector: glooutils.GetTranslatorSelectorExpression(glooutils.IngressProxyValue, "gloo-ingress-translator", "ingress"), } ) From aac4b852c6c6c79bf9b6fc02961e9c91594f0100 Mon Sep 17 00:00:00 2001 From: nfuden Date: Fri, 13 Sep 2024 14:52:58 -0400 Subject: [PATCH 21/23] changelog --- .../{v1.18.0-beta22 => v1.17.8}/persist-proxy-upgrade-fix.yaml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename changelog/{v1.18.0-beta22 => v1.17.8}/persist-proxy-upgrade-fix.yaml (100%) diff --git a/changelog/v1.18.0-beta22/persist-proxy-upgrade-fix.yaml b/changelog/v1.17.8/persist-proxy-upgrade-fix.yaml similarity index 100% rename from changelog/v1.18.0-beta22/persist-proxy-upgrade-fix.yaml rename to changelog/v1.17.8/persist-proxy-upgrade-fix.yaml From 9093f82c03412b6ffc50149e10db78ab04bc46d0 Mon Sep 17 00:00:00 2001 From: nfuden Date: Fri, 13 Sep 2024 16:34:35 -0400 Subject: [PATCH 22/23] changelog: add feature path --- changelog/v1.17.8/persist-proxy-upgrade-fix.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/changelog/v1.17.8/persist-proxy-upgrade-fix.yaml b/changelog/v1.17.8/persist-proxy-upgrade-fix.yaml index b72dade5ba4..c7d99634891 100644 --- a/changelog/v1.17.8/persist-proxy-upgrade-fix.yaml +++ b/changelog/v1.17.8/persist-proxy-upgrade-fix.yaml @@ -8,4 +8,5 @@ changelog: description: Updates upgrade test with some of the extra functionality previously only in the enterprise test steps. This is used to validate the main issue for persistproxy spec. - The changes do not adhere to our current best practices on writing tests but follow the prior art in enterprise. \ No newline at end of file + The changes do not adhere to our current best practices on writing tests but follow the prior art in enterprise. + This is set via gateway.persistProxySpec or in ee gloo.gateway.persistProxySpec \ No newline at end of file From 1a16b018dc38cd37b15974017172731a8069bcae Mon Sep 17 00:00:00 2001 From: nfuden Date: Fri, 13 Sep 2024 16:39:01 -0400 Subject: [PATCH 23/23] changelog; Make feature user facing --- changelog/v1.17.8/persist-proxy-upgrade-fix.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/changelog/v1.17.8/persist-proxy-upgrade-fix.yaml b/changelog/v1.17.8/persist-proxy-upgrade-fix.yaml index c7d99634891..3a145a0783c 100644 --- a/changelog/v1.17.8/persist-proxy-upgrade-fix.yaml +++ b/changelog/v1.17.8/persist-proxy-upgrade-fix.yaml @@ -4,9 +4,9 @@ changelog: resolvesIssue: false description: >- Fixes an issue on upgrades to 1.17+ where persistproxyspec was set to true. + Persist proxy spec is configured in helm via gateway.persistProxySpec or in ee gloo.gateway.persistProxySpec - type: NON_USER_FACING description: Updates upgrade test with some of the extra functionality previously only in the enterprise test steps. This is used to validate the main issue for persistproxy spec. - The changes do not adhere to our current best practices on writing tests but follow the prior art in enterprise. - This is set via gateway.persistProxySpec or in ee gloo.gateway.persistProxySpec \ No newline at end of file + The changes do not adhere to our current best practices on writing tests but follow the prior art in enterprise. \ No newline at end of file