...
1
16
17 package kubeadm
18
19 import (
20 "context"
21
22 authv1 "k8s.io/api/authorization/v1"
23 rbacv1 "k8s.io/api/rbac/v1"
24 bootstrapapi "k8s.io/cluster-bootstrap/token/api"
25 "k8s.io/kubernetes/test/e2e/framework"
26 admissionapi "k8s.io/pod-security-admission/api"
27
28 "github.com/onsi/ginkgo/v2"
29 "github.com/onsi/gomega"
30 )
31
32 const (
33 clusterInfoConfigMapName = "cluster-info"
34 clusterInfoRoleName = "kubeadm:bootstrap-signer-clusterinfo"
35 clusterInfoRoleBindingName = clusterInfoRoleName
36 )
37
38 var (
39 clusterInfoConfigMapResource = &authv1.ResourceAttributes{
40 Namespace: kubePublicNamespace,
41 Name: clusterInfoConfigMapName,
42 Resource: "configmaps",
43 Verb: "get",
44 }
45 )
46
47
48
49
50 var _ = Describe("cluster-info ConfigMap", func() {
51
52
53 f := framework.NewDefaultFramework("cluster-info")
54 f.NamespacePodSecurityLevel = admissionapi.LevelPrivileged
55
56
57
58 f.SkipNamespaceCreation = true
59
60 ginkgo.It("should exist and be properly configured", func(ctx context.Context) {
61
62 cm := GetConfigMap(f.ClientSet, kubePublicNamespace, clusterInfoConfigMapName)
63
64 gomega.Expect(cm.Data).To(gomega.HaveKey(gomega.HavePrefix(bootstrapapi.JWSSignatureKeyPrefix)))
65 gomega.Expect(cm.Data).To(gomega.HaveKey(bootstrapapi.KubeConfigKey))
66
67
68 })
69
70 ginkgo.It("should have related Role and RoleBinding", func(ctx context.Context) {
71
72 ExpectRole(f.ClientSet, kubePublicNamespace, clusterInfoRoleName)
73 ExpectRoleBinding(f.ClientSet, kubePublicNamespace, clusterInfoRoleBindingName)
74 })
75
76 ginkgo.It("should be accessible for anonymous", func(ctx context.Context) {
77 ExpectSubjectHasAccessToResource(f.ClientSet,
78 rbacv1.UserKind, anonymousUser,
79 clusterInfoConfigMapResource,
80 )
81 })
82 })
83
View as plain text