Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions cmd/machine-api-operator/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,10 +80,7 @@ func startControllers(ctx *ControllerContext) error {
startOpts.imagesFile,

config,
ctx.KubeNamespacedInformerFactory.Core().V1().ServiceAccounts(),
ctx.KubeNamespacedInformerFactory.Apps().V1().Deployments(),
ctx.KubeNamespacedInformerFactory.Rbac().V1().ClusterRoles(),
ctx.KubeNamespacedInformerFactory.Rbac().V1().ClusterRoleBindings(),

ctx.ClientBuilder.KubeClientOrDie(componentName),
ctx.ClientBuilder.OpenshiftClientOrDie(componentName),
Expand Down
133 changes: 125 additions & 8 deletions install/0000_30_machine-api-operator_08_rbac.yaml
Original file line number Diff line number Diff line change
@@ -1,13 +1,130 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
creationTimestamp: null
name: machine-api-manager
rules:
- apiGroups:
- cluster.k8s.io
resources:
- '*'
verbs:
- '*'

- apiGroups:
- machine.openshift.io
resources:
- '*'
verbs:
- '*'

- apiGroups:
- healthchecking.openshift.io
resources:
- '*'
verbs:
- '*'

- apiGroups:
- config.openshift.io
resources:
- clusteroperators
- clusteroperators/status
verbs:
- create
- get
- update

- apiGroups:
- apps
resources:
- deployments
verbs:
- get
- list
- watch
- create
- update
- patch
- delete

- apiGroups:
- ""
resources:
- nodes
verbs:
- get
- list
- watch
- create
- update
- patch
- delete

- apiGroups:
- ""
resources:
- events
verbs:
- create

- apiGroups:
- ""
resources:
- configmaps
verbs:
- get
- list
- watch
- create
- update
- patch
- delete

- apiGroups:
- ""
resources:
- secrets
verbs:
- get
- list
- watch

- apiGroups:
- ""
resources:
- pods
verbs:
- get
- list
- watch

- apiGroups:
- ""
resources:
- pods/eviction
verbs:
- create

- apiGroups:
- extensions
resources:
- daemonsets
verbs:
- get
- list
- watch

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: default-account-openshift-machine-api
subjects:
- kind: ServiceAccount
name: default
namespace: openshift-machine-api
name: machine-api-manager-rolebinding
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: machine-api-manager
subjects:
- kind: ServiceAccount
name: default
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we create a dedicated service account? It's not much more trouble, and it means random pods started in the namespace don't get elevated permissions.

namespace: openshift-machine-api
12 changes: 0 additions & 12 deletions owned-manifests/clusterapi-manager-cluster-role-binding.yaml

This file was deleted.

65 changes: 0 additions & 65 deletions owned-manifests/clusterapi-manager-cluster-role.yaml

This file was deleted.

8 changes: 0 additions & 8 deletions pkg/operator/operator.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@ import (
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apimachinery/pkg/util/wait"
appsinformersv1 "k8s.io/client-go/informers/apps/v1"
coreinformersv1 "k8s.io/client-go/informers/core/v1"
rbacinformersv1 "k8s.io/client-go/informers/rbac/v1"
"k8s.io/client-go/kubernetes"
coreclientsetv1 "k8s.io/client-go/kubernetes/typed/core/v1"
appslisterv1 "k8s.io/client-go/listers/apps/v1"
Expand Down Expand Up @@ -60,10 +58,7 @@ func New(

config string,

serviceAccountInfomer coreinformersv1.ServiceAccountInformer,
deployInformer appsinformersv1.DeploymentInformer,
clusterRoleInformer rbacinformersv1.ClusterRoleInformer,
clusterRoleBindingInformer rbacinformersv1.ClusterRoleBindingInformer,

kubeClient kubernetes.Interface,
osClient osclientset.Interface,
Expand All @@ -82,10 +77,7 @@ func New(
queue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "machineapioperator"),
}

serviceAccountInfomer.Informer().AddEventHandler(optr.eventHandler())
deployInformer.Informer().AddEventHandler(optr.eventHandler())
clusterRoleInformer.Informer().AddEventHandler(optr.eventHandler())
clusterRoleBindingInformer.Informer().AddEventHandler(optr.eventHandler())

optr.config = config
optr.syncHandler = optr.sync
Expand Down
18 changes: 0 additions & 18 deletions pkg/operator/sync.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,24 +51,6 @@ func (optr *Operator) syncAll(config OperatorConfig) error {
}

func (optr *Operator) syncClusterAPIController(config OperatorConfig) error {
crBytes, err := PopulateTemplate(&config, filepath.Join(ownedManifestsDir, "clusterapi-manager-cluster-role.yaml"))
if err != nil {
return err
}
cr := resourceread.ReadClusterRoleV1OrDie(crBytes)
_, _, err = resourceapply.ApplyClusterRole(optr.kubeClient.RbacV1(), cr)
if err != nil {
return err
}
crbBytes, err := PopulateTemplate(&config, filepath.Join(ownedManifestsDir, "clusterapi-manager-cluster-role-binding.yaml"))
if err != nil {
return err
}
crb := resourceread.ReadClusterRoleBindingV1OrDie(crbBytes)
_, _, err = resourceapply.ApplyClusterRoleBinding(optr.kubeClient.RbacV1(), crb)
if err != nil {
return err
}
controllerBytes, err := PopulateTemplate(&config, filepath.Join(ownedManifestsDir, "clusterapi-manager-controllers.yaml"))
if err != nil {
return err
Expand Down
8 changes: 8 additions & 0 deletions test/e2e/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,5 +115,13 @@ func runSuite() error {
return err
}
glog.Info("PASS: ExpectAutoscalerScalesOut")

glog.Info("RUN: ExpectNodeToBeDrainedBeforeMachineIsDeleted")
if err := testConfig.ExpectNodeToBeDrainedBeforeMachineIsDeleted(); err != nil {
glog.Errorf("FAIL: ExpectNodeToBeDrainedBeforeMachineIsDeleted: %v", err)
return err
}
glog.Info("PASS: ExpectNodeToBeDrainedBeforeMachineIsDeleted")

return nil
}
Loading