Skip to content

Commit 03a572b

Browse files
committed
Change scope of ArangoLocalStorage to Cluster
1 parent 1fb0864 commit 03a572b

File tree

22 files changed

+213
-200
lines changed

22 files changed

+213
-200
lines changed

manifests/crd.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,5 @@ spec:
3030
shortNames:
3131
- arangostorage
3232
singular: arangolocalstorage
33-
scope: Namespaced
33+
scope: Cluster
3434
version: v1alpha

manifests/templates/deployment/deployment.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
apiVersion: extensions/v1beta1
33
kind: Deployment
44
metadata:
5-
name: {{ .Deployment.OperatorName }}
6-
namespace: {{ .Deployment.Namespace }}
5+
name: {{ .Deployment.OperatorDeploymentName }}
6+
namespace: {{ .Deployment.Operator.Namespace }}
77
spec:
88
replicas: 1
99
template:
1010
metadata:
1111
labels:
12-
name: {{ .Deployment.OperatorName }}
12+
name: {{ .Deployment.OperatorDeploymentName }}
1313
spec:
1414
containers:
1515
- name: operator
Lines changed: 56 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,73 @@
11
{{- if .RBAC -}}
2+
## Cluster role granting access to ArangoDeployment resources.
23
apiVersion: rbac.authorization.k8s.io/v1beta1
34
kind: ClusterRole
45
metadata:
5-
name: {{ .Deployment.ClusterRoleName }}
6+
name: {{ .Deployment.User.RoleName }}
67
rules:
7-
- apiGroups:
8-
- database.arangodb.com
9-
resources:
10-
- arangodeployments
11-
verbs:
12-
- "*"
13-
- apiGroups:
14-
- apiextensions.k8s.io
15-
resources:
16-
- customresourcedefinitions
17-
verbs:
18-
- get
19-
- apiGroups:
20-
- ""
21-
resources:
22-
- pods
23-
- services
24-
- endpoints
25-
- persistentvolumeclaims
26-
- events
27-
- secrets
28-
verbs:
29-
- "*"
30-
- apiGroups:
31-
- apps
32-
resources:
33-
- deployments
34-
verbs:
35-
- "*"
36-
- apiGroups:
37-
- storage.k8s.io
38-
resources:
39-
- storageclasses
40-
verbs:
41-
- get
42-
- list
8+
- apiGroups: ["database.arangodb.com"]
9+
resources: ["arangodeployments"]
10+
verbs: ["*"]
4311

4412
---
4513

14+
## Cluster role granting access to all resources needed by the ArangoDeployment operator.
4615
apiVersion: rbac.authorization.k8s.io/v1beta1
47-
kind: ClusterRoleBinding
16+
kind: ClusterRole
17+
metadata:
18+
name: {{ .Deployment.Operator.RoleName }}
19+
rules:
20+
- apiGroups: ["database.arangodb.com"]
21+
resources: ["arangodeployments"]
22+
verbs: ["*"]
23+
- apiGroups: ["apiextensions.k8s.io"]
24+
resources: ["customresourcedefinitions"]
25+
verbs: ["get"]
26+
- apiGroups: [""]
27+
resources: ["pods", "services", "endpoints", "persistentvolumeclaims", "events", "secrets"]
28+
verbs: ["*"]
29+
- apiGroups: ["apps"]
30+
resources: ["deployments"]
31+
verbs: ["*"]
32+
- apiGroups: ["storage.k8s.io"]
33+
resources: ["storageclasses"]
34+
verbs: ["get", "list"]
35+
36+
---
37+
38+
## Bind the cluster role granting access to ArangoLocalStorage resources
39+
## to the default service account of the configured namespace.
40+
apiVersion: rbac.authorization.k8s.io/v1beta1
41+
kind: RoleBinding
42+
metadata:
43+
name: {{ .Deployment.User.RoleBindingName }}
44+
namespace: {{ .Deployment.User.Namespace }}
45+
roleRef:
46+
apiGroup: rbac.authorization.k8s.io
47+
kind: ClusterRole
48+
name: {{ .Deployment.User.RoleName }}
49+
subjects:
50+
- kind: ServiceAccount
51+
name: {{ .Deployment.User.ServiceAccountName }}
52+
namespace: {{ .Deployment.User.Namespace }}
53+
54+
---
55+
56+
## Bind the cluster role granting access to all resources needed by
57+
## the ArangoDeployment operator to the default service account
58+
## the is being used to run the operator deployment.
59+
apiVersion: rbac.authorization.k8s.io/v1beta1
60+
kind: RoleBinding
4861
metadata:
49-
name: {{ .Deployment.ClusterRoleBindingName }}
62+
name: {{ .Deployment.Operator.RoleBindingName }}
63+
namespace: {{ .Deployment.Operator.Namespace }}
5064
roleRef:
5165
apiGroup: rbac.authorization.k8s.io
5266
kind: ClusterRole
53-
name: {{ .Deployment.ClusterRoleName }}
67+
name: {{ .Deployment.Operator.RoleName }}
5468
subjects:
5569
- kind: ServiceAccount
56-
name: default
57-
namespace: {{ .Deployment.Namespace }}
70+
name: {{ .Deployment.Operator.ServiceAccountName }}
71+
namespace: {{ .Deployment.Operator.Namespace }}
5872

