@@ -147,12 +147,13 @@ func BuildGenericConfig(
147
147
return
148
148
}
149
149
150
- genericConfig .Authorization .Authorizer , genericConfig .RuleResolver , err = BuildAuthorizer (s , genericConfig .EgressSelector , versionedInformers )
150
+ var enablesRBAC bool
151
+ genericConfig .Authorization .Authorizer , genericConfig .RuleResolver , enablesRBAC , err = BuildAuthorizer (s , genericConfig .EgressSelector , versionedInformers )
151
152
if err != nil {
152
153
lastErr = fmt .Errorf ("invalid authorization config: %v" , err )
153
154
return
154
155
}
155
- if s .Authorization != nil && ! sets . NewString ( s . Authorization . Modes ... ). Has ( modes . ModeRBAC ) {
156
+ if s .Authorization != nil && ! enablesRBAC {
156
157
genericConfig .DisabledPostStartHooks .Insert (rbacrest .PostStartHookName )
157
158
}
158
159
@@ -168,25 +169,35 @@ func BuildGenericConfig(
168
169
return
169
170
}
170
171
171
- // BuildAuthorizer constructs the authorizer. If authorization is not set in s, it returns nil, nil, nil
172
- func BuildAuthorizer (s controlplaneapiserver.CompletedOptions , EgressSelector * egressselector.EgressSelector , versionedInformers clientgoinformers.SharedInformerFactory ) (authorizer.Authorizer , authorizer.RuleResolver , error ) {
172
+ // BuildAuthorizer constructs the authorizer. If authorization is not set in s, it returns nil, nil, false, nil
173
+ func BuildAuthorizer (s controlplaneapiserver.CompletedOptions , egressSelector * egressselector.EgressSelector , versionedInformers clientgoinformers.SharedInformerFactory ) (authorizer.Authorizer , authorizer.RuleResolver , bool , error ) {
173
174
authorizationConfig , err := s .Authorization .ToAuthorizationConfig (versionedInformers )
174
175
if err != nil {
175
- return nil , nil , err
176
+ return nil , nil , false , err
176
177
}
177
178
if authorizationConfig == nil {
178
- return nil , nil , nil
179
+ return nil , nil , false , nil
179
180
}
180
181
181
- if EgressSelector != nil {
182
- egressDialer , err := EgressSelector .Lookup (egressselector .ControlPlane .AsNetworkContext ())
182
+ if egressSelector != nil {
183
+ egressDialer , err := egressSelector .Lookup (egressselector .ControlPlane .AsNetworkContext ())
183
184
if err != nil {
184
- return nil , nil , err
185
+ return nil , nil , false , err
185
186
}
186
187
authorizationConfig .CustomDial = egressDialer
187
188
}
188
189
189
- return authorizationConfig .New ()
190
+ enablesRBAC := false
191
+ for _ , a := range authorizationConfig .AuthorizationConfiguration .Authorizers {
192
+ if string (a .Type ) == modes .ModeRBAC {
193
+ enablesRBAC = true
194
+ break
195
+ }
196
+ }
197
+
198
+ authorizer , ruleResolver , err := authorizationConfig .New ()
199
+
200
+ return authorizer , ruleResolver , enablesRBAC , err
190
201
}
191
202
192
203
// CreatePeerEndpointLeaseReconciler creates a apiserver endpoint lease reconciliation loop
0 commit comments