...
1
16
17 package kubeadm
18
19 import (
20 "context"
21
22 "github.com/onsi/ginkgo/v2"
23
24 rbacv1 "k8s.io/api/rbac/v1"
25 "k8s.io/apimachinery/pkg/util/version"
26 admissionapi "k8s.io/pod-security-admission/api"
27
28 "k8s.io/kubernetes/test/e2e/framework"
29 e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper"
30 )
31
32 const (
33 kubeadmClusterAdminsGroupAndCRB = "kubeadm:cluster-admins"
34 clusterAdminClusterRole = "cluster-admin"
35 )
36
37
38
39 var _ = Describe("admin", func() {
40
41
42 f := framework.NewDefaultFramework("admin")
43 f.NamespacePodSecurityLevel = admissionapi.LevelPrivileged
44
45
46
47 f.SkipNamespaceCreation = true
48
49 ginkgo.It("kubeadm:cluster-admins CRB must exist and be binding the cluster-admin ClusterRole"+
50 " to the kubeadm:cluster-admins Group", func(ctx context.Context) {
51
52
53
54
55
56 m := getClusterConfiguration(f.ClientSet)
57 const verKey = "kubernetesVersion"
58 verInterface, exists := m[verKey]
59 if !exists {
60 framework.Failf("the kubeadm ConfigMap %s is missing a %s key in %s",
61 kubeadmConfigName,
62 verKey,
63 kubeadmConfigClusterConfigurationConfigMapKey)
64 }
65
66
67 verStr, ok := verInterface.(string)
68 if !ok {
69 framework.Failf("cannot cast %s to string", verKey)
70 }
71 ver, err := version.ParseSemantic(verStr)
72 if err != nil {
73 framework.Failf("could not parse the %s key: %v", verKey, err)
74 }
75
76
77 minVer := version.MustParseSemantic("v1.29.0-alpha.2.188+05076de57fc49f")
78 if !ver.AtLeast(minVer) {
79 e2eskipper.Skipf("Skipping because version %s is older than the minimum version %s",
80 ver,
81 minVer)
82 }
83
84
85 ExpectClusterRoleBindingWithSubjectAndRole(f.ClientSet,
86 kubeadmClusterAdminsGroupAndCRB,
87 rbacv1.GroupKind, kubeadmClusterAdminsGroupAndCRB,
88 clusterAdminClusterRole,
89 )
90 })
91 })
92
View as plain text