5973
{{- end -}}

manifests/templates/storage/deployment.yaml

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,25 @@
1+
## Service accounts
2+
apiVersion: v1
3+
kind: ServiceAccount
4+
metadata:
5+
namespace: {{ .Storage.Operator.Namespace }}
6+
name: {{ .Storage.Operator.ServiceAccountName }}
7+
8+
---
19

210
apiVersion: extensions/v1beta1
311
kind: Deployment
412
metadata:
5-
name: {{ .Storage.OperatorName }}
6-
namespace: {{ .Storage.Namespace }}
13+
name: {{ .Storage.OperatorDeploymentName }}
14+
namespace: {{ .Storage.Operator.Namespace }}
715
spec:
816
replicas: 1
917
template:
1018
metadata:
1119
labels:
12-
name: {{ .Storage.OperatorName }}
20+
name: {{ .Storage.OperatorDeploymentName }}
1321
spec:
22+
serviceAccountName: {{ .Storage.Operator.ServiceAccountName }}
1423
containers:
1524
- name: operator
1625
imagePullPolicy: {{ .ImagePullPolicy }}
Lines changed: 58 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,75 @@
11

22
{{- if .RBAC -}}
3+
## Cluster role granting access to ArangoLocalStorage resources.
34
apiVersion: rbac.authorization.k8s.io/v1beta1
45
kind: ClusterRole
56
metadata:
6-
name: {{ .Storage.ClusterRoleName }}
7+
name: {{ .Storage.User.RoleName }}
78
rules:
8-
- apiGroups:
9-
- storage.arangodb.com
10-
resources:
11-
- arangolocalstorages
12-
verbs:
13-
- "*"
14-
- apiGroups:
15-
- apiextensions.k8s.io
16-
resources:
17-
- customresourcedefinitions
18-
verbs:
19-
- get
20-
- apiGroups:
21-
- ""
22-
resources:
23-
- persistentvolumes
24-
- persistentvolumeclaims
25-
- events
26-
verbs:
27-
- "*"
28-
- apiGroups:
29-
- apps
30-
resources:
31-
- daemonsets
32-
verbs:
33-
- "*"
34-
- apiGroups:
35-
- storage.k8s.io
36-
resources:
37-
- storageclasses
38-
verbs:
39-
- "*"
9+
- apiGroups: ["storage.arangodb.com"]
10+
resources: ["arangolocalstorages"]
11+
verbs: ["*"]
4012

4113
---
4214

