@@ -36,6 +36,7 @@ import (
36
36
"k8s.io/kubernetes/pkg/apis/rbac"
37
37
rbacapiv1alpha1 "k8s.io/kubernetes/pkg/apis/rbac/v1alpha1"
38
38
rbacapiv1beta1 "k8s.io/kubernetes/pkg/apis/rbac/v1beta1"
39
+ coreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
39
40
rbacclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/rbac/internalversion"
40
41
"k8s.io/kubernetes/pkg/client/retry"
41
42
"k8s.io/kubernetes/pkg/registry/rbac/clusterrole"
@@ -132,6 +133,13 @@ func PostStartHook(hookContext genericapiserver.PostStartHookContext) error {
132
133
// intializing roles is really important. On some e2e runs, we've seen cases where etcd is down when the server
133
134
// starts, the roles don't initialize, and nothing works.
134
135
err := wait .Poll (1 * time .Second , 30 * time .Second , func () (done bool , err error ) {
136
+
137
+ coreclientset , err := coreclient .NewForConfig (hookContext .LoopbackClientConfig )
138
+ if err != nil {
139
+ utilruntime .HandleError (fmt .Errorf ("unable to initialize client: %v" , err ))
140
+ return false , nil
141
+ }
142
+
135
143
clientset , err := rbacclient .NewForConfig (hookContext .LoopbackClientConfig )
136
144
if err != nil {
137
145
utilruntime .HandleError (fmt .Errorf ("unable to initialize client: %v" , err ))
@@ -210,7 +218,7 @@ func PostStartHook(hookContext genericapiserver.PostStartHookContext) error {
210
218
for _ , role := range roles {
211
219
opts := reconciliation.ReconcileRoleOptions {
212
220
Role : reconciliation.RoleRuleOwner {Role : & role },
213
- Client : reconciliation.RoleModifier {Client : clientset },
221
+ Client : reconciliation.RoleModifier {Client : clientset , NamespaceClient : coreclientset . Namespaces () },
214
222
Confirm : true ,
215
223
}
216
224
err := retry .RetryOnConflict (retry .DefaultBackoff , func () error {
@@ -240,7 +248,7 @@ func PostStartHook(hookContext genericapiserver.PostStartHookContext) error {
240
248
for _ , roleBinding := range roleBindings {
241
249
opts := reconciliation.ReconcileRoleBindingOptions {
242
250
RoleBinding : reconciliation.RoleBindingAdapter {RoleBinding : & roleBinding },
243
- Client : reconciliation.RoleBindingClientAdapter {Client : clientset },
251
+ Client : reconciliation.RoleBindingClientAdapter {Client : clientset , NamespaceClient : coreclientset . Namespaces () },
244
252
Confirm : true ,
245
253
}
246
254
err := retry .RetryOnConflict (retry .DefaultBackoff , func () error {
0 commit comments