Skip to content
This repository was archived by the owner on Nov 9, 2022. It is now read-only.
This repository is currently being migrated. It's locked while the migration is in progress.

Commit eb1b5d5

Browse files
authored
Create roles for scheduling (#339)
* Create roles for scheduling * Rename scheduler roles and bindings * Rename scheduler roles and bindings
1 parent b0dfea3 commit eb1b5d5

File tree

4 files changed

+66
-16
lines changed

4 files changed

+66
-16
lines changed

pkg/storageos/deploy.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,14 @@ func (s *Deployment) Deploy() error {
109109
return err
110110
}
111111

112+
if err := s.createClusterRoleForSchedulerExtenderVolumeChecker(); err != nil {
113+
return err
114+
}
115+
116+
if err := s.createClusterRoleBindingForSchedulerExtenderVolumeChecker(); err != nil {
117+
return err
118+
}
119+
112120
if err := s.createClusterRoleForKeyMgmt(); err != nil {
113121
return err
114122
}

pkg/storageos/rbac.go

Lines changed: 52 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,11 @@ const (
3838
NFSClusterRoleName = "storageos:nfs-provisioner"
3939
NFSClusterBindingName = "storageos:nfs-provisioner"
4040

41-
SchedulerClusterRoleName = "storageos:scheduler-extender"
42-
SchedulerClusterBindingName = "storageos:scheduler-extender"
41+
SchedulerExtenderClusterRoleName = "storageos:scheduler-extender"
42+
SchedulerExtenderClusterBindingName = "storageos:scheduler-extender"
43+
44+
SchedulerExtenderVolumeCheckerClusterRoleName = "storageos:scheduler-extender-vol-checker"
45+
SchedulerExtenderVolumeCheckerClusterBindingName = "storageos:scheduler-extender-vol-checker"
4346

4447
InitClusterRoleName = "storageos:init"
4548
InitClusterBindingName = "storageos:init"
@@ -339,9 +342,9 @@ func (s *Deployment) createClusterRoleForResizer() error {
339342
return s.k8sResourceManager.ClusterRole(CSIResizerClusterRoleName, nil, rules).Create()
340343
}
341344

342-
// createClusterRoleForScheduler creates a ClusterRole resource for scheduler
345+
// createClusterRoleForSchedulerExtender creates a ClusterRole resource for scheduler
343346
// extender with all the permissions required by kube-scheduler.
344-
func (s *Deployment) createClusterRoleForScheduler() error {
347+
func (s *Deployment) createClusterRoleForSchedulerExtender() error {
345348
rules := []rbacv1.PolicyRule{
346349
{
347350
APIGroups: []string{""},
@@ -386,7 +389,28 @@ func (s *Deployment) createClusterRoleForScheduler() error {
386389
Verbs: []string{"get", "create", "update"},
387390
},
388391
}
389-
return s.k8sResourceManager.ClusterRole(SchedulerClusterRoleName, nil, rules).Create()
392+
return s.k8sResourceManager.ClusterRole(SchedulerExtenderClusterRoleName, nil, rules).Create()
393+
}
394+
395+
// createClusterRoleForSchedulerExtenderVolumeChecker creates a ClusterRole resource for scheduler
396+
// extender with all the permissions required by custom scheduler extender.
397+
func (s *Deployment) createClusterRoleForSchedulerExtenderVolumeChecker() error {
398+
rules := []rbacv1.PolicyRule{
399+
{
400+
APIGroups: []string{""},
401+
Resources: []string{
402+
"persistentvolumes",
403+
"persistentvolumeclaims",
404+
},
405+
Verbs: []string{"get"},
406+
},
407+
{
408+
APIGroups: []string{"storage.k8s.io"},
409+
Resources: []string{"storageclasses"},
410+
Verbs: []string{"get"},
411+
},
412+
}
413+
return s.k8sResourceManager.ClusterRole(SchedulerExtenderVolumeCheckerClusterRoleName, nil, rules).Create()
390414
}
391415

392416
func (s *Deployment) createClusterRoleBindingForKeyMgmt() error {
@@ -582,9 +606,9 @@ func (s *Deployment) createClusterRoleBindingForSCC() error {
582606
return s.k8sResourceManager.ClusterRoleBinding(OpenShiftSCCClusterBindingName, nil, subjects, roleRef).Create()
583607
}
584608

585-
// createClusterRoleBindingForScheduler creates a cluster role binding for the
586-
// scheduler extender.
587-
func (s *Deployment) createClusterRoleBindingForScheduler() error {
609+
// createClusterRoleBindingForSchedulerExtender creates a cluster role binding for the
610+
// kube-scheduler.
611+
func (s *Deployment) createClusterRoleBindingForSchedulerExtender() error {
588612
subjects := []rbacv1.Subject{
589613
{
590614
Kind: "ServiceAccount",
@@ -594,10 +618,28 @@ func (s *Deployment) createClusterRoleBindingForScheduler() error {
594618
}
595619
roleRef := &rbacv1.RoleRef{
596620
Kind: "ClusterRole",
597-
Name: SchedulerClusterRoleName,
621+
Name: SchedulerExtenderClusterRoleName,
622+
APIGroup: "rbac.authorization.k8s.io",
623+
}
624+
return s.k8sResourceManager.ClusterRoleBinding(SchedulerExtenderClusterBindingName, nil, subjects, roleRef).Create()
625+
}
626+
627+
// createClusterRoleBindingForScheduler creates a cluster role binding for the
628+
// custom scheduler extender.
629+
func (s *Deployment) createClusterRoleBindingForSchedulerExtenderVolumeChecker() error {
630+
subjects := []rbacv1.Subject{
631+
{
632+
Kind: "ServiceAccount",
633+
Name: DaemonsetSA,
634+
Namespace: s.stos.Spec.GetResourceNS(),
635+
},
636+
}
637+
roleRef := &rbacv1.RoleRef{
638+
Kind: "ClusterRole",
639+
Name: SchedulerExtenderVolumeCheckerClusterRoleName,
598640
APIGroup: "rbac.authorization.k8s.io",
599641
}
600-
return s.k8sResourceManager.ClusterRoleBinding(SchedulerClusterBindingName, nil, subjects, roleRef).Create()
642+
return s.k8sResourceManager.ClusterRoleBinding(SchedulerExtenderVolumeCheckerClusterBindingName, nil, subjects, roleRef).Create()
601643
}
602644

603645
// createClusterRoleForInit creates cluster role for the init container. This is

pkg/storageos/scheduler_extender.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@ func (s *Deployment) createSchedulerExtender() error {
2929
}
3030

3131
// Create RBAC related resources.
32-
if err := s.createClusterRoleForScheduler(); err != nil {
32+
if err := s.createClusterRoleForSchedulerExtender(); err != nil {
3333
return err
3434
}
3535
if err := s.createServiceAccountForScheduler(); err != nil {
3636
return err
3737
}
38-
if err := s.createClusterRoleBindingForScheduler(); err != nil {
38+
if err := s.createClusterRoleBindingForSchedulerExtender(); err != nil {
3939
return err
4040
}
4141

@@ -103,13 +103,13 @@ func (s Deployment) deleteSchedulerExtender() error {
103103
if err := s.k8sResourceManager.ConfigMap(policyConfigMapName, namespace, nil, nil).Delete(); err != nil {
104104
return err
105105
}
106-
if err := s.k8sResourceManager.ClusterRoleBinding(SchedulerClusterBindingName, nil, nil, nil).Delete(); err != nil {
106+
if err := s.k8sResourceManager.ClusterRoleBinding(SchedulerExtenderClusterBindingName, nil, nil, nil).Delete(); err != nil {
107107
return err
108108
}
109109
if err := s.k8sResourceManager.ServiceAccount(SchedulerSA, namespace, nil).Delete(); err != nil {
110110
return err
111111
}
112-
if err := s.k8sResourceManager.ClusterRole(SchedulerClusterRoleName, nil, nil).Delete(); err != nil {
112+
if err := s.k8sResourceManager.ClusterRole(SchedulerExtenderClusterRoleName, nil, nil).Delete(); err != nil {
113113
return err
114114
}
115115
return nil

test/e2e.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,14 +211,14 @@ operator-sdk-e2e-cleanup() {
211211
kubectl delete clusterrole storageos:csi-attacher \
212212
storageos:csi-provisioner storageos:driver-registrar \
213213
storageos:openshift-scc storageos:pod-fencer \
214-
storageos:scheduler-extender storageos:init \
214+
storageos:scheduler-extender storageos:scheduler-extender-vol-checker storageos:init \
215215
storageos:nfs-provisioner --ignore-not-found=true
216216

217217
# Delete all the cluster role bindings.
218218
kubectl delete clusterrolebinding storageos:csi-attacher \
219219
storageos:csi-provisioner storageos:driver-registrar \
220220
storageos:k8s-driver-registrar storageos:openshift-scc \
221-
storageos:pod-fencer storageos:scheduler-extender \
221+
storageos:pod-fencer storageos:scheduler-extender storageos:scheduler-extender-vol-checker \
222222
storageos:init storageos:nfs-provisioner --ignore-not-found=true
223223

224224
# Delete NFSServer statefulset.

0 commit comments

Comments
 (0)