15+
## Cluster role granting access to all resources needed by the ArangoLocalStorage operator.
4316
apiVersion: rbac.authorization.k8s.io/v1beta1
44-
kind: ClusterRoleBinding
17+
kind: ClusterRole
4518
metadata:
46-
name: {{ .Storage.ClusterRoleBindingName }}
19+
name: {{ .Storage.Operator.RoleName }}
20+
rules:
21+
- apiGroups: ["storage.arangodb.com"]
22+
resources: ["arangolocalstorages"]
23+
verbs: ["*"]
24+
- apiGroups: ["apiextensions.k8s.io"]
25+
resources: ["customresourcedefinitions"]
26+
verbs: ["get"]
27+
- apiGroups: [""]
28+
resources: ["persistentvolumes", "persistentvolumeclaims", "endpoints", "events", "services"]
29+
verbs: ["*"]
30+
- apiGroups: [""]
31+
resources: ["pods"]
32+
verbs: ["get"]
33+
- apiGroups: ["apps"]
34+
resources: ["daemonsets"]
35+
verbs: ["*"]
36+
- apiGroups: ["storage.k8s.io"]
37+
resources: ["storageclasses"]
38+
verbs: ["*"]
39+
40+
---
41+
42+
## Bind the cluster role granting access to ArangoLocalStorage resources
43+
## to the default service account of the configured namespace.
44+
apiVersion: rbac.authorization.k8s.io/v1beta1
45+
kind: RoleBinding
46+
metadata:
47+
name: {{ .Storage.User.RoleBindingName }}
48+
namespace: {{ .Storage.User.Namespace }}
4749
roleRef:
4850
apiGroup: rbac.authorization.k8s.io
4951
kind: ClusterRole
50-
name: {{ .Storage.ClusterRoleName }}
52+
name: {{ .Storage.User.RoleName }}
5153
subjects:
5254
- kind: ServiceAccount
53-
name: default
54-
namespace: {{ .Storage.Namespace }}
55+
name: {{ .Storage.User.ServiceAccountName }}
56+
namespace: {{ .Storage.User.Namespace }}
57+
58+
---
5559

56-
{{- end -}}
60+
## Bind the cluster role granting access to all resources needed by
61+
## the ArangoLocalStorage operator to the default service account
62+
## the is being used to run the operator deployment.
63+
apiVersion: rbac.authorization.k8s.io/v1beta1
64+
kind: ClusterRoleBinding
65+
metadata:
66+
name: {{ .Storage.Operator.RoleBindingName }}
67+
roleRef:
68+
apiGroup: rbac.authorization.k8s.io
69+
kind: ClusterRole
70+
name: {{ .Storage.Operator.RoleName }}
71+
subjects:
72+
- kind: ServiceAccount
73+
name: {{ .Storage.Operator.ServiceAccountName }}
74+
namespace: {{ .Storage.Operator.Namespace }}
75+
{{- end -}}

pkg/apis/storage/v1alpha/local_storage.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ type ArangoLocalStorageList struct {
3838
}
3939

4040
// +genclient
41+
// +genclient:nonNamespaced
4142
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
4243

4344
// ArangoLocalStorage contains the entire Kubernetes info for an ArangoDB

