Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
a8c8023
chore: remove MeshMultiZoneService hardcoded yaml strings and use bui…
NawafSwe Jan 9, 2026
a8ffc9d
chore: ignore vendor in gitignore
NawafSwe Jan 9, 2026
2bf332f
chore: use builders instead of samples in mesh multizone service
NawafSwe Jan 10, 2026
445a572
chore: use builders instead of hardcoded yamls in multizone mesh serv…
NawafSwe Jan 10, 2026
b193901
chore: remove not used function within cross-mesh
NawafSwe Jan 10, 2026
c7a56df
chore: use MeshMultiZoneService builder within meshtimeout
NawafSwe Jan 10, 2026
b40f528
chore: use MeshService builder within sync.go mesh service
NawafSwe Jan 10, 2026
e420cd4
chore: use MeshService builder within zoneegress external service
NawafSwe Jan 10, 2026
43e9af5
chore(deps): bump kumahq/kuma-gui to 3bd00a324d469cf3e1aec298c48c4bb8…
kumahq[bot] Jan 9, 2026
b3891d6
chore(deps): bump kumahq/kuma-gui to 9730c6f3706bb804b32eb877ca52a045…
kumahq[bot] Jan 9, 2026
58c693e
chore: add builder methods for networking and zone egress for mesh bu…
NawafSwe Jan 10, 2026
5f1fab0
chore: remove hardcoded yamls from externalservices_multizone_univers…
NawafSwe Jan 10, 2026
4ca406e
chore: remove hardcoded yamls from internal_services.go
NawafSwe Jan 10, 2026
91301b2
chore: remove hardcoded yamls from locality multi-zone
NawafSwe Jan 10, 2026
e6d4229
chore: remove hardcoded yamls from connectivity.go
NawafSwe Jan 10, 2026
d3a6e53
chore: remove hardcoded yamls from meshloadbalancingstrategy.go
NawafSwe Jan 10, 2026
c07a103
chore: remove hardcoded yamls from meshservice.go
NawafSwe Jan 10, 2026
c6d62ce
chore: remove hardcoded yamls from meshtrafficpermission.go
NawafSwe Jan 10, 2026
c9794db
chore: remove vendor from gitignore
NawafSwe Jan 13, 2026
2926dab
chore(deps): bump kumahq/kuma-gui to ea998e6c7921e2562684164206eb2301…
kumahq[bot] Jan 13, 2026
17df8b9
chore(deps): bump sigs.k8s.io/controller-tools from 0.19.0 to 0.20.0 …
renovate[bot] Jan 13, 2026
1123d33
chore(deps): bump ginkgo from 2.27.3 to 2.27.5 (#15360)
renovate[bot] Jan 13, 2026
9f48c20
chore(deps): bump golangci-lint from 2.7.2 to 2.8.0 (#15369)
renovate[bot] Jan 13, 2026
54ee2b9
chore(deps): bump golang.org/x/sys from 0.39.0 to 0.40.0 (#15367)
renovate[bot] Jan 13, 2026
c1bd141
chore(deps): bump gonum.org/v1/gonum from 0.16.0 to 0.17.0 (#15370)
renovate[bot] Jan 13, 2026
48ec43b
chore(deps): bump kubectl from 1.34.3 to 1.35.0 (#15371)
renovate[bot] Jan 13, 2026
7a4170b
chore(deps): bump gcr.io/distroless/base-nossl-debian12:debug from 13…
renovate[bot] Jan 13, 2026
cb5eb6f
chore(deps): bump gcr.io/distroless/base-nossl-debian12:debug-nonroot…
renovate[bot] Jan 13, 2026
d2a0b1e
chore(deps): bump gcr.io/distroless/static-debian12:debug-nonroot fro…
renovate[bot] Jan 13, 2026
e15a1b2
chore(deps): bump gcr.io/k8s-staging-build-image/distroless-iptables:…
renovate[bot] Jan 13, 2026
f03f85e
chore(deps): bump k8s.io/utils from 718f0e5 to 914a6e7 (#15358)
renovate[bot] Jan 13, 2026
def9bde
chore(deps): bump regclient/actions: from 1b705e3 to 109c465 (#15359)
renovate[bot] Jan 13, 2026
b6fc137
chore(deps): bump github.com/miekg/dns from 1.1.69 to 1.1.70 (#15361)
renovate[bot] Jan 13, 2026
9625899
chore(deps): bump github.com/prometheus/common from 0.67.4 to 0.67.5 …
renovate[bot] Jan 13, 2026
daa1966
chore(deps): bump kumactl install demo|observability images (#15363)
renovate[bot] Jan 13, 2026
c2cbc41
chore(deps/dev): bump controller-runtime/tools/setup-envtest from adb…
renovate[bot] Jan 13, 2026
f878a2b
chore(deps/dev): bump skaffold from 2.17.0 to 2.17.1 (#15365)
renovate[bot] Jan 13, 2026
3593a02
chore(deps): bump github.com/onsi/gomega from 1.38.3 to 1.39.0 (#15366)
renovate[bot] Jan 13, 2026
c56a6aa
chore(deps/dev): bump protoc from 33.2 to 33.4 (#15372)
renovate[bot] Jan 13, 2026
fafe1f0
chore(deps): bump golang.org/x/text from 0.32.0 to 0.33.0 (#15368)
renovate[bot] Jan 13, 2026
42a10e6
chore(deps): bump kumahq/kuma-gui to bd08e50692ee7b3376b9d4026446d903…
kumahq[bot] Jan 13, 2026
02b99f6
Merge branch 'master' into chore/11294-build-resources-using-builder-…
NawafSwe Jan 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions pkg/test/resources/builders/mesh_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand Down Expand Up @@ -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{}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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))).
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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{
Expand Down Expand Up @@ -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())

Expand Down Expand Up @@ -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")
Expand Down
15 changes: 0 additions & 15 deletions test/e2e_env/multizone/gateway/cross-mesh.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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 {
Expand Down Expand Up @@ -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())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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())
Expand Down
26 changes: 9 additions & 17 deletions test/e2e_env/multizone/localityawarelb/meshmultizoneservice.go
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -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{}
Expand Down
29 changes: 11 additions & 18 deletions test/e2e_env/multizone/meshhttproute/meshservice.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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())
Expand Down
25 changes: 9 additions & 16 deletions test/e2e_env/multizone/meshmultizoneservice/connectivity.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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())

Expand Down
Loading