Skip to content

Commit b36c7e1

Browse files
authored
Merge pull request #12 from projectsyn/feat/individual-manifest-files
Refactor component to emit each K8s manifest in an individual file
2 parents b918a34 + 39b49e9 commit b36c7e1

10 files changed

Lines changed: 62 additions & 52 deletions

component/main.jsonnet

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,19 @@ local customRBAC = if isOpenShift then
7676
else
7777
[];
7878

79+
local objKey(prefix, obj) =
80+
local sanitize(str) =
81+
std.asciiLower(std.strReplace(std.strReplace(str, '-', '_'), ':', '_'));
82+
local nsname = if std.objectHas(obj.metadata, 'namespace') then
83+
'%s_%s' % [ sanitize(obj.metadata.namespace), sanitize(obj.metadata.name) ]
84+
else
85+
obj.metadata.name;
86+
'%s_%s_%s' % [ prefix, sanitize(obj.kind), nsname ];
87+
88+
// NOTE(sg): We generate individual files for each object here so that we
89+
// don't need to further process the rendered manifests to feed them to the
90+
// OpenShift install process which requires that additional manifests are
91+
// stored in individual files.
7992
{
8093
[if params.namespace != 'kube-system' then '00_namespace']:
8194
kube.Namespace(params.namespace) {
@@ -88,16 +101,16 @@ else
88101
},
89102
},
90103
'01_secret': tokenSecret,
91-
'10_daemonset': [
92-
patchDaemonset(object) {
93-
metadata+: {
94-
namespace: params.namespace,
95-
},
96-
}
97-
for object in manifests
98-
if std.setMember(object.kind, [ 'DaemonSet', 'ServiceAccount' ])
99-
],
100-
'20_rbac': [
104+
} + {
105+
[objKey('10_ccm', object)]: patchDaemonset(object) {
106+
metadata+: {
107+
namespace: params.namespace,
108+
},
109+
}
110+
for object in manifests
111+
if std.setMember(object.kind, [ 'DaemonSet', 'ServiceAccount' ])
112+
} + {
113+
[objKey('20_rbac', object)]:
101114
object + if std.objectHas(object, 'subjects') then
102115
{
103116
subjects: [
@@ -109,8 +122,9 @@ else
109122
}
110123
else
111124
{}
112-
for object in manifests
113-
if std.setMember(object.kind, [ 'ClusterRole', 'ClusterRoleBinding' ])
114-
],
115-
[if std.length(customRBAC) > 0 then '30_custom_rbac']: customRBAC,
125+
for object in manifests
126+
if std.setMember(object.kind, [ 'ClusterRole', 'ClusterRoleBinding' ])
127+
} + {
128+
[objKey('30_custom_rbac', object)]: object
129+
for object in customRBAC
116130
}

tests/golden/defaults/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/10_daemonset.yaml renamed to tests/golden/defaults/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/10_ccm_daemonset_kube_system_cloudscale_cloud_controller_manager.yaml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,3 @@
1-
apiVersion: v1
2-
kind: ServiceAccount
3-
metadata:
4-
name: cloud-controller-manager
5-
namespace: syn-cloudscale-cloud-controller-manager
6-
---
71
apiVersion: apps/v1
82
kind: DaemonSet
93
metadata:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
apiVersion: v1
2+
kind: ServiceAccount
3+
metadata:
4+
name: cloud-controller-manager
5+
namespace: syn-cloudscale-cloud-controller-manager

tests/golden/defaults/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/20_rbac.yaml renamed to tests/golden/defaults/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/20_rbac_clusterrole_system:cloud-controller-manager.yaml

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -82,16 +82,3 @@ rules:
8282
- get
8383
- create
8484
- update
85-
---
86-
apiVersion: rbac.authorization.k8s.io/v1
87-
kind: ClusterRoleBinding
88-
metadata:
89-
name: system:cloud-controller-manager
90-
roleRef:
91-
apiGroup: rbac.authorization.k8s.io
92-
kind: ClusterRole
93-
name: system:cloud-controller-manager
94-
subjects:
95-
- kind: ServiceAccount
96-
name: cloud-controller-manager
97-
namespace: syn-cloudscale-cloud-controller-manager
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRoleBinding
3+
metadata:
4+
name: system:cloud-controller-manager
5+
roleRef:
6+
apiGroup: rbac.authorization.k8s.io
7+
kind: ClusterRole
8+
name: system:cloud-controller-manager
9+
subjects:
10+
- kind: ServiceAccount
11+
name: cloud-controller-manager
12+
namespace: syn-cloudscale-cloud-controller-manager

tests/golden/openshift4/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/10_daemonset.yaml renamed to tests/golden/openshift4/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/10_ccm_daemonset_kube_system_cloudscale_cloud_controller_manager.yaml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,3 @@
1-
apiVersion: v1
2-
kind: ServiceAccount
3-
metadata:
4-
name: cloud-controller-manager
5-
namespace: syn-cloudscale-cloud-controller-manager
6-
---
71
apiVersion: apps/v1
82
kind: DaemonSet
93
metadata:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
apiVersion: v1
2+
kind: ServiceAccount
3+
metadata:
4+
name: cloud-controller-manager
5+
namespace: syn-cloudscale-cloud-controller-manager

tests/golden/openshift4/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/20_rbac.yaml renamed to tests/golden/openshift4/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/20_rbac_clusterrole_system:cloud-controller-manager.yaml

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -82,16 +82,3 @@ rules:
8282
- get
8383
- create
8484
- update
85-
---
86-
apiVersion: rbac.authorization.k8s.io/v1
87-
kind: ClusterRoleBinding
88-
metadata:
89-
name: system:cloud-controller-manager
90-
roleRef:
91-
apiGroup: rbac.authorization.k8s.io
92-
kind: ClusterRole
93-
name: system:cloud-controller-manager
94-
subjects:
95-
- kind: ServiceAccount
96-
name: cloud-controller-manager
97-
namespace: syn-cloudscale-cloud-controller-manager
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRoleBinding
3+
metadata:
4+
name: system:cloud-controller-manager
5+
roleRef:
6+
apiGroup: rbac.authorization.k8s.io
7+
kind: ClusterRole
8+
name: system:cloud-controller-manager
9+
subjects:
10+
- kind: ServiceAccount
11+
name: cloud-controller-manager
12+
namespace: syn-cloudscale-cloud-controller-manager

tests/golden/openshift4/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/30_custom_rbac.yaml renamed to tests/golden/openshift4/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/30_custom_rbac_rolebinding_syn_cloudscale_cloud_controller_manager_ccm_hostnetwork.yaml

File renamed without changes.

0 commit comments

Comments
 (0)