Skip to content

Commit b461dcb

Browse files
committed
feat: add complete ui-operator addon with RBAC
1 parent 6d9e589 commit b461dcb

4 files changed

Lines changed: 78 additions & 1 deletion

File tree

buildchain/buildchain/salt_tree.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,7 @@ def task(self) -> types.TaskDict:
412412
Path("salt/metalk8s/addons/ui-operator/deployed/init.sls"),
413413
Path("salt/metalk8s/addons/ui-operator/deployed/manifests.sls"),
414414
Path("salt/metalk8s/addons/ui-operator/deployed/namespace.sls"),
415+
Path("salt/metalk8s/addons/ui-operator/deployed/rbac.sls"),
415416
Path("salt/metalk8s/addons/ui-operator/post-upgrade.sls"),
416417
Path("salt/metalk8s/addons/solutions/deployed/configmap.sls"),
417418
Path("salt/metalk8s/addons/solutions/deployed/init.sls"),

salt/metalk8s/addons/ui-operator/deployed/init.sls

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
include:
2+
- .rbac
23
- .manifests
34

45
Wait for the UI Operator to be Ready:

salt/metalk8s/addons/ui-operator/deployed/manifests.sls

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ Deploy UI Operator:
3030
labels:
3131
app.kubernetes.io/name: ui-operator
3232
spec:
33+
serviceAccountName: ui-operator
3334
containers:
3435
- name: ui-operator
3536
image: {{ ui_operator_image }}
@@ -64,4 +65,5 @@ Deploy UI Operator:
6465
runAsNonRoot: true
6566
terminationGracePeriodSeconds: 10
6667
- require:
67-
- sls: metalk8s.addons.ui-operator.deployed.namespace
68+
- sls: metalk8s.addons.ui-operator.deployed.namespace
69+
- sls: metalk8s.addons.ui-operator.deployed.rbac
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
#! metalk8s_kubernetes
2+
3+
# ServiceAccount for ui-operator
4+
apiVersion: v1
5+
kind: ServiceAccount
6+
metadata:
7+
name: ui-operator
8+
namespace: metalk8s-ui
9+
labels:
10+
app.kubernetes.io/name: ui-operator
11+
app.kubernetes.io/managed-by: salt
12+
app.kubernetes.io/part-of: metalk8s
13+
heritage: metalk8s
14+
automountServiceAccountToken: true
15+
16+
---
17+
# ClusterRole for ui-operator
18+
apiVersion: rbac.authorization.k8s.io/v1
19+
kind: ClusterRole
20+
metadata:
21+
name: ui-operator
22+
labels:
23+
app.kubernetes.io/name: ui-operator
24+
app.kubernetes.io/managed-by: salt
25+
app.kubernetes.io/part-of: metalk8s
26+
heritage: metalk8s
27+
rules:
28+
# Core API permissions
29+
- apiGroups: [""]
30+
resources: ["configmaps", "secrets", "services", "endpoints"]
31+
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
32+
- apiGroups: [""]
33+
resources: ["namespaces"]
34+
verbs: ["get", "list", "watch"]
35+
- apiGroups: [""]
36+
resources: ["events"]
37+
verbs: ["create", "patch"]
38+
# Apps API permissions
39+
- apiGroups: ["apps"]
40+
resources: ["deployments", "replicasets"]
41+
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
42+
# Extensions for UI-specific resources
43+
- apiGroups: ["networking.k8s.io"]
44+
resources: ["ingresses"]
45+
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
46+
# Custom resources for UI operator
47+
- apiGroups: ["ui.scality.com"]
48+
resources: ["*"]
49+
verbs: ["*"]
50+
# Leader election
51+
- apiGroups: ["coordination.k8s.io"]
52+
resources: ["leases"]
53+
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
54+
55+
---
56+
# ClusterRoleBinding for ui-operator
57+
apiVersion: rbac.authorization.k8s.io/v1
58+
kind: ClusterRoleBinding
59+
metadata:
60+
name: ui-operator
61+
labels:
62+
app.kubernetes.io/name: ui-operator
63+
app.kubernetes.io/managed-by: salt
64+
app.kubernetes.io/part-of: metalk8s
65+
heritage: metalk8s
66+
roleRef:
67+
apiGroup: rbac.authorization.k8s.io
68+
kind: ClusterRole
69+
name: ui-operator
70+
subjects:
71+
- kind: ServiceAccount
72+
name: ui-operator
73+
namespace: metalk8s-ui

0 commit comments

Comments
 (0)