kuma

Форк
0
98 строк · 2.8 Кб
1
package observability
2

3
import (
4
	"fmt"
5

6
	. "github.com/onsi/ginkgo/v2"
7
	. "github.com/onsi/gomega"
8

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

17
func meshWithTracing(name, zipkinURL string) string {
18
	return fmt.Sprintf(`
19
apiVersion: kuma.io/v1alpha1
20
kind: Mesh
21
metadata:
22
  name: %s
23
spec:
24
  tracing:
25
    defaultBackend: zipkin
26
    backends:
27
    - name: zipkin
28
      type: zipkin
29
      conf:
30
        url: %s
31
`, name, zipkinURL)
32
}
33

34
func trafficTrace(mesh, namespace string) string {
35
	return fmt.Sprintf(`
36
apiVersion: kuma.io/v1alpha1
37
kind: TrafficTrace
38
mesh: %s
39
metadata:
40
  namespace: %s
41
  name: trace-all
42
spec:
43
  selectors:
44
  - match:
45
      kuma.io/service: '*'
46
`, mesh, namespace)
47
}
48

49
func Tracing() {
50
	ns := "tracing"
51
	obsNs := "obs-tracing"
52
	obsDeployment := "obs-tracing-deployment"
53
	mesh := "tracing"
54

55
	var obsClient obs.Observability
56
	BeforeAll(func() {
57
		err := NewClusterSetup().
58
			Install(NamespaceWithSidecarInjection(ns)).
59
			Install(MeshKubernetes(mesh)).
60
			Install(democlient.Install(democlient.WithNamespace(ns), democlient.WithMesh(mesh))).
61
			Install(testserver.Install(testserver.WithMesh(mesh), testserver.WithNamespace(ns))).
62
			Install(obs.Install(obsDeployment, obs.WithNamespace(obsNs), obs.WithComponents(obs.JaegerComponent))).
63
			Install(TrafficRouteKubernetes(mesh)).
64
			Install(TrafficPermissionKubernetes(mesh)).
65
			Setup(kubernetes.Cluster)
66
		Expect(err).ToNot(HaveOccurred())
67
		obsClient = obs.From(obsDeployment, kubernetes.Cluster)
68
	})
69
	E2EAfterAll(func() {
70
		Expect(kubernetes.Cluster.TriggerDeleteNamespace(ns)).To(Succeed())
71
		Expect(kubernetes.Cluster.DeleteMesh(mesh)).To(Succeed())
72
		Expect(kubernetes.Cluster.DeleteDeployment(obsDeployment)).To(Succeed())
73
	})
74

75
	It("should emit traces to jaeger", func() {
76
		// given TrafficTrace and mesh with tracing backend
77
		err := YamlK8s(meshWithTracing(mesh, obsClient.ZipkinCollectorURL()))(kubernetes.Cluster)
78
		Expect(err).ToNot(HaveOccurred())
79
		err = YamlK8s(trafficTrace(mesh, ns))(kubernetes.Cluster)
80
		Expect(err).ToNot(HaveOccurred())
81

82
		Eventually(func(g Gomega) {
83
			_, err := client.CollectEchoResponse(
84
				kubernetes.Cluster, "demo-client", "test-server",
85
				client.FromKubernetesPod(ns, "demo-client"),
86
			)
87
			g.Expect(err).ToNot(HaveOccurred())
88
			// then traces are published
89
			srvs, err := obsClient.TracedServices()
90
			g.Expect(err).ToNot(HaveOccurred())
91
			g.Expect(srvs).To(Equal([]string{
92
				fmt.Sprintf("demo-client_%s_svc", ns),
93
				"jaeger-query",
94
				fmt.Sprintf("test-server_%s_svc_80", ns),
95
			}))
96
		}, "30s", "1s").Should(Succeed())
97
	})
98
}
99

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

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

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

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