Skip to content

Commit 4c502d9

Browse files
authored
Merge pull request #111 from numtide/rbac-kubebuilder-marker
Add RBAC markers for API resources
2 parents 649e0a3 + 151903b commit 4c502d9

File tree

8 files changed

+91
-2
lines changed

8 files changed

+91
-2
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ help: ## Display this help.
134134

135135
.PHONY: manifests
136136
manifests: controller-gen ## Generate WebhookConfiguration, ClusterRole and CustomResourceDefinition objects.
137-
$(CONTROLLER_GEN) rbac:roleName=manager-role crd webhook paths="./api/..." output:crd:artifacts:config=config/crd/bases
137+
$(CONTROLLER_GEN) rbac:roleName=manager-role crd webhook paths="./api/..." output:crd:artifacts:config=config/crd/bases output:rbac:artifacts:config=config/rbac
138138

139139
.PHONY: generate
140140
generate: controller-gen ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations.

api/v1alpha1/cell_types.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,21 @@ import (
2121
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2222
)
2323

24+
// ============================================================================
25+
// RBAC Markers (Temporary Location)
26+
// ============================================================================
27+
//
28+
// TODO: Move these RBAC markers to the controller implementation
29+
// (pkg/resource-handler/controller/cell/cell_controller.go)
30+
// to follow kubebuilder conventions. They are temporarily placed here because
31+
// controller-gen cannot process files in go.work modules.
32+
//
33+
// +kubebuilder:rbac:groups=multigres.com,resources=cells,verbs=get;list;watch;create;update;patch;delete
34+
// +kubebuilder:rbac:groups=multigres.com,resources=cells/status,verbs=get;update;patch
35+
// +kubebuilder:rbac:groups=multigres.com,resources=cells/finalizers,verbs=update
36+
// +kubebuilder:rbac:groups=apps,resources=deployments,verbs=get;list;watch;create;update;patch;delete
37+
// +kubebuilder:rbac:groups="",resources=services,verbs=get;list;watch;create;update;patch;delete
38+
2439
// ============================================================================
2540
// Cell Spec (Read-only API)
2641
// ============================================================================

api/v1alpha1/multigrescluster_types.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,22 @@ import (
2121
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2222
)
2323

24+
// ============================================================================
25+
// RBAC Markers (Temporary Location)
26+
// ============================================================================
27+
//
28+
// TODO: Move these RBAC markers to the controller implementation
29+
// (pkg/cluster-handler/controller/multigrescluster/multigrescluster_controller.go)
30+
// to follow kubebuilder conventions. They are temporarily placed here because
31+
// controller-gen cannot process files in go.work modules.
32+
//
33+
// +kubebuilder:rbac:groups=multigres.com,resources=multigresclusters,verbs=get;list;watch;create;update;patch;delete
34+
// +kubebuilder:rbac:groups=multigres.com,resources=multigresclusters/status,verbs=get;update;patch
35+
// +kubebuilder:rbac:groups=multigres.com,resources=multigresclusters/finalizers,verbs=update
36+
// +kubebuilder:rbac:groups=multigres.com,resources=coretemplates;celltemplates;shardtemplates,verbs=get;list;watch
37+
// +kubebuilder:rbac:groups=multigres.com,resources=cells;tablegroups;toposervers,verbs=get;list;watch;create;update;patch;delete
38+
// +kubebuilder:rbac:groups=apps,resources=deployments,verbs=get;list;watch;create;update;patch;delete
39+
2440
// ============================================================================
2541
// MultigresClusterSpec Spec (User-editable API)
2642
// ============================================================================

api/v1alpha1/shard_types.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,21 @@ import (
2121
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2222
)
2323

