diff --git a/pkg/test/resources/builders/mesh_builder.go b/pkg/test/resources/builders/mesh_builder.go index 54dd256f0c84..8d9b634470ab 100644 --- a/pkg/test/resources/builders/mesh_builder.go +++ b/pkg/test/resources/builders/mesh_builder.go @@ -3,6 +3,7 @@ package builders import ( "context" + "google.golang.org/protobuf/types/known/wrapperspb" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/yaml" @@ -67,6 +68,41 @@ func (m *MeshBuilder) WithBuiltinMTLSBackend(name string) *MeshBuilder { return m.AddBuiltinMTLSBackend(name) } +func (m *MeshBuilder) WithNetworkingPassThrough(b bool) *MeshBuilder { + if m.res.Spec.Networking == nil { + m.res.Spec.Networking = &mesh_proto.Networking{ + Outbound: &mesh_proto.Networking_Outbound{ + Passthrough: &wrapperspb.BoolValue{Value: b}, + }, + } + } + return m +} + +func (m *MeshBuilder) WithRoutingZoneEgress(b bool) *MeshBuilder { + if m.res.Spec.Routing == nil { + m.res.Spec.Routing = &mesh_proto.Routing{} + } + m.res.Spec.Routing.ZoneEgress = b + return m +} + +func (m *MeshBuilder) WithRoutingLocalityAwareLoadBalancing(b bool) *MeshBuilder { + if m.res.Spec.Routing == nil { + m.res.Spec.Routing = &mesh_proto.Routing{} + } + m.res.Spec.Routing.LocalityAwareLoadBalancing = b + return m +} + +func (m *MeshBuilder) WithRoutingDefaultForbidMeshExternalServiceAccess(b bool) *MeshBuilder { + if m.res.Spec.Routing == nil { + m.res.Spec.Routing = &mesh_proto.Routing{} + } + m.res.Spec.Routing.DefaultForbidMeshExternalServiceAccess = b + return m +} + func (m *MeshBuilder) WithoutBackendValidation() *MeshBuilder { if m.res.Spec.Mtls == nil { m.res.Spec.Mtls = &mesh_proto.Mesh_Mtls{} diff --git a/test/e2e/zoneegress/externalservices/zoneegress_externalservices_hybrid.go b/test/e2e/zoneegress/externalservices/zoneegress_externalservices_hybrid.go index 106c534fee36..2e4d639b4d0b 100644 --- a/test/e2e/zoneegress/externalservices/zoneegress_externalservices_hybrid.go +++ b/test/e2e/zoneegress/externalservices/zoneegress_externalservices_hybrid.go @@ -4,35 +4,28 @@ import ( "fmt" "net" - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - "golang.org/x/sync/errgroup" - config_core "github.com/kumahq/kuma/v2/pkg/config/core" + core_mesh "github.com/kumahq/kuma/v2/pkg/core/resources/apis/mesh" + "github.com/kumahq/kuma/v2/pkg/test/resources/builders" . "github.com/kumahq/kuma/v2/test/framework" "github.com/kumahq/kuma/v2/test/framework/client" "github.com/kumahq/kuma/v2/test/framework/deployments/democlient" "github.com/kumahq/kuma/v2/test/framework/deployments/testserver" + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + "golang.org/x/sync/errgroup" ) const nonDefaultMesh = "non-default" func HybridUniversalGlobal() { - meshMTLSOn := ` -type: Mesh -name: %s -mtls: - enabledBackend: ca-1 - backends: - - name: ca-1 - type: builtin -networking: - outbound: - passthrough: %s -routing: - zoneEgress: %s -` - + meshMTLOnFn := func(name string, enableNetworkOutBound, enableZoneIngress bool) *core_mesh.MeshResource { + return builders.Mesh().WithName(nonDefaultMesh).WithBuiltinMTLSBackend("ca-1"). + WithEgressRoutingEnabled(). + WithNetworkingPassThrough(enableNetworkOutBound). + WithRoutingZoneEgress(enableZoneIngress). + Build() + } externalService1 := ` type: ExternalService mesh: %s @@ -86,7 +79,7 @@ conf: Expect(NewClusterSetup(). Install(Kuma(config_core.Global)). - Install(YamlUniversal(fmt.Sprintf(meshMTLSOn, nonDefaultMesh, "true", "true"))). + Install(ResourceUniversal(meshMTLOnFn(nonDefaultMesh, true, true))). Install(MeshTrafficPermissionAllowAllUniversal(nonDefaultMesh)). Install(YamlUniversal(ptWaitForWarmOnInit)). Install(YamlUniversal(fmt.Sprintf(externalService1, nonDefaultMesh))). @@ -159,7 +152,7 @@ conf: }) It("passthrough false with zoneegress false", func() { - Expect(YamlUniversal(fmt.Sprintf(meshMTLSOn, nonDefaultMesh, "false", "false"))(global)).To(Succeed()) + Expect(ResourceUniversal(meshMTLOnFn(nonDefaultMesh, false, false))(global)).To(Succeed()) By("reaching external service from k8s") Eventually(func(g Gomega) { @@ -192,7 +185,7 @@ conf: }) It("passthrough false with zoneegress true", func() { - Expect(YamlUniversal(fmt.Sprintf(meshMTLSOn, nonDefaultMesh, "false", "true"))(global)).To(Succeed()) + Expect(ResourceUniversal(meshMTLOnFn(nonDefaultMesh, false, true))(global)).To(Succeed()) By("not reaching external service from k8s when zone egress is down") Eventually(func(g Gomega) { diff --git a/test/e2e_env/multizone/externalservices/externalservices_multizone_universal.go b/test/e2e_env/multizone/externalservices/externalservices_multizone_universal.go index 089fc17577ad..ade98ecfc249 100644 --- a/test/e2e_env/multizone/externalservices/externalservices_multizone_universal.go +++ b/test/e2e_env/multizone/externalservices/externalservices_multizone_universal.go @@ -5,6 +5,7 @@ import ( "fmt" "sync" + "github.com/kumahq/kuma/v2/pkg/test/resources/builders" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" "google.golang.org/protobuf/types/known/wrapperspb" @@ -20,20 +21,11 @@ import ( ) func ExternalServicesOnMultizoneUniversal() { - meshDefaulMtlsOn := ` -type: Mesh -name: default -mtls: - enabledBackend: ca-1 - backends: - - name: ca-1 - type: builtin -networking: - outbound: - passthrough: true -routing: - localityAwareLoadBalancing: %s -` + meshDefaultMTLSOn := builders. + Mesh(). + WithName("default"). + WithBuiltinMTLSBackend("ca-1"). + WithNetworkingPassThrough(true) externalServiceRes := func(service, address string, tls bool, caCert []byte) *core_mesh.ExternalServiceResource { res := &core_mesh.ExternalServiceResource{ @@ -98,7 +90,7 @@ routing: global = NewUniversalCluster(NewTestingT(), clusterName1, Silent) err = NewClusterSetup(). Install(Kuma(core.Global)). - Install(YamlUniversal(fmt.Sprintf(meshDefaulMtlsOn, "false"))). + Install(ResourceUniversal(meshDefaultMTLSOn.WithRoutingLocalityAwareLoadBalancing(false).Build())). Setup(global) Expect(err).ToNot(HaveOccurred()) @@ -270,7 +262,7 @@ networking: ) // when locality-aware lb is enabled - Expect(YamlUniversal(fmt.Sprintf(meshDefaulMtlsOn, "true"))(global)).To(Succeed()) + Expect(ResourceUniversal(meshDefaultMTLSOn.WithRoutingLocalityAwareLoadBalancing(true).Build())(global)).To(Succeed()) // then Eventually(func() (map[string]int, error) { return client.CollectResponsesByInstance(zone1, "demo-client", "es-for-zones.mesh") diff --git a/test/e2e_env/multizone/gateway/cross-mesh.go b/test/e2e_env/multizone/gateway/cross-mesh.go index 2b2cf495ceac..42f7ac81c633 100644 --- a/test/e2e_env/multizone/gateway/cross-mesh.go +++ b/test/e2e_env/multizone/gateway/cross-mesh.go @@ -19,21 +19,6 @@ import ( "github.com/kumahq/kuma/v2/test/framework/envs/multizone" ) -func MTLSMeshUniversalEgress(name string) InstallFunc { - mesh := fmt.Sprintf(` -type: Mesh -name: %s -mtls: - enabledBackend: ca-1 - backends: - - name: ca-1 - type: builtin -routing: - zoneEgress: true -`, name) - return YamlUniversal(mesh) -} - func CrossMeshGatewayOnMultizone() { const gatewayClientNamespaceOtherMesh = "cross-mesh-kuma-client-other" const gatewayClientNamespaceSameMesh = "cross-mesh-kuma-client" diff --git a/test/e2e_env/multizone/localityawarelb/locality_multizone_hybrid.go b/test/e2e_env/multizone/localityawarelb/locality_multizone_hybrid.go index bd5fee5174c1..74e2c756da28 100644 --- a/test/e2e_env/multizone/localityawarelb/locality_multizone_hybrid.go +++ b/test/e2e_env/multizone/localityawarelb/locality_multizone_hybrid.go @@ -4,6 +4,8 @@ import ( "fmt" "net" + "github.com/kumahq/kuma/v2/pkg/core/resources/apis/mesh" + "github.com/kumahq/kuma/v2/pkg/test/resources/builders" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" "golang.org/x/sync/errgroup" @@ -15,21 +17,13 @@ import ( "github.com/kumahq/kuma/v2/test/framework/envs/multizone" ) -func MeshMTLSOnAndZoneEgressAndNoPassthrough(mesh string, zoneEgress string) string { - return fmt.Sprintf(` -type: Mesh -name: %s -mtls: - enabledBackend: ca-1 - backends: - - name: ca-1 - type: builtin -networking: - outbound: - passthrough: false -routing: - zoneEgress: %s -`, mesh, zoneEgress) +func MeshMTLSOnAndZoneEgressAndNoPassthrough(mesh string, zoneEgress bool) *mesh.MeshResource { + return builders.Mesh(). + WithName(mesh). + WithBuiltinMTLSBackend("ca-1"). + WithNetworkingPassThrough(false). + WithRoutingZoneEgress(zoneEgress). + Build() } func externalService(mesh string, ip string) string { @@ -77,8 +71,8 @@ networking: BeforeAll(func() { // Global Expect(NewClusterSetup(). - Install(YamlUniversal(MeshMTLSOnAndZoneEgressAndNoPassthrough(mesh, "true"))). - Install(YamlUniversal(MeshMTLSOnAndZoneEgressAndNoPassthrough(meshNoZoneEgress, "false"))). + Install(ResourceUniversal(MeshMTLSOnAndZoneEgressAndNoPassthrough(mesh, true))). + Install(ResourceUniversal(MeshMTLSOnAndZoneEgressAndNoPassthrough(meshNoZoneEgress, false))). Install(MeshTrafficPermissionAllowAllUniversal(mesh)). Install(MeshTrafficPermissionAllowAllUniversal(meshNoZoneEgress)). Setup(multizone.Global)).To(Succeed()) diff --git a/test/e2e_env/multizone/localityawarelb/meshloadbalancingstrategy.go b/test/e2e_env/multizone/localityawarelb/meshloadbalancingstrategy.go index 48488331166d..65e460683402 100644 --- a/test/e2e_env/multizone/localityawarelb/meshloadbalancingstrategy.go +++ b/test/e2e_env/multizone/localityawarelb/meshloadbalancingstrategy.go @@ -33,7 +33,7 @@ networking: BeforeAll(func() { // Global Expect(NewClusterSetup(). - Install(YamlUniversal(MeshMTLSOnAndZoneEgressAndNoPassthrough(mesh, "false"))). + Install(ResourceUniversal(MeshMTLSOnAndZoneEgressAndNoPassthrough(mesh, false))). Install(MeshTrafficPermissionAllowAllUniversal(mesh)). Setup(multizone.Global)).To(Succeed()) Expect(WaitForMesh(mesh, multizone.Zones())).To(Succeed()) diff --git a/test/e2e_env/multizone/localityawarelb/meshmultizoneservice.go b/test/e2e_env/multizone/localityawarelb/meshmultizoneservice.go index 2c46f1ade77d..5bb57676d3cc 100644 --- a/test/e2e_env/multizone/localityawarelb/meshmultizoneservice.go +++ b/test/e2e_env/multizone/localityawarelb/meshmultizoneservice.go @@ -1,6 +1,8 @@ package localityawarelb import ( + core_meta "github.com/kumahq/kuma/v2/pkg/core/metadata" + "github.com/kumahq/kuma/v2/pkg/test/resources/builders" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" "golang.org/x/sync/errgroup" @@ -20,23 +22,13 @@ func MeshMzService() { Expect(NewClusterSetup(). Install(MTLSMeshWithMeshServicesUniversal(meshName, "Everywhere")). Install(MeshTrafficPermissionAllowAllUniversal(meshName)). - Install(YamlUniversal(` -type: MeshMultiZoneService -name: test-server -mesh: mlb-mzms -labels: - test-name: mzmsconnectivity -spec: - selector: - meshService: - matchLabels: - kuma.io/display-name: test-server - ports: - - name: "80" - port: 80 - appProtocol: http -`)). - Setup(multizone.Global)).To(Succeed()) + Install(ResourceUniversal(builders.MeshMultiZoneService(). + WithName("test-server"). + WithMesh(meshName). + WithLabels(map[string]string{"test-name": "mzmsconnectivity"}). + WithServiceLabelSelector(map[string]string{"kuma.io/display-name": "test-server"}). + AddIntPortWithName(80, core_meta.ProtocolHTTP, "80"). + Build())).Setup(multizone.Global)).To(Succeed()) Expect(WaitForMesh(meshName, multizone.Zones())).To(Succeed()) group := errgroup.Group{} diff --git a/test/e2e_env/multizone/meshhttproute/meshservice.go b/test/e2e_env/multizone/meshhttproute/meshservice.go index 129aebe22223..81a3ca8a5251 100644 --- a/test/e2e_env/multizone/meshhttproute/meshservice.go +++ b/test/e2e_env/multizone/meshhttproute/meshservice.go @@ -3,6 +3,8 @@ package meshhttproute import ( "fmt" + core_meta "github.com/kumahq/kuma/v2/pkg/core/metadata" + "github.com/kumahq/kuma/v2/pkg/test/resources/builders" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" "golang.org/x/sync/errgroup" @@ -18,28 +20,19 @@ import ( func MeshService() { meshName := "meshhttproutems" namespace := "meshhttproutems" - + meshMultiZone := builders.MeshMultiZoneService(). + WithMesh(meshName). + WithName("test-server"). + WithLabels(map[string]string{"test-name": meshName}). + WithServiceLabelSelector(map[string]string{"kuma.io/display-name": "test-server", + "k8s.kuma.io/namespace": namespace, + "kuma.io/zone": "kuma-2"}). + AddIntPortWithName(80, core_meta.ProtocolHTTP, "80").Build() BeforeAll(func() { err := NewClusterSetup(). Install(MTLSMeshWithMeshServicesUniversal(meshName, "Exclusive")). Install(MeshTrafficPermissionAllowAllUniversal(meshName)). - Install(YamlUniversal(` -type: MeshMultiZoneService -name: test-server -mesh: meshhttproutems -labels: - test-name: meshhttproutems -spec: - selector: - meshService: - matchLabels: - kuma.io/display-name: test-server - k8s.kuma.io/namespace: meshhttproutems - kuma.io/zone: kuma-2 # pick specific zone so we do not rely on default fallback - ports: - - port: 80 - appProtocol: http -`)). + Install(ResourceUniversal(meshMultiZone)). Setup(multizone.Global) Expect(err).ToNot(HaveOccurred()) Expect(WaitForMesh(meshName, multizone.Zones())).To(Succeed()) diff --git a/test/e2e_env/multizone/meshmultizoneservice/connectivity.go b/test/e2e_env/multizone/meshmultizoneservice/connectivity.go index ea183252ad02..bd8ce17a6c2a 100644 --- a/test/e2e_env/multizone/meshmultizoneservice/connectivity.go +++ b/test/e2e_env/multizone/meshmultizoneservice/connectivity.go @@ -3,6 +3,8 @@ package meshmultizoneservice import ( "fmt" + core_meta "github.com/kumahq/kuma/v2/pkg/core/metadata" + "github.com/kumahq/kuma/v2/pkg/test/resources/builders" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" "github.com/onsi/gomega/types" @@ -20,26 +22,17 @@ func Connectivity() { namespace := "mzmsconnectivity" clientNamespace := "mzmsconnectivity-client" meshName := "mzmsconnectivity" - + mesh := builders.MeshMultiZoneService(). + WithName("test-server"). + WithLabels(map[string]string{"test-name": meshName}). + WithServiceLabelSelector(map[string]string{"kuma.io/display-name": "test-server"}). + AddIntPortWithName(80, core_meta.ProtocolHTTP, "80"). + WithMesh(meshName).Build() BeforeAll(func() { Expect(NewClusterSetup(). Install(MTLSMeshWithMeshServicesUniversal(meshName, "Everywhere")). Install(MeshTrafficPermissionAllowAllUniversal(meshName)). - Install(YamlUniversal(` -type: MeshMultiZoneService -name: test-server -mesh: mzmsconnectivity -labels: - test-name: mzmsconnectivity -spec: - selector: - meshService: - matchLabels: - kuma.io/display-name: test-server - ports: - - port: 80 - appProtocol: http -`)). + Install(ResourceUniversal(mesh)). Setup(multizone.Global)).To(Succeed()) Expect(WaitForMesh(meshName, multizone.Zones())).To(Succeed()) diff --git a/test/e2e_env/multizone/meshservice/connectivity.go b/test/e2e_env/multizone/meshservice/connectivity.go index 754d6046b650..7405bb197346 100644 --- a/test/e2e_env/multizone/meshservice/connectivity.go +++ b/test/e2e_env/multizone/meshservice/connectivity.go @@ -4,6 +4,8 @@ import ( "fmt" "github.com/gruntwork-io/terratest/modules/k8s" + "github.com/kumahq/kuma/v2/pkg/core/resources/apis/hostnamegenerator/api/v1alpha1" + "github.com/kumahq/kuma/v2/pkg/test/resources/builders" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" "github.com/onsi/gomega/types" @@ -28,6 +30,12 @@ func Connectivity() { autoGenerateUniversalClusterName := "autogenerate-universal" var autoGenerateUniversalCluster *UniversalCluster + hostGen := func(name, template string, labels map[string]string) *v1alpha1.HostnameGeneratorResource { + return builders.HostnameGenerator(). + WithName(name). + WithTemplate(template). + WithMeshServiceMatchLabels(labels).Build() + } var testServerPodNames []string BeforeAll(func() { @@ -38,55 +46,34 @@ func Connectivity() { WithPermissiveMTLSBackends(), )). Install(MeshTrafficPermissionAllowAllUniversal(meshName)). - Install(YamlUniversal(fmt.Sprintf(` -type: HostnameGenerator -name: kube-mesh-specific-msconnectivity -spec: - template: '{{ .DisplayName }}.{{ .Namespace }}.svc.{{ .Zone }}.mesh-specific.mesh.local' - selector: - meshService: - matchLabels: - kuma.io/env: kubernetes - kuma.io/mesh: %s - k8s.kuma.io/is-headless-service: "false" -`, meshName))). - Install(YamlUniversal(` -type: HostnameGenerator -name: kube-not-my-mesh-specific-msconnectivity -spec: - template: '{{ .DisplayName }}.{{ .Namespace }}.svc.{{ .Zone }}.not-my-mesh-specific.mesh.local' - selector: - meshService: - matchLabels: - kuma.io/env: kubernetes - kuma.io/mesh: non-existent-mesh - k8s.kuma.io/is-headless-service: "false" -`)). - Install(YamlUniversal(fmt.Sprintf(` -type: HostnameGenerator -name: uni-mesh-specific-msconnectivity -spec: - template: '{{ .DisplayName }}.svc.{{ .Zone }}.mesh-specific.mesh.local' - selector: - meshService: - matchLabels: - kuma.io/env: universal - kuma.io/mesh: "%s" -`, meshName))). - Install(YamlUniversal(` -type: HostnameGenerator -name: uni-not-my-mesh-specific-msconnectivity -spec: - template: '{{ .DisplayName }}.svc.{{ .Zone }}.not-my-mesh-specific.mesh.local' - selector: - meshService: - matchLabels: - kuma.io/env: universal - kuma.io/mesh: non-existent-mesh -`)). + Install(ResourceUniversal(hostGen("kube-mesh-specific-msconnectivity", + `'{{ .DisplayName }}.{{ .Namespace }}.svc.{{ .Zone }}.mesh-specific.mesh.local'`, + map[string]string{ + "kuma.io/env": "kubernetes", + "kuma.io/mesh": meshName, + "k8s.kuma.io/is-headless-service": "false", + }))). + Install(ResourceUniversal(hostGen("kube-not-my-mesh-specific-msconnectivity", + `'{{ .DisplayName }}.{{ .Namespace }}.svc.{{ .Zone }}.not-my-mesh-specific.mesh.local'`, + map[string]string{ + "kuma.io/env": "kubernetes", + "kuma.io/mesh": meshName, + "k8s.kuma.io/is-headless-service": "false", + }))). + Install(ResourceUniversal(hostGen("uni-mesh-specific-msconnectivity", + `{{ .DisplayName }}.{{ .Namespace }}.svc.{{ .Zone }}.mesh-specific.mesh.local`, + map[string]string{ + "kuma.io/env": "universal", + "kuma.io/mesh": meshName, + }))). + Install(ResourceUniversal(hostGen("uni-not-my-mesh-specific-msconnectivity", + `'{{ .DisplayName }}.svc.{{ .Zone }}.not-my-mesh-specific.mesh.local'`, + map[string]string{ + "kuma.io/env": "universal", + "kuma.io/mesh": "non-existent-mesh", + }))). Setup(multizone.Global)).To(Succeed()) Expect(WaitForMesh(meshName, multizone.Zones())).To(Succeed()) - meshGateway := fmt.Sprintf(` apiVersion: kuma.io/v1alpha1 kind: MeshGateway diff --git a/test/e2e_env/multizone/meshservice/sync.go b/test/e2e_env/multizone/meshservice/sync.go index fa6bcc30cb6c..059795d685a9 100644 --- a/test/e2e_env/multizone/meshservice/sync.go +++ b/test/e2e_env/multizone/meshservice/sync.go @@ -3,6 +3,8 @@ package meshservice import ( "fmt" + core_meta "github.com/kumahq/kuma/v2/pkg/core/metadata" + "github.com/kumahq/kuma/v2/pkg/test/resources/builders" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" "golang.org/x/sync/errgroup" @@ -19,48 +21,30 @@ import ( func Sync() { meshName := "meshservice" namespace := "meshservice" - + meshMultiZone := builders.MeshMultiZoneService(). + WithName("backend"). + WithMesh(meshName). + WithLabels(map[string]string{"test-name": "mssync"}). + WithServiceLabelSelector(map[string]string{"test-name": "backend"}). + AddIntPortWithName(80, core_meta.ProtocolHTTP, "80").Build() BeforeAll(func() { Expect(NewClusterSetup(). Install(MTLSMeshUniversal(meshName)). Install(MeshTrafficPermissionAllowAllUniversal(meshName)). - Install(YamlUniversal(` -type: MeshMultiZoneService -name: backend -mesh: meshservice -labels: - test-name: mssync -spec: - selector: - meshService: - matchLabels: - test-name: backend - ports: - - port: 80 - appProtocol: http -`)). + Install(ResourceUniversal(meshMultiZone)). Setup(multizone.Global)).To(Succeed()) Expect(WaitForMesh(meshName, multizone.Zones())).To(Succeed()) group := errgroup.Group{} - + meshService := builders.MeshService(). + WithName("backend"). + WithMesh(meshName). + WithLabels(map[string]string{"test-name": "backend", "kuma.io/origin": "zone"}). + WithDataplaneTagsSelector(map[string]string{"kuma.io/service": "test-server"}). + AddIntPortWithName(80, 80, core_meta.ProtocolHTTP, "80"). + Build() NewClusterSetup(). - Install(YamlUniversal(` -type: MeshService -name: backend -mesh: meshservice -labels: - kuma.io/origin: zone - test-name: backend -spec: - selector: - dataplaneTags: - kuma.io/service: test-server - ports: - - port: 80 - targetPort: 80 - appProtocol: http -`)). + Install(ResourceUniversal(meshService)). Install(TestServerUniversal("dp-echo-1", meshName, WithArgs([]string{"echo", "--instance", "echo-v1"}), WithServiceVersion("v1"), @@ -68,46 +52,19 @@ spec: SetupInGroup(multizone.UniZone1, &group) NewClusterSetup(). - Install(YamlUniversal(` -type: MeshService -name: backend -mesh: meshservice -labels: - kuma.io/origin: zone - test-name: backend -spec: - selector: - dataplaneTags: - kuma.io/service: test-server - ports: - - port: 80 - targetPort: 80 - appProtocol: http -`)). + Install(ResourceUniversal(meshService)). Install(DemoClientUniversal("uni-demo-client", meshName, WithTransparentProxy(true))). SetupInGroup(multizone.UniZone2, &group) - - veryLongNamedService := ` -kind: MeshService -apiVersion: kuma.io/v1alpha1 -metadata: - name: this-service-has-a-name-thats-the-exact-length-allowed-for-svcs - namespace: meshservice - labels: - kuma.io/mesh: meshservice -spec: - selector: - dataplaneTags: - kuma.io/service: some-service - ports: - - port: 80 - targetPort: 80 - appProtocol: http -` + veryLongNamedService := builders.MeshService(). + WithName("this-service-has-a-name-thats-the-exact-length-allowed-for-svcs"). + WithLabels(map[string]string{"kuma.io/mesh": "meshservice"}). + WithDataplaneTagsSelector(map[string]string{"kuma.io/service": "some-service"}). + AddIntPortWithName(80, 80, core_meta.ProtocolHTTP, "80"). + Build() NewClusterSetup(). Install(NamespaceWithSidecarInjection(namespace)). - Install(YamlK8s(veryLongNamedService)). + Install(ResourceUniversal(veryLongNamedService)). Install(democlient.Install(democlient.WithNamespace(namespace), democlient.WithMesh(meshName))). SetupInGroup(multizone.KubeZone2, &group) diff --git a/test/e2e_env/multizone/meshtimeout/meshtimeout.go b/test/e2e_env/multizone/meshtimeout/meshtimeout.go index 1b23fd78d84e..c06751da3e87 100644 --- a/test/e2e_env/multizone/meshtimeout/meshtimeout.go +++ b/test/e2e_env/multizone/meshtimeout/meshtimeout.go @@ -4,6 +4,7 @@ import ( "fmt" "time" + core_meta "github.com/kumahq/kuma/v2/pkg/core/metadata" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" "golang.org/x/sync/errgroup" @@ -25,7 +26,14 @@ import ( func MeshTimeout() { const mesh = "multizone-meshtimeout" const k8sZoneNamespace = "multizone-meshtimeout-ns" - + mshZone := builders.MeshMultiZoneService(). + WithName("test-server"). + WithMesh(mesh). + WithServiceLabelSelector(map[string]string{ + "kuma.io/display-name": "test-server", + "k8s.kuma.io/namespace": k8sZoneNamespace, + }). + AddIntPortWithName(80, core_meta.ProtocolHTTP, "80").Build() BeforeAll(func() { // Global Expect(NewClusterSetup(). @@ -38,20 +46,7 @@ func MeshTimeout() { ), ). Install(MeshTrafficPermissionAllowAllUniversal(mesh)). - Install(YamlUniversal(fmt.Sprintf(` -type: MeshMultiZoneService -name: test-server -mesh: %s -spec: - selector: - meshService: - matchLabels: - kuma.io/display-name: test-server - k8s.kuma.io/namespace: %s - ports: - - port: 80 - appProtocol: http -`, mesh, k8sZoneNamespace))). + Install(ResourceUniversal(mshZone)). Setup(multizone.Global)).To(Succeed()) Expect(WaitForMesh(mesh, multizone.Zones())).To(Succeed()) diff --git a/test/e2e_env/multizone/meshtrafficpermission/meshtrafficpermission.go b/test/e2e_env/multizone/meshtrafficpermission/meshtrafficpermission.go index e2ea38563e8a..f2cc172a258f 100644 --- a/test/e2e_env/multizone/meshtrafficpermission/meshtrafficpermission.go +++ b/test/e2e_env/multizone/meshtrafficpermission/meshtrafficpermission.go @@ -5,6 +5,7 @@ import ( "net" "github.com/gruntwork-io/terratest/modules/k8s" + "github.com/kumahq/kuma/v2/pkg/test/resources/builders" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" "golang.org/x/sync/errgroup" @@ -30,18 +31,7 @@ networking: } func mtlsAndEgressMeshUniversal(name string) InstallFunc { - mesh := fmt.Sprintf(` -type: Mesh -name: %s -mtls: - enabledBackend: ca-1 - backends: - - name: ca-1 - type: builtin -routing: - zoneEgress: true -`, name) - return YamlUniversal(mesh) + return ResourceUniversal(builders.Mesh().WithName(name).WithBuiltinMTLSBackend("ca-1").WithRoutingZoneEgress(true).Build()) } func MeshTrafficPermission() { diff --git a/test/e2e_env/multizone/zoneegress/internal_services.go b/test/e2e_env/multizone/zoneegress/internal_services.go index 179a9642ee0b..0a561b7f7422 100644 --- a/test/e2e_env/multizone/zoneegress/internal_services.go +++ b/test/e2e_env/multizone/zoneegress/internal_services.go @@ -3,6 +3,7 @@ package zoneegress import ( "fmt" + "github.com/kumahq/kuma/v2/pkg/test/resources/builders" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" "golang.org/x/sync/errgroup" @@ -19,22 +20,15 @@ func InternalServices() { const meshName = "ze-internal" const namespace = "ze-internal" - mesh := ` -type: Mesh -name: ze-internal -mtls: - enabledBackend: ca-1 - backends: - - name: ca-1 - type: builtin -routing: - zoneEgress: true -` - + mesh := builders.Mesh(). + WithName(meshName). + WithBuiltinMTLSBackend("ca-1"). + WithRoutingZoneEgress(true). + Build() BeforeAll(func() { // Global err := NewClusterSetup(). - Install(YamlUniversal(mesh)). + Install(ResourceUniversal(mesh)). Install(MeshTrafficPermissionAllowAllUniversal(meshName)). Setup(multizone.Global) Expect(err).ToNot(HaveOccurred())