Skip to content

Commit 66c56f1

Browse files
fix: use Resource.Domain for RBAC markers when Resource.External is true
- Updated RBAC markers to use Resource.Domain instead of Resource.QualifiedGroup when Resource.External is true. - Solves issues with RBAC permissions for external resources like cert-manager's certificates. - Fixes errors such as "User 'system:serviceaccount:project-v4-multigroup-controller-manager' cannot list resource 'certificates' in API group 'cert-manager.io'".
1 parent e451dfe commit 66c56f1

File tree

7 files changed

+21
-21
lines changed

7 files changed

+21
-21
lines changed

pkg/plugins/golang/v4/scaffolds/internal/templates/controllers/controller.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,9 @@ type {{ .Resource.Kind }}Reconciler struct {
8585
Scheme *runtime.Scheme
8686
}
8787
88-
// +kubebuilder:rbac:groups={{ .Resource.QualifiedGroup }},resources={{ .Resource.Plural }},verbs=get;list;watch;create;update;patch;delete
89-
// +kubebuilder:rbac:groups={{ .Resource.QualifiedGroup }},resources={{ .Resource.Plural }}/status,verbs=get;update;patch
90-
// +kubebuilder:rbac:groups={{ .Resource.QualifiedGroup }},resources={{ .Resource.Plural }}/finalizers,verbs=update
88+
// +kubebuilder:rbac:groups={{ if .Resource.External }}{{ .Resource.Domain }}{{ else }}{{ .Resource.QualifiedGroup }}{{ end }},resources={{ .Resource.Plural }},verbs=get;list;watch;create;update;patch;delete
89+
// +kubebuilder:rbac:groups={{ if .Resource.External }}{{ .Resource.Domain }}{{ else }}{{ .Resource.QualifiedGroup }}{{ end }},resources={{ .Resource.Plural }}/status,verbs=get;update;patch
90+
// +kubebuilder:rbac:groups={{ if .Resource.External }}{{ .Resource.Domain }}{{ else }}{{ .Resource.QualifiedGroup }}{{ end }},resources={{ .Resource.Plural }}/finalizers,verbs=update
9191
9292
// Reconcile is part of the main kubernetes reconciliation loop which aims to
9393
// move the current state of the cluster closer to the desired state.

testdata/project-v4-multigroup/config/rbac/role.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ rules:
4646
- patch
4747
- update
4848
- apiGroups:
49-
- certmanager.cert-manager.io
49+
- cert-manager.io
5050
resources:
5151
- certificates
5252
verbs:
@@ -58,13 +58,13 @@ rules:
5858
- update
5959
- watch
6060
- apiGroups:
61-
- certmanager.cert-manager.io
61+
- cert-manager.io
6262
resources:
6363
- certificates/finalizers
6464
verbs:
6565
- update
6666
- apiGroups:
67-
- certmanager.cert-manager.io
67+
- cert-manager.io
6868
resources:
6969
- certificates/status
7070
verbs:

testdata/project-v4-multigroup/dist/install.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1177,7 +1177,7 @@ rules:
11771177
- patch
11781178
- update
11791179
- apiGroups:
1180-
- certmanager.cert-manager.io
1180+
- cert-manager.io
11811181
resources:
11821182
- certificates
11831183
verbs:
@@ -1189,13 +1189,13 @@ rules:
11891189
- update
11901190
- watch
11911191
- apiGroups:
1192-
- certmanager.cert-manager.io
1192+
- cert-manager.io
11931193
resources:
11941194
- certificates/finalizers
11951195
verbs:
11961196
- update
11971197
- apiGroups:
1198-
- certmanager.cert-manager.io
1198+
- cert-manager.io
11991199
resources:
12001200
- certificates/status
12011201
verbs:

testdata/project-v4-multigroup/internal/controller/certmanager/certificate_controller.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ type CertificateReconciler struct {
3232
Scheme *runtime.Scheme
3333
}
3434

35-
// +kubebuilder:rbac:groups=certmanager.cert-manager.io,resources=certificates,verbs=get;list;watch;create;update;patch;delete
36-
// +kubebuilder:rbac:groups=certmanager.cert-manager.io,resources=certificates/status,verbs=get;update;patch
37-
// +kubebuilder:rbac:groups=certmanager.cert-manager.io,resources=certificates/finalizers,verbs=update
35+
// +kubebuilder:rbac:groups=cert-manager.io,resources=certificates,verbs=get;list;watch;create;update;patch;delete
36+
// +kubebuilder:rbac:groups=cert-manager.io,resources=certificates/status,verbs=get;update;patch
37+
// +kubebuilder:rbac:groups=cert-manager.io,resources=certificates/finalizers,verbs=update
3838

3939
// Reconcile is part of the main kubernetes reconciliation loop which aims to
4040
// move the current state of the cluster closer to the desired state.

testdata/project-v4/config/rbac/role.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ metadata:
55
name: manager-role
66
rules:
77
- apiGroups:
8-
- certmanager.cert-manager.io
8+
- cert-manager.io
99
resources:
1010
- certificates
1111
verbs:
@@ -17,13 +17,13 @@ rules:
1717
- update
1818
- watch
1919
- apiGroups:
20-
- certmanager.cert-manager.io
20+
- cert-manager.io
2121
resources:
2222
- certificates/finalizers
2323
verbs:
2424
- update
2525
- apiGroups:
26-
- certmanager.cert-manager.io
26+
- cert-manager.io
2727
resources:
2828
- certificates/status
2929
verbs:

testdata/project-v4/dist/install.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ metadata:
405405
name: project-v4-manager-role
406406
rules:
407407
- apiGroups:
408-
- certmanager.cert-manager.io
408+
- cert-manager.io
409409
resources:
410410
- certificates
411411
verbs:
@@ -417,13 +417,13 @@ rules:
417417
- update
418418
- watch
419419
- apiGroups:
420-
- certmanager.cert-manager.io
420+
- cert-manager.io
421421
resources:
422422
- certificates/finalizers
423423
verbs:
424424
- update
425425
- apiGroups:
426-
- certmanager.cert-manager.io
426+
- cert-manager.io
427427
resources:
428428
- certificates/status
429429
verbs:

testdata/project-v4/internal/controller/certificate_controller.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ type CertificateReconciler struct {
3232
Scheme *runtime.Scheme
3333
}
3434

35-
// +kubebuilder:rbac:groups=certmanager.cert-manager.io,resources=certificates,verbs=get;list;watch;create;update;patch;delete
36-
// +kubebuilder:rbac:groups=certmanager.cert-manager.io,resources=certificates/status,verbs=get;update;patch
37-
// +kubebuilder:rbac:groups=certmanager.cert-manager.io,resources=certificates/finalizers,verbs=update
35+
// +kubebuilder:rbac:groups=cert-manager.io,resources=certificates,verbs=get;list;watch;create;update;patch;delete
36+
// +kubebuilder:rbac:groups=cert-manager.io,resources=certificates/status,verbs=get;update;patch
37+
// +kubebuilder:rbac:groups=cert-manager.io,resources=certificates/finalizers,verbs=update
3838

3939
// Reconcile is part of the main kubernetes reconciliation loop which aims to
4040
// move the current state of the cluster closer to the desired state.

0 commit comments

Comments
 (0)