24+
// ============================================================================
25+
// RBAC Markers (Temporary Location)
26+
// ============================================================================
27+
//
28+
// TODO: Move these RBAC markers to the controller implementation
29+
// (pkg/resource-handler/controller/shard/shard_controller.go)
30+
// to follow kubebuilder conventions. They are temporarily placed here because
31+
// controller-gen cannot process files in go.work modules.
32+
//
33+
// +kubebuilder:rbac:groups=multigres.com,resources=shards,verbs=get;list;watch;create;update;patch;delete
34+
// +kubebuilder:rbac:groups=multigres.com,resources=shards/status,verbs=get;update;patch
35+
// +kubebuilder:rbac:groups=multigres.com,resources=shards/finalizers,verbs=update
36+
// +kubebuilder:rbac:groups=apps,resources=deployments;statefulsets,verbs=get;list;watch;create;update;patch;delete
37+
// +kubebuilder:rbac:groups="",resources=services,verbs=get;list;watch;create;update;patch;delete
38+
2439
// ============================================================================
2540
// Shard Component Specs (Reusable)
2641
// ============================================================================

api/v1alpha1/tablegroup_types.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,19 @@ import (
2020
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2121
)
2222

23+
// ============================================================================
24+
// RBAC Markers (Temporary Location)
25+
// ============================================================================
26+
//
27+
// TODO: Move these RBAC markers to the controller implementation
28+
// (pkg/cluster-handler/controller/tablegroup/tablegroup_controller.go)
29+
// to follow kubebuilder conventions. They are temporarily placed here because
30+
// controller-gen cannot process files in go.work modules.
31+
//
32+
// +kubebuilder:rbac:groups=multigres.com,resources=tablegroups,verbs=get;list;watch;create;update;patch;delete
33+
// +kubebuilder:rbac:groups=multigres.com,resources=tablegroups/status,verbs=get;update;patch
34+
// +kubebuilder:rbac:groups=multigres.com,resources=shards,verbs=get;list;watch;create;update;patch;delete
35+
2336
// ============================================================================
2437
// TableGroup Spec (Read-only API)
2538
// ============================================================================

api/v1alpha1/toposerver_types.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,21 @@ import (
2121
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2222
)
2323

24+
// ============================================================================
25+
// RBAC Markers (Temporary Location)
26+
// ============================================================================
27+
//
28+
// TODO: Move these RBAC markers to the controller implementation
29+
// (pkg/resource-handler/controller/toposerver/toposerver_controller.go)
30+
// to follow kubebuilder conventions. They are temporarily placed here because
31+
// controller-gen cannot process files in go.work modules.
32+
//
33+
// +kubebuilder:rbac:groups=multigres.com,resources=toposervers,verbs=get;list;watch;create;update;patch;delete
34+
// +kubebuilder:rbac:groups=multigres.com,resources=toposervers/status,verbs=get;update;patch
35+
// +kubebuilder:rbac:groups=multigres.com,resources=toposervers/finalizers,verbs=update
36+
// +kubebuilder:rbac:groups=apps,resources=statefulsets,verbs=get;list;watch;create;update;patch;delete
37+
// +kubebuilder:rbac:groups="",resources=services,verbs=get;list;watch;create;update;patch;delete
38+
2439
// ============================================================================
2540
// TopoServer Spec (Read-only API)
2641
// ============================================================================

config/manager/kustomization.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ kind: Kustomization
55
images:
66
- name: controller
77
newName: ghcr.io/numtide/multigres-operator
8-
newTag: 84cd6d9-dirty
8+
newTag: 9d6dd13-dirty

config/rbac/role.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ rules:
3333
- multigres.com
3434
resources:
3535
- cells
36+
- multigresclusters
3637
- shards
38+
- tablegroups
3739
- toposervers
3840
verbs:
3941
- create
@@ -47,6 +49,7 @@ rules:
4749
- multigres.com
4850
resources:
4951
- cells/finalizers
52+
- multigresclusters/finalizers
5053
- shards/finalizers
5154
- toposervers/finalizers
5255
verbs:
@@ -55,9 +58,21 @@ rules:
5558
- multigres.com
5659
resources:
5760
- cells/status
61+
- multigresclusters/status
5862
- shards/status
63+
- tablegroups/status
5964
- toposervers/status
6065
verbs:
6166
- get
6267
- patch
6368
- update
69+
- apiGroups:
70+
- multigres.com
71+
resources:
72+
- celltemplates
73+
- coretemplates
74+
- shardtemplates
75+
verbs:
76+
- get
77+
- list
78+
- watch

0 commit comments

Comments
 (0)