kuma

Форк
0
/
headless_services.go 
88 строк · 2.5 Кб
1
package connectivity
2

3
import (
4
	"github.com/gruntwork-io/terratest/modules/k8s"
5
	. "github.com/onsi/ginkgo/v2"
6
	. "github.com/onsi/gomega"
7
	corev1 "k8s.io/api/core/v1"
8
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
9
	"k8s.io/apimachinery/pkg/util/intstr"
10

11
	. "github.com/kumahq/kuma/test/framework"
12
	"github.com/kumahq/kuma/test/framework/client"
13
	"github.com/kumahq/kuma/test/framework/deployments/democlient"
14
	"github.com/kumahq/kuma/test/framework/deployments/testserver"
15
	"github.com/kumahq/kuma/test/framework/envs/kubernetes"
16
)
17

18
func HeadlessServices() {
19
	meshName := "headless-svc"
20
	namespace := "headless-svc"
21

22
	BeforeAll(func() {
23
		err := NewClusterSetup().
24
			Install(MTLSMeshKubernetes(meshName)).
25
			Install(MeshTrafficPermissionAllowAllKubernetes(meshName)).
26
			Install(NamespaceWithSidecarInjection(namespace)).
27
			Install(democlient.Install(
28
				democlient.WithNamespace(namespace),
29
				democlient.WithMesh(meshName)),
30
			).
31
			Install(testserver.Install(
32
				testserver.WithName("test-server"),
33
				testserver.WithMesh(meshName),
34
				testserver.WithNamespace(namespace),
35
			)).
36
			Setup(kubernetes.Cluster)
37
		Expect(err).ToNot(HaveOccurred())
38

39
		err = k8s.RunKubectlE(
40
			kubernetes.Cluster.GetTesting(),
41
			kubernetes.Cluster.GetKubectlOptions(namespace),
42
			"delete", "svc", "test-server", "-n", namespace,
43
		)
44
		Expect(err).ToNot(HaveOccurred())
45

46
		// create headless service with port that is not the same as app port
47
		headlessSvc := &corev1.Service{
48
			TypeMeta: metav1.TypeMeta{
49
				Kind:       "Service",
50
				APIVersion: "v1",
51
			},
52
			ObjectMeta: metav1.ObjectMeta{
53
				Name:      "test-server-headless",
54
				Namespace: namespace,
55
			},
56
			Spec: corev1.ServiceSpec{
57
				Ports: []corev1.ServicePort{
58
					{
59
						Name:       "main",
60
						Port:       int32(9090),
61
						TargetPort: intstr.FromString("main"),
62
					},
63
				},
64
				Selector: map[string]string{
65
					"app": "test-server",
66
				},
67
			},
68
		}
69
		Expect(kubernetes.Cluster.Install(YamlK8sObject(headlessSvc))).To(Succeed())
70
	})
71

72
	E2EAfterAll(func() {
73
		Expect(kubernetes.Cluster.TriggerDeleteNamespace(namespace)).To(Succeed())
74
		Expect(kubernetes.Cluster.DeleteMesh(meshName)).To(Succeed())
75
	})
76

77
	It("should be able to connect to the headless service", func() {
78
		Eventually(func(g Gomega) {
79
			_, err := client.CollectEchoResponse(
80
				kubernetes.Cluster,
81
				"demo-client",
82
				"test-server-headless:9090",
83
				client.FromKubernetesPod(namespace, "demo-client"),
84
			)
85
			g.Expect(err).ToNot(HaveOccurred())
86
		}, "30s", "1s").Should(Succeed())
87
	})
88
}
89

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

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

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

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