Skip to content

Commit bcccc16

Browse files
authored
Merge pull request #101 from axel7083/feature/cluster-wide
feat: migrating to ClusterScope CRD
2 parents 6d599d8 + 37f8248 commit bcccc16

12 files changed

+27
-49
lines changed

charts/cluster-secret/Chart.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: cluster-secret
33
description: ClusterSecret Operator
44
kubeVersion: '>= 1.16.0-0'
55
type: application
6-
version: 0.2.3
6+
version: 0.3.0
77
icon: https://clustersecret.io/assets/csninjasmall.png
88
sources:
99
- https://github.com/zakkg3/ClusterSecret

charts/cluster-secret/crds/clustersecret-crd.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ spec:
1010
shortNames:
1111
- csec
1212
singular: clustersecret
13-
scope: Namespaced
13+
scope: Cluster
1414
versions:
1515
- additionalPrinterColumns:
1616
- description: Secret Type

charts/cluster-secret/templates/role-cluster-rbac.yaml

+5-2
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,13 @@ rules:
3939
resources:
4040
- clustersecrets
4141
verbs:
42-
- list
4342
- watch
44-
- patch
43+
- list
4544
- get
45+
- patch
46+
- update
47+
- create
48+
- delete
4649
- apiGroups:
4750
- ""
4851
resources:

charts/cluster-secret/templates/role-namespaced-rbac.yaml

-7
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,3 @@ rules:
3434
- create
3535
- update
3636
- patch
37-
- apiGroups:
38-
- clustersecret.io
39-
resources:
40-
- clustersecrets
41-
verbs:
42-
- get
43-
- patch

conformance/k8s_utils.py

