@@ -139,6 +139,7 @@ type (
139
139
gvr []gvr
140
140
saName string
141
141
IsInternal bool
142
+ clusterScope bool
142
143
}
143
144
144
145
summaryLogLevels string
@@ -1077,8 +1078,9 @@ func installComponents(ctx context.Context, opts *RuntimeInstallOptions, rt *run
1077
1078
version : "v1alpha1" ,
1078
1079
},
1079
1080
},
1080
- saName : store .Get ().RolloutReporterServiceAccount ,
1081
- IsInternal : true ,
1081
+ saName : store .Get ().RolloutReporterServiceAccount ,
1082
+ IsInternal : true ,
1083
+ clusterScope : true ,
1082
1084
}); err != nil {
1083
1085
return fmt .Errorf ("failed to create rollout-reporter: %w" , err )
1084
1086
}
@@ -2144,11 +2146,11 @@ func createReporter(ctx context.Context, cloneOpts *git.CloneOptions, opts *Runt
2144
2146
return err
2145
2147
}
2146
2148
2147
- if err := createReporterRBAC (repofs , resPath , opts .RuntimeName , reporterCreateOpts .saName ); err != nil {
2149
+ if err := createReporterRBAC (repofs , resPath , opts .RuntimeName , reporterCreateOpts .saName , reporterCreateOpts . clusterScope ); err != nil {
2148
2150
return err
2149
2151
}
2150
2152
2151
- if err := createReporterEventSource (repofs , resPath , opts .RuntimeName , reporterCreateOpts ); err != nil {
2153
+ if err := createReporterEventSource (repofs , resPath , opts .RuntimeName , reporterCreateOpts , reporterCreateOpts . clusterScope ); err != nil {
2152
2154
return err
2153
2155
}
2154
2156
@@ -2239,7 +2241,7 @@ func getArgoCDTokenSecret(ctx context.Context, kubeContext, namespace string, in
2239
2241
})
2240
2242
}
2241
2243
2242
- func createReporterRBAC (repofs fs.FS , path , runtimeName , saName string ) error {
2244
+ func createReporterRBAC (repofs fs.FS , path , runtimeName , saName string , clusterScope bool ) error {
2243
2245
serviceAccount := & v1.ServiceAccount {
2244
2246
TypeMeta : metav1.TypeMeta {
2245
2247
Kind : "ServiceAccount" ,
@@ -2251,15 +2253,25 @@ func createReporterRBAC(repofs fs.FS, path, runtimeName, saName string) error {
2251
2253
},
2252
2254
}
2253
2255
2256
+ roleKind := "Role"
2257
+ roleMeta := metav1.ObjectMeta {
2258
+ Name : saName ,
2259
+ Namespace : runtimeName ,
2260
+ }
2261
+
2262
+ if clusterScope {
2263
+ roleKind = "ClusterRole"
2264
+ roleMeta = metav1.ObjectMeta {
2265
+ Name : saName ,
2266
+ }
2267
+ }
2268
+
2254
2269
role := & rbacv1.Role {
2255
2270
TypeMeta : metav1.TypeMeta {
2256
- Kind : "Role" ,
2271
+ Kind : roleKind ,
2257
2272
APIVersion : "rbac.authorization.k8s.io/v1" ,
2258
2273
},
2259
- ObjectMeta : metav1.ObjectMeta {
2260
- Name : saName ,
2261
- Namespace : runtimeName ,
2262
- },
2274
+ ObjectMeta : roleMeta ,
2263
2275
Rules : []rbacv1.PolicyRule {
2264
2276
{
2265
2277
APIGroups : []string {"*" },
@@ -2269,15 +2281,25 @@ func createReporterRBAC(repofs fs.FS, path, runtimeName, saName string) error {
2269
2281
},
2270
2282
}
2271
2283
2284
+ roleBindingKind := "RoleBinding"
2285
+ roleBindingMeta := metav1.ObjectMeta {
2286
+ Name : saName ,
2287
+ Namespace : runtimeName ,
2288
+ }
2289
+
2290
+ if clusterScope {
2291
+ roleBindingKind = "ClusterRoleBinding"
2292
+ roleBindingMeta = metav1.ObjectMeta {
2293
+ Name : saName ,
2294
+ }
2295
+ }
2296
+
2272
2297
roleBinding := rbacv1.RoleBinding {
2273
2298
TypeMeta : metav1.TypeMeta {
2274
- Kind : "RoleBinding" ,
2299
+ Kind : roleBindingKind ,
2275
2300
APIVersion : "rbac.authorization.k8s.io/v1" ,
2276
2301
},
2277
- ObjectMeta : metav1.ObjectMeta {
2278
- Name : saName ,
2279
- Namespace : runtimeName ,
2280
- },
2302
+ ObjectMeta : roleBindingMeta ,
2281
2303
Subjects : []rbacv1.Subject {
2282
2304
{
2283
2305
Kind : "ServiceAccount" ,
@@ -2286,7 +2308,7 @@ func createReporterRBAC(repofs fs.FS, path, runtimeName, saName string) error {
2286
2308
},
2287
2309
},
2288
2310
RoleRef : rbacv1.RoleRef {
2289
- Kind : "Role" ,
2311
+ Kind : roleKind ,
2290
2312
Name : saName ,
2291
2313
},
2292
2314
}
@@ -2316,7 +2338,7 @@ func createEventsReporterEventSource(repofs fs.FS, path, namespace string, insec
2316
2338
return repofs .WriteYamls (repofs .Join (path , "event-source.yaml" ), eventSource )
2317
2339
}
2318
2340
2319
- func createReporterEventSource (repofs fs.FS , path , namespace string , reporterCreateOpts reporterCreateOptions ) error {
2341
+ func createReporterEventSource (repofs fs.FS , path , namespace string , reporterCreateOpts reporterCreateOptions , clusterScope bool ) error {
2320
2342
var eventSource * aev1alpha1.EventSource
2321
2343
var options * eventsutil.CreateEventSourceOptions
2322
2344
@@ -2333,12 +2355,18 @@ func createReporterEventSource(repofs fs.FS, path, namespace string, reporterCre
2333
2355
Resource : map [string ]eventsutil.CreateResourceEventSourceOptions {},
2334
2356
}
2335
2357
2358
+ resourceNamespace := namespace
2359
+
2360
+ if clusterScope {
2361
+ resourceNamespace = ""
2362
+ }
2363
+
2336
2364
for i , name := range resourceNames {
2337
2365
options .Resource [name ] = eventsutil.CreateResourceEventSourceOptions {
2338
2366
Group : reporterCreateOpts .gvr [i ].group ,
2339
2367
Version : reporterCreateOpts .gvr [i ].version ,
2340
2368
Resource : reporterCreateOpts .gvr [i ].resourceName ,
2341
- Namespace : namespace ,
2369
+ Namespace : resourceNamespace ,
2342
2370
}
2343
2371
}
2344
2372
0 commit comments