kuma

Форк
0
117 строк · 3.4 Кб
1
package virtualoutbound
2

3
import (
4
	. "github.com/onsi/ginkgo/v2"
5
	. "github.com/onsi/gomega"
6

7
	"github.com/kumahq/kuma/pkg/core/resources/apis/mesh"
8
	. "github.com/kumahq/kuma/test/framework"
9
	"github.com/kumahq/kuma/test/framework/client"
10
	"github.com/kumahq/kuma/test/framework/deployments/democlient"
11
	"github.com/kumahq/kuma/test/framework/deployments/testserver"
12
	"github.com/kumahq/kuma/test/framework/envs/kubernetes"
13
)
14

15
func VirtualOutbound() {
16
	namespace := "virtual-outbounds"
17
	meshName := "virtual-outbounds"
18

19
	BeforeAll(func() {
20
		err := NewClusterSetup().
21
			Install(MeshKubernetes(meshName)).
22
			Install(NamespaceWithSidecarInjection(namespace)).
23
			Install(democlient.Install(democlient.WithNamespace(namespace), democlient.WithMesh(meshName))).
24
			Install(testserver.Install(
25
				testserver.WithMesh(meshName),
26
				testserver.WithNamespace(namespace),
27
				testserver.WithStatefulSet(true),
28
				testserver.WithReplicas(2),
29
			)).
30
			Setup(kubernetes.Cluster)
31
		Expect(err).ToNot(HaveOccurred())
32
	})
33

34
	E2EAfterAll(func() {
35
		Expect(kubernetes.Cluster.TriggerDeleteNamespace(namespace)).To(Succeed())
36
		Expect(kubernetes.Cluster.DeleteMesh(meshName)).To(Succeed())
37
	})
38

39
	BeforeEach(func() {
40
		Expect(DeleteMeshResources(kubernetes.Cluster, meshName, mesh.VirtualOutboundResourceTypeDescriptor)).To(Succeed())
41
	})
42

43
	It("simple virtual outbound", func() {
44
		virtualOutboundAll := `
45
apiVersion: kuma.io/v1alpha1
46
kind: VirtualOutbound
47
mesh: virtual-outbounds
48
metadata:
49
  name: instance
50
spec:
51
  selectors:
52
  - match:
53
      kuma.io/service: "*"
54
  conf:
55
    host: "{{.svc}}.foo"
56
    port: "8080"
57
    parameters:
58
    - name: "svc"
59
      tagKey: "kuma.io/service"
60
`
61
		err := YamlK8s(virtualOutboundAll)(kubernetes.Cluster)
62
		Expect(err).ToNot(HaveOccurred())
63

64
		// Succeed with virtual-outbound
65
		Eventually(func(g Gomega) {
66
			response, err := client.CollectEchoResponse(
67
				kubernetes.Cluster, "demo-client", "test-server_virtual-outbounds_svc_80.foo:8080",
68
				client.FromKubernetesPod(namespace, "demo-client"),
69
			)
70
			g.Expect(err).ToNot(HaveOccurred())
71
			g.Expect(response.Instance).To(ContainSubstring("test-server"))
72
		}, "30s", "1s").Should(Succeed())
73
	})
74

75
	It("virtual outbounds on statefulSet", func() {
76
		virtualOutboundAll := `
77
apiVersion: kuma.io/v1alpha1
78
kind: VirtualOutbound
79
mesh: virtual-outbounds
80
metadata:
81
  name: instance
82
spec:
83
  selectors:
84
  - match:
85
      kuma.io/service: "*"
86
      statefulset.kubernetes.io/pod-name: "*"
87
  conf:
88
    host: "{{.svc}}.{{.inst}}"
89
    port: "8080"
90
    parameters:
91
    - name: "svc"
92
      tagKey: "kuma.io/service"
93
    - name: "inst"
94
      tagKey: "statefulset.kubernetes.io/pod-name"
95
`
96
		err := YamlK8s(virtualOutboundAll)(kubernetes.Cluster)
97
		Expect(err).ToNot(HaveOccurred())
98

99
		Eventually(func(g Gomega) {
100
			response, err := client.CollectEchoResponse(
101
				kubernetes.Cluster, "demo-client", "test-server_virtual-outbounds_svc_80.test-server-0:8080",
102
				client.FromKubernetesPod(namespace, "demo-client"),
103
			)
104
			g.Expect(err).ToNot(HaveOccurred())
105
			g.Expect(response.Instance).To(Equal("test-server-0"))
106
		}, "30s", "1s").Should(Succeed())
107

108
		Eventually(func(g Gomega) {
109
			response, err := client.CollectEchoResponse(
110
				kubernetes.Cluster, "demo-client", "test-server_virtual-outbounds_svc_80.test-server-1:8080",
111
				client.FromKubernetesPod(namespace, "demo-client"),
112
			)
113
			g.Expect(err).ToNot(HaveOccurred())
114
			g.Expect(response.Instance).To(ContainSubstring("test-server-1"))
115
		}, "30s", "1s").Should(Succeed())
116
	})
117
}
118

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.