+3-8
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,6 @@ def _generate_secret_key_ref_dict(secret_key_ref: Dict[str, str]) -> Dict[str, A
106106
def create_cluster_secret(
107107
self,
108108
name: str,
109-
namespace: str,
110109
data: Optional[Dict[str, Any]] = None,
111110
secret_key_ref: Optional[Dict[str, str]] = None,
112111
labels: Optional[Dict[str, str]] = None,
@@ -117,10 +116,9 @@ def create_cluster_secret(
117116
if data is None and secret_key_ref is None:
118117
raise Exception('You need to either define data or secret_key_ref.')
119118

120-
return self.custom_objects_api.create_namespaced_custom_object(
119+
return self.custom_objects_api.create_cluster_custom_object(
121120
group="clustersecret.io",
122121
version="v1",
123-
namespace=namespace,
124122
body={
125123
"apiVersion": "clustersecret.io/v1",
126124
"kind": "ClusterSecret",
@@ -135,16 +133,14 @@ def create_cluster_secret(
135133
def update_data_cluster_secret(
136134
self,
137135
name: str,
138-
namespace: str,
139136
data: Dict[str, str],
140137
match_namespace: Optional[List[str]] = None,
141138
avoid_namespaces: Optional[List[str]] = None,
142139
):
143-
self.custom_objects_api.patch_namespaced_custom_object(
140+
self.custom_objects_api.patch_cluster_custom_object(
144141
name=name,
145142
group="clustersecret.io",
146143
version="v1",
147-
namespace=namespace,
148144
body={
149145
"apiVersion": "clustersecret.io/v1",
150146
"kind": "ClusterSecret",
@@ -160,11 +156,10 @@ def delete_cluster_secret(
160156
name: str,
161157
namespace: str
162158
):
163-
self.custom_objects_api.delete_namespaced_custom_object(
159+
self.custom_objects_api.delete_cluster_custom_object(
164160
name=name,
165161
group="clustersecret.io",
166162
version="v1",
167-
namespace=namespace,
168163
plural="clustersecrets",
169164
)
170165

conformance/tests.py

-10
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ def test_simple_cluster_secret(self):
5757

5858
self.cluster_secret_manager.create_cluster_secret(
5959
name=name,
60-
namespace=USER_NAMESPACES[0],
6160
data={"username": username_data}
6261
)
6362

@@ -76,7 +75,6 @@ def test_complex_cluster_secret(self):
7675
# Create a secret in all user namespace expect the first one
7776
self.cluster_secret_manager.create_cluster_secret(
7877
name=name,
79-
namespace=USER_NAMESPACES[0],
8078
data={"username": username_data},
8179
match_namespace=["example-*"],
8280
avoid_namespaces=[USER_NAMESPACES[0]]
@@ -99,7 +97,6 @@ def test_patch_cluster_secret_data(self):
9997
# Create a secret with username_data
10098
self.cluster_secret_manager.create_cluster_secret(
10199
name=name,
102-
namespace=USER_NAMESPACES[0],
103100
data={"username": username_data},
104101
)
105102

@@ -115,7 +112,6 @@ def test_patch_cluster_secret_data(self):
115112
self.cluster_secret_manager.update_data_cluster_secret(
116113
name=name,
117114
data={"username": updated_data},
118-
namespace=USER_NAMESPACES[0],
119115
)
120116

121117
# Ensure the secrets are updated with the right data (at some point)
@@ -133,7 +129,6 @@ def test_patch_cluster_secret_match_namespaces(self):
133129

134130
self.cluster_secret_manager.create_cluster_secret(
135131
name=name,
136-
namespace=USER_NAMESPACES[0],
137132
data={"username": username_data},
138133
match_namespace=[
139134
USER_NAMESPACES[0]
@@ -154,7 +149,6 @@ def test_patch_cluster_secret_match_namespaces(self):
154149
# Update the cluster match_namespace to ALL user namespace
155150
self.cluster_secret_manager.update_data_cluster_secret(
156151
name=name,
157-
namespace=USER_NAMESPACES[0],
158152
match_namespace=USER_NAMESPACES,
159153
data={"username": username_data},
160154
)
@@ -174,7 +168,6 @@ def test_simple_cluster_secret_deleted(self):
174168

175169
self.cluster_secret_manager.create_cluster_secret(
176170
name=name,
177-
namespace=USER_NAMESPACES[0],
178171
data={"username": username_data}
179172
)
180173

@@ -217,7 +210,6 @@ def test_value_from_cluster_secret(self):
217210
# Create the cluster secret
218211
self.cluster_secret_manager.create_cluster_secret(
219212
name=cluster_secret_name,
220-
namespace=USER_NAMESPACES[0],
221213
secret_key_ref={
222214
'name': secret_name,
223215
'namespace': USER_NAMESPACES[0],
@@ -251,7 +243,6 @@ def test_value_from_with_keys_cluster_secret(self):
251243
# Create the cluster secret
252244
self.cluster_secret_manager.create_cluster_secret(
253245
name=cluster_secret_name,
254-
namespace=USER_NAMESPACES[0],
255246
secret_key_ref={
256247
'name': secret_name,
257248
'namespace': USER_NAMESPACES[0],
@@ -281,7 +272,6 @@ def test_simple_cluster_secret_with_annotation(self):
281272

282273
cluster_secret_manager.create_cluster_secret(
283274
name=name,
284-
namespace=USER_NAMESPACES[0],
285275
data={"username": username_data},
286276
annotations=annotations,
287277
)

setup.cfg

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
max-line-length = 120
33
exclude=
44
src/tests
5-
ignore=D103,D401,D400,D200,D100,DAR201,WPS305,WPS111,DAR101,WPS326,WPS226,N400,I001,I002,I003,I004,I005,WPS221,WPS237,DAR401,WPS432,WPS211,WPS440,WPS462,WPS210,WPS229,S105,WPS229,WPS202,WPS213,WPS110,WPS238,WPS231
5+
ignore=D103,D102,D401,D400,D200,D100,DAR201,WPS305,WPS111,DAR101,WPS326,WPS226,N400,I001,I002,I003,I004,I005,WPS221,WPS237,DAR401,WPS432,WPS211,WPS440,WPS462,WPS210,WPS229,S105,WPS229,WPS202,WPS213,WPS110,WPS238,WPS231
66

77
[darglint]
88
docstring_style=numpy

src/handlers.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
from os_utils import in_cluster
1616

17+
csecs: Dict[str, Any] = {}
18+
1719
# Loading kubeconfig
1820
if in_cluster():
1921
# Loading kubeconfig
@@ -98,7 +100,6 @@ def on_field_match_namespace(
98100
logger.debug(f'Patching clustersecret {name} in namespace {namespace}')
99101
patch_clustersecret_status(
100102
logger=logger,
101-
namespace=namespace,
102103
name=name,
103104
new_status={'create_fn': {'syncedns': updated_matched}},
104105
custom_objects_api=custom_objects_api,

src/kubernetes_utils.py

+6-9
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,10 @@
1212

1313

1414
def patch_clustersecret_status(
15-
logger: logging.Logger,
16-
namespace: str,
17-
name: str,
18-
new_status,
19-
custom_objects_api: CustomObjectsApi,
15+
logger: logging.Logger,
16+
name: str,
17+
new_status,
18+
custom_objects_api: CustomObjectsApi,
2019
):
2120
"""Patch the status of a given clustersecret object
2221
"""
@@ -25,10 +24,9 @@ def patch_clustersecret_status(
2524
plural = 'clustersecrets'
2625

2726
# Retrieve the clustersecret object
28-
clustersecret = custom_objects_api.get_namespaced_custom_object(
27+
clustersecret = custom_objects_api.get_cluster_custom_object(
2928
group=group,
3029
version=version,
31-
namespace=namespace,
3230
plural=plural,
3331
name=name,
3432
)
@@ -38,10 +36,9 @@ def patch_clustersecret_status(
3836
logger.debug(f'Updated clustersecret manifest: {clustersecret}')
3937

4038
# Perform a patch operation to update the custom resource
41-
custom_objects_api.patch_namespaced_custom_object(
39+
custom_objects_api.patch_cluster_custom_object(
4240
group=group,
4341
version=version,
44-
namespace=namespace,
4542
plural=plural,
4643
name=name,
4744
body=clustersecret,

yaml/00_rbac.yaml

+3-4
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ metadata:
66
apiVersion: v1
77
kind: ServiceAccount
88
metadata:
9-
namespace: "clustersecret"
9+
namespace: clustersecret
1010
name: clustersecret-account
1111
---
1212
apiVersion: rbac.authorization.k8s.io/v1
@@ -33,8 +33,7 @@ rules:
3333
# Application: read-only access for watching cluster-wide.
3434
- apiGroups: [clustersecret.io]
3535
resources: [clustersecrets]
36-
verbs: [list, watch, patch, get]
37-
36+
verbs: [watch, list, get, patch, update, create, delete]
3837
# Watch namespaces
3938
- apiGroups: [""]
4039
resources: [namespaces, namespaces/status]
@@ -70,7 +69,7 @@ rules:
7069
- apiGroups: [""]
7170
resources: [secrets]
7271
verbs: [create,update,patch]
73-
72+
7473
# Application: get and patch clustersecrets for status patching
7574
- apiGroups: [clustersecret.io]
7675
resources: [clustersecrets]

yaml/01_crd.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ kind: CustomResourceDefinition
44
metadata:
55
name: clustersecrets.clustersecret.io
66
spec:
7-
scope: Namespaced
7+
scope: Cluster
88
group: clustersecret.io
99
versions:
1010
- name: v1

yaml/02_deployment.yaml

+4-4
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ spec:
2626
port: 8080
2727
periodSeconds: 120
2828
env:
29-
- name: CLUSTER_SECRET_VERSION
30-
value: "v0.0.10"
31-
- name: REPLACE_EXISTING
32-
value: "false"
29+
- name: CLUSTER_SECRET_VERSION
30+
value: "v0.0.10"
31+
- name: REPLACE_EXISTING
32+
value: "false"
3333
# imagePullPolicy: Always
3434
# Uncomment next lines for debug:
3535
# command:

0 commit comments

Comments
 (0)