pkg/generated/clientset/versioned/typed/storage/v1alpha/arangolocalstorage.go

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import (
3131
// ArangoLocalStoragesGetter has a method to return a ArangoLocalStorageInterface.
3232
// A group's client should implement this interface.
3333
type ArangoLocalStoragesGetter interface {
34-
ArangoLocalStorages(namespace string) ArangoLocalStorageInterface
34+
ArangoLocalStorages() ArangoLocalStorageInterface
3535
}
3636

3737
// ArangoLocalStorageInterface has methods to work with ArangoLocalStorage resources.
@@ -51,22 +51,19 @@ type ArangoLocalStorageInterface interface {
5151
// arangoLocalStorages implements ArangoLocalStorageInterface
5252
type arangoLocalStorages struct {
5353
client rest.Interface
54-
ns string
5554
}
5655

5756
// newArangoLocalStorages returns a ArangoLocalStorages
58-
func newArangoLocalStorages(c *StorageV1alphaClient, namespace string) *arangoLocalStorages {
57+
func newArangoLocalStorages(c *StorageV1alphaClient) *arangoLocalStorages {
5958
return &arangoLocalStorages{
6059
client: c.RESTClient(),
61-
ns: namespace,
6260
}
6361
}
6462

6563
// Get takes name of the arangoLocalStorage, and returns the corresponding arangoLocalStorage object, and an error if there is any.
6664
func (c *arangoLocalStorages) Get(name string, options v1.GetOptions) (result *v1alpha.ArangoLocalStorage, err error) {
6765
result = &v1alpha.ArangoLocalStorage{}
6866
err = c.client.Get().
69-
Namespace(c.ns).
7067
Resource("arangolocalstorages").
7168
Name(name).
7269
VersionedParams(&options, scheme.ParameterCodec).
@@ -79,7 +76,6 @@ func (c *arangoLocalStorages) Get(name string, options v1.GetOptions) (result *v
7976
func (c *arangoLocalStorages) List(opts v1.ListOptions) (result *v1alpha.ArangoLocalStorageList, err error) {
8077
result = &v1alpha.ArangoLocalStorageList{}
8178
err = c.client.Get().
82-
Namespace(c.ns).
8379
Resource("arangolocalstorages").
8480
VersionedParams(&opts, scheme.ParameterCodec).
8581
Do().
@@ -91,7 +87,6 @@ func (c *arangoLocalStorages) List(opts v1.ListOptions) (result *v1alpha.ArangoL
9187
func (c *arangoLocalStorages) Watch(opts v1.ListOptions) (watch.Interface, error) {
9288
opts.Watch = true
9389
return c.client.Get().
94-
Namespace(c.ns).
9590
Resource("arangolocalstorages").
9691
VersionedParams(&opts, scheme.ParameterCodec).
9792
Watch()
@@ -101,7 +96,6 @@ func (c *arangoLocalStorages) Watch(opts v1.ListOptions) (watch.Interface, error
10196
func (c *arangoLocalStorages) Create(arangoLocalStorage *v1alpha.ArangoLocalStorage) (result *v1alpha.ArangoLocalStorage, err error) {
10297
result = &v1alpha.ArangoLocalStorage{}
10398
err = c.client.Post().
104-
Namespace(c.ns).
10599
Resource("arangolocalstorages").
106100
Body(arangoLocalStorage).
107101
Do().
@@ -113,7 +107,6 @@ func (c *arangoLocalStorages) Create(arangoLocalStorage *v1alpha.ArangoLocalStor
113107
func (c *arangoLocalStorages) Update(arangoLocalStorage *v1alpha.ArangoLocalStorage) (result *v1alpha.ArangoLocalStorage, err error) {
114108
result = &v1alpha.ArangoLocalStorage{}
115109
err = c.client.Put().
116-
Namespace(c.ns).
117110
Resource("arangolocalstorages").
118111
Name(arangoLocalStorage.Name).
119112
Body(arangoLocalStorage).
@@ -128,7 +121,6 @@ func (c *arangoLocalStorages) Update(arangoLocalStorage *v1alpha.ArangoLocalStor
128121
func (c *arangoLocalStorages) UpdateStatus(arangoLocalStorage *v1alpha.ArangoLocalStorage) (result *v1alpha.ArangoLocalStorage, err error) {
129122
result = &v1alpha.ArangoLocalStorage{}
130123
err = c.client.Put().
131-
Namespace(c.ns).
132124
Resource("arangolocalstorages").
133125
Name(arangoLocalStorage.Name).
134126
SubResource("status").
@@ -141,7 +133,6 @@ func (c *arangoLocalStorages) UpdateStatus(arangoLocalStorage *v1alpha.ArangoLoc
141133
// Delete takes name of the arangoLocalStorage and deletes it. Returns an error if one occurs.
142134
func (c *arangoLocalStorages) Delete(name string, options *v1.DeleteOptions) error {
143135
return c.client.Delete().
144-
Namespace(c.ns).
145136
Resource("arangolocalstorages").
146137
Name(name).
147138
Body(options).
@@ -152,7 +143,6 @@ func (c *arangoLocalStorages) Delete(name string, options *v1.DeleteOptions) err
152143
// DeleteCollection deletes a collection of objects.
153144
func (c *arangoLocalStorages) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error {
154145
return c.client.Delete().
155-
Namespace(c.ns).
156146
Resource("arangolocalstorages").
157147
VersionedParams(&listOptions, scheme.ParameterCodec).
158148
Body(options).
@@ -164,7 +154,6 @@ func (c *arangoLocalStorages) DeleteCollection(options *v1.DeleteOptions, listOp
164154
func (c *arangoLocalStorages) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha.ArangoLocalStorage, err error) {
165155
result = &v1alpha.ArangoLocalStorage{}
166156
err = c.client.Patch(pt).
167-
Namespace(c.ns).
168157
Resource("arangolocalstorages").
169158
SubResource(subresources...).
170159
Name(name).

0 commit comments

Comments
 (0)