kuma

Форк
0
/
wait_for_envoy.go 
75 строк · 2.0 Кб
1
package graceful
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"
11
	"github.com/kumahq/kuma/test/framework/deployments/testserver"
12
	"github.com/kumahq/kuma/test/framework/envs/kubernetes"
13
)
14

15
func WaitForEnvoyReady() {
16
	namespace := "wait-for-envoy"
17
	meshName := "wait-for-envoy"
18

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

31
	E2EAfterAll(func() {
32
		Expect(kubernetes.Cluster.TriggerDeleteNamespace(namespace)).To(Succeed())
33
		Expect(kubernetes.Cluster.DeleteMesh(meshName)).To(Succeed())
34
	})
35

36
	It("should setup connectivity before app starts", func() {
37
		// the pod simulates what many app does which is connecting to external destination (like a database) immediately
38
		// restartPolicy is Never so if we fail we won't restart and the test fails.
39
		err := NewClusterSetup().
40
			Install(YamlK8s(fmt.Sprintf(`
41
apiVersion: v1
42
kind: Pod
43
metadata:
44
  name: wait-for-envoy
45
  namespace: %s
46
  labels:
47
    app: wait-for-envoy
48
  annotations:
49
    kuma.io/mesh: %s
50
    kuma.io/wait-for-dataplane-ready: "true"
51
spec:
52
  restartPolicy: Never
53
  containers:
54
  - name: alpine
55
    image: %s
56
    args:
57
    - /bin/bash
58
    - -c
59
    - --
60
    - 'curl --max-time 3 --fail test-server_wait-for-envoy_svc_80.mesh && test-server echo --port 80'
61
    readinessProbe:
62
      httpGet:
63
        path: /
64
        port: 80
65
      successThreshold: 1
66
    resources:
67
      limits:
68
        cpu: 50m
69
        memory: 64Mi`, namespace, meshName, framework.Config.GetUniversalImage()))).
70
			Install(framework.WaitNumPods(namespace, 1, "wait-for-envoy")).
71
			Install(framework.WaitPodsAvailable(namespace, "wait-for-envoy")).
72
			Setup(kubernetes.Cluster)
73
		Expect(err).ToNot(HaveOccurred())
74
	})
75
}
76

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

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

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

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