@@ -92,6 +92,7 @@ func TestInitFederation(t *testing.T) {
92
92
federation string
93
93
kubeconfigGlobal string
94
94
kubeconfigExplicit string
95
+ kubeconfigForCredentials string
95
96
dnsZoneName string
96
97
lbIP string
97
98
apiserverServiceType v1.ServiceType
@@ -221,6 +222,28 @@ func TestInitFederation(t *testing.T) {
221
222
apiserverEnableTokenAuth : true ,
222
223
isRBACAPIAvailable : true ,
223
224
},
225
+ // This test checks if init works ok when a RBAC usage is overridden
226
+ // using a credentials kubeconfig (even when RBAC API is available).
227
+ // The same (or default) kubeconfig can be used for both flags.
228
+ {
229
+ federation : "union" ,
230
+ kubeconfigGlobal : fakeKubeFiles [0 ],
231
+ kubeconfigForCredentials : fakeKubeFiles [0 ],
232
+ dnsZoneName : "example.test." ,
233
+ apiserverServiceType : v1 .ServiceTypeNodePort ,
234
+ advertiseAddress : nodeIP ,
235
+ serverImage : "example.test/foo:bar" ,
236
+ imagePullPolicy : "IfNotPresent" ,
237
+ etcdImage : "gcr.io/google_containers/etcd:latest" ,
238
+ etcdPVCapacity : "5Gi" ,
239
+ etcdPVStorageClass : "fast" ,
240
+ etcdPersistence : "true" ,
241
+ expectedErr : "" ,
242
+ dryRun : "" ,
243
+ apiserverEnableHTTPBasicAuth : true ,
244
+ apiserverEnableTokenAuth : true ,
245
+ isRBACAPIAvailable : true ,
246
+ },
224
247
}
225
248
226
249
defaultEtcdImage := "gcr.io/google_containers/etcd:3.1.10"
@@ -261,7 +284,7 @@ func TestInitFederation(t *testing.T) {
261
284
tc .imagePullPolicy = "IfNotPresent"
262
285
}
263
286
264
- hostFactory , err := fakeInitHostFactory (tc .apiserverServiceType , tc .federation , util .DefaultFederationSystemNamespace , tc .advertiseAddress , tc .lbIP , tc .dnsZoneName , tc .serverImage , tc .etcdImage , tc .dnsProvider , tc .dnsProviderConfig , tc .etcdPersistence , tc .etcdPVCapacity , tc .etcdPVStorageClass , tc .apiserverArgOverrides , tc .cmArgOverrides , tmpDirPath , tc .apiserverEnableHTTPBasicAuth , tc .apiserverEnableTokenAuth , tc .isRBACAPIAvailable , tc .nodeSelector , tc .imagePullPolicy , tc .imagePullSecrets )
287
+ hostFactory , err := fakeInitHostFactory (tc .apiserverServiceType , tc .federation , util .DefaultFederationSystemNamespace , tc .advertiseAddress , tc .lbIP , tc .dnsZoneName , tc .serverImage , tc .etcdImage , tc .dnsProvider , tc .dnsProviderConfig , tc .etcdPersistence , tc .etcdPVCapacity , tc .etcdPVStorageClass , tc .apiserverArgOverrides , tc .cmArgOverrides , tmpDirPath , tc .apiserverEnableHTTPBasicAuth , tc .apiserverEnableTokenAuth , tc .isRBACAPIAvailable , tc .nodeSelector , tc .imagePullPolicy , tc .imagePullSecrets , tc . kubeconfigForCredentials )
265
288
if err != nil {
266
289
t .Fatalf ("[%d] unexpected error: %v" , i , err )
267
290
}
@@ -274,6 +297,7 @@ func TestInitFederation(t *testing.T) {
274
297
cmd := NewCmdInit (buf , adminConfig , "serverImage" , defaultEtcdImage )
275
298
276
299
cmd .Flags ().Set ("kubeconfig" , tc .kubeconfigExplicit )
300
+ cmd .Flags ().Set ("use-credentials-kubeconfig" , tc .kubeconfigForCredentials )
277
301
cmd .Flags ().Set ("host-cluster-context" , "substrate" )
278
302
cmd .Flags ().Set ("dns-zone-name" , tc .dnsZoneName )
279
303
cmd .Flags ().Set ("image" , tc .serverImage )
@@ -643,7 +667,7 @@ func TestCertsHTTPS(t *testing.T) {
643
667
}
644
668
}
645
669
646
- func fakeInitHostFactory (apiserverServiceType v1.ServiceType , federationName , namespaceName , advertiseAddress , lbIp , dnsZoneName , serverImage , etcdImage , dnsProvider , dnsProviderConfig , etcdPersistence , etcdPVCapacity , etcdPVStorageClass , apiserverOverrideArg , cmOverrideArg , tmpDirPath string , apiserverEnableHTTPBasicAuth , apiserverEnableTokenAuth , isRBACAPIAvailable bool , nodeSelectorString string , imagePullPolicy , imagePullSecrets string ) (cmdutil.Factory , error ) {
670
+ func fakeInitHostFactory (apiserverServiceType v1.ServiceType , federationName , namespaceName , advertiseAddress , lbIp , dnsZoneName , serverImage , etcdImage , dnsProvider , dnsProviderConfig , etcdPersistence , etcdPVCapacity , etcdPVStorageClass , apiserverOverrideArg , cmOverrideArg , tmpDirPath string , apiserverEnableHTTPBasicAuth , apiserverEnableTokenAuth , isRBACAPIAvailable bool , nodeSelectorString string , imagePullPolicy , imagePullSecrets , kubeconfigForCredentials string ) (cmdutil.Factory , error ) {
647
671
svcName := "apiserver"
648
672
svcUrlPrefix := "/api/v1/namespaces/federation-system/services"
649
673
credSecretName := "apiserver" + "-credentials"
@@ -1106,7 +1130,7 @@ func fakeInitHostFactory(apiserverServiceType v1.ServiceType, federationName, na
1106
1130
},
1107
1131
},
1108
1132
}
1109
- if isRBACAPIAvailable {
1133
+ if isRBACAPIAvailable && ( kubeconfigForCredentials == "" ) {
1110
1134
cm .Spec .Template .Spec .ServiceAccountName = "federation-controller-manager"
1111
1135
cm .Spec .Template .Spec .DeprecatedServiceAccount = "federation-controller-manager"
1112
1136
}
0 commit comments