kuma

Форк
0
76 строк · 1.9 Кб
1
package graceful
2

3
import (
4
	"github.com/gruntwork-io/terratest/modules/k8s"
5
	. "github.com/onsi/ginkgo/v2"
6
	. "github.com/onsi/gomega"
7

8
	. "github.com/kumahq/kuma/test/framework"
9
	"github.com/kumahq/kuma/test/framework/envs/kubernetes"
10
)
11

12
func Eviction() {
13
	nsName := "eviction"
14
	meshName := "eviction"
15

16
	BeforeAll(func() {
17
		err := NewClusterSetup().
18
			Install(NamespaceWithSidecarInjection(nsName)).
19
			Install(MeshKubernetes(meshName)).
20
			Setup(kubernetes.Cluster)
21
		Expect(err).ToNot(HaveOccurred())
22
	})
23

24
	E2EAfterAll(func() {
25
		Expect(kubernetes.Cluster.TriggerDeleteNamespace(nsName)).To(Succeed())
26
		Expect(kubernetes.Cluster.DeleteMesh(meshName)).To(Succeed())
27
	})
28

29
	It("remove Dataplane of evicted Pod", func() {
30
		evictionPod := `apiVersion: v1
31
kind: Pod
32
metadata:
33
  name: to-be-evicted
34
  namespace: eviction
35
  annotations:
36
    kuma.io/mesh: eviction
37
spec:
38
  volumes:
39
  containers:
40
  - name: alpine-evict
41
    image: alpine
42
    args:
43
    - /bin/ash
44
    - -c
45
    - --
46
    - "while true; do cat /usr/bin/* ; done"
47
    resources:
48
      limits:
49
        cpu: 50m
50
        ephemeral-storage: 10Ki
51
        memory: 64Mi`
52

53
		// when faulty pod is applied
54
		Expect(kubernetes.Cluster.Install(YamlK8s(evictionPod))).To(Succeed())
55

56
		// when it's evicted
57
		Eventually(func(g Gomega) {
58
			out, err := k8s.RunKubectlAndGetOutputE(
59
				kubernetes.Cluster.GetTesting(),
60
				kubernetes.Cluster.GetKubectlOptions(nsName),
61
				"get",
62
				"pod", "to-be-evicted",
63
				"-o", "go-template=\"{{.status.reason}}\"",
64
			)
65
			g.Expect(err).ToNot(HaveOccurred())
66
			g.Expect(out).To(ContainSubstring("Evicted"))
67
		}, "60s", "1s").Should(Succeed())
68

69
		// then Dataplane is removed
70
		Eventually(func(g Gomega) {
71
			dataplanes, err := kubernetes.Cluster.GetKumactlOptions().KumactlList("dataplanes", meshName)
72
			g.Expect(err).ToNot(HaveOccurred())
73
			g.Expect(dataplanes).ShouldNot(ContainElement(ContainSubstring("to-be-evicted")))
74
		}, "60s", "1s").Should(Succeed())
75
	})
76
}
77

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

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

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

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