...
1
16
17 package bootstrap
18
19 import (
20 "context"
21 "time"
22
23 "github.com/onsi/ginkgo/v2"
24
25 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
26 clientset "k8s.io/client-go/kubernetes"
27 bootstrapapi "k8s.io/cluster-bootstrap/token/api"
28 "k8s.io/kubernetes/test/e2e/feature"
29 "k8s.io/kubernetes/test/e2e/framework"
30 "k8s.io/kubernetes/test/e2e/lifecycle"
31 admissionapi "k8s.io/pod-security-admission/api"
32 )
33
34 var secretNeedClean string
35 var _ = lifecycle.SIGDescribe(feature.BootstrapTokens, func() {
36
37 var c clientset.Interface
38
39 f := framework.NewDefaultFramework("bootstrap-token-cleaner")
40 f.NamespacePodSecurityLevel = admissionapi.LevelPrivileged
41
42 ginkgo.BeforeEach(func() {
43 c = f.ClientSet
44 })
45
46 ginkgo.AfterEach(func(ctx context.Context) {
47 if len(secretNeedClean) > 0 {
48 ginkgo.By("delete the bootstrap token secret")
49 err := c.CoreV1().Secrets(metav1.NamespaceSystem).Delete(ctx, secretNeedClean, metav1.DeleteOptions{})
50 secretNeedClean = ""
51 framework.ExpectNoError(err)
52 }
53 })
54 ginkgo.It("should delete the token secret when the secret expired", func(ctx context.Context) {
55 ginkgo.By("create a new expired bootstrap token secret")
56 tokenID, err := GenerateTokenID()
57 framework.ExpectNoError(err)
58 tokenSecret, err := GenerateTokenSecret()
59 framework.ExpectNoError(err)
60
61 secret := newTokenSecret(tokenID, tokenSecret)
62 addSecretExpiration(secret, TimeStringFromNow(-time.Hour))
63 _, err = c.CoreV1().Secrets(metav1.NamespaceSystem).Create(ctx, secret, metav1.CreateOptions{})
64
65 framework.ExpectNoError(err)
66
67 ginkgo.By("wait for the bootstrap token secret be deleted")
68 err = WaitForBootstrapTokenSecretToDisappear(c, tokenID)
69 framework.ExpectNoError(err)
70 })
71
72 ginkgo.It("should not delete the token secret when the secret is not expired", func(ctx context.Context) {
73 ginkgo.By("create a new expired bootstrap token secret")
74 tokenID, err := GenerateTokenID()
75 framework.ExpectNoError(err)
76 tokenSecret, err := GenerateTokenSecret()
77 framework.ExpectNoError(err)
78 secret := newTokenSecret(tokenID, tokenSecret)
79 addSecretExpiration(secret, TimeStringFromNow(time.Hour))
80 _, err = c.CoreV1().Secrets(metav1.NamespaceSystem).Create(ctx, secret, metav1.CreateOptions{})
81 secretNeedClean = bootstrapapi.BootstrapTokenSecretPrefix + tokenID
82 framework.ExpectNoError(err)
83
84 ginkgo.By("wait for the bootstrap token secret not be deleted")
85 err = WaitForBootstrapTokenSecretNotDisappear(c, tokenID, 20*time.Second)
86 framework.ExpectNoError(err)
87 })
88 })
89
View as plain text