Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions component/main.jsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -131,10 +131,12 @@ local serviceAccount(mrName) = addKubernetesNameLabel({
local role(prefix, defaultNamespace) =
function(path) addKubernetesNameLabel({
local nsName = namespacedName(path, namespace=defaultNamespace),
local name = prefix + nsName.name,
assert std.length(name) <= 63 : "Resource name '%s' too long!" % name,
apiVersion: 'rbac.authorization.k8s.io/v1',
kind: 'Role',
metadata: {
name: prefix + nsName.name,
name: name,
namespace: nsName.namespace,
},
});
Expand All @@ -150,7 +152,7 @@ local clusterRole(prefix) =

local roleBinding(roleNamePrefix) =
function(roleNs, roleName, saNs, saName) addKubernetesNameLabel({
local bindingName = std.join(':', std.prune([ 'espejote', 'supplemental', roleName, if saNs != roleNs then saNs, saName ])),
local bindingName = std.join(':', std.prune([ 'esp', 'x', roleName, if saNs != roleNs then saNs, saName ])),
apiVersion: 'rbac.authorization.k8s.io/v1',
kind: 'RoleBinding',
metadata: {
Expand Down Expand Up @@ -204,7 +206,7 @@ local supplementalRoles = std.prune({
['43_supplemental_role_%(namespace)s_%(name)s' % namespacedName(path)]:
local roles = std.get(params.managedResources[path], '_roles', {});
local mrNsName = namespacedName(path);
local roleNamePrefix = std.join(':', [ 'espejote', 'supplemental', mrNsName.namespace, mrNsName.name, '' ]);
local roleNamePrefix = std.join(':', [ 'esp', 'x', mrNsName.namespace, mrNsName.name, '' ]);
com.generateResources(roles, role(roleNamePrefix, mrNsName.namespace)) +
roleBindingsForManagedResourceAndRoles(roleNamePrefix)(path, std.objectFields(roles)) +
roleBindingsForManagedResourceAndRoles(roleNamePrefix)(path, std.get(params.managedResources[path], '_roleBindings', []))
Expand All @@ -215,7 +217,7 @@ local supplementalClusterRoles = std.prune({
[if std.length(std.get(params.managedResources[path], '_clusterRoles', {})) > 0 then '44_supplemental_cluster_role_%(namespace)s_%(name)s' % namespacedName(path)]:
local roles = std.get(params.managedResources[path], '_clusterRoles', {});
local mrNsName = namespacedName(path);
local roleNamePrefix = std.join(':', [ 'espejote', 'supplemental', mrNsName.namespace, mrNsName.name, '' ]);
local roleNamePrefix = std.join(':', [ 'esp', 'x', mrNsName.namespace, mrNsName.name, '' ]);
com.generateResources(roles, clusterRole(roleNamePrefix)) +
clusterRoleBindingsForManagedResourceAndRoles(roleNamePrefix)(path, std.objectFields(roles)) +
clusterRoleBindingsForManagedResourceAndRoles(roleNamePrefix)(path, std.get(params.managedResources[path], '_clusterRoleBindings', []))
Expand Down
19 changes: 11 additions & 8 deletions lib/espejote.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -126,12 +126,15 @@ local generateRolesForManagedResource(manifest) =
kind: if clusterScoped(resource) then 'ClusterRole' else 'Role',
metadata: {
[if !clusterScoped(resource) then 'namespace']: resourceNs,
name: std.join(':', std.prune([
'espejote',
'managedresource',
if clusterScoped(resource) || manifestMeta.namespace != resourceNs then manifestMeta.namespace,
manifestMeta.name,
] + suffixes)),
name:
local name = std.join(':', std.prune([
'esp',
'mr',
if clusterScoped(resource) || manifestMeta.namespace != resourceNs then manifestMeta.namespace,
manifestMeta.name,
] + suffixes));
assert std.length(name) <= 63 : "Resource name '%s' too long!" % name;
name,
},
rules: [
{
Expand All @@ -145,11 +148,11 @@ local generateRolesForManagedResource(manifest) =
};

[
roleFromResource([ 'triggers', item.name ], item.watchResource)
roleFromResource([ 'trg', item.name ], item.watchResource)
for item in std.get(manifestSpec, 'triggers', [])
if std.get(std.get(item, 'watchResource', {}), 'kind', '') != ''
] + [
roleFromResource([ 'context', item.name ], item.resource)
roleFromResource([ 'ctx', item.name ], item.resource)
for item in std.get(manifestSpec, 'context', [])
if std.get(std.get(item, 'resource', {}), 'kind', '') != ''
];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
labels:
app.kubernetes.io/name: espejote-supplemental-my-namespace-auto-roles-1-espejote-update-configmaps
name: espejote:supplemental:my-namespace:auto-roles-1:espejote-update-configmaps
app.kubernetes.io/name: esp-x-my-namespace-auto-roles-1-espejote-update-configmaps
name: esp:x:my-namespace:auto-roles-1:espejote-update-configmaps
namespace: my-namespace
rules:
- apiGroups:
Expand All @@ -19,13 +19,13 @@ apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
labels:
app.kubernetes.io/name: espejote-supplemental-espejote-update-configmaps-espejote-auto-roles-1
name: espejote:supplemental:espejote-update-configmaps:espejote-auto-roles-1
app.kubernetes.io/name: esp-x-espejote-update-configmaps-espejote-auto-roles-1
name: esp:x:espejote-update-configmaps:espejote-auto-roles-1
namespace: my-namespace
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: espejote:supplemental:my-namespace:auto-roles-1:espejote-update-configmaps
name: esp:x:my-namespace:auto-roles-1:espejote-update-configmaps
subjects:
- kind: ServiceAccount
name: espejote-auto-roles-1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
labels:
app.kubernetes.io/name: espejote-supplemental-my-namespace-copy-configmap-configmaps
name: espejote:supplemental:my-namespace:copy-configmap:configmaps
app.kubernetes.io/name: esp-x-my-namespace-copy-configmap-configmaps
name: esp:x:my-namespace:copy-configmap:configmaps
namespace: a
rules:
- apiGroups:
Expand All @@ -17,8 +17,8 @@ apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
labels:
app.kubernetes.io/name: espejote-supplemental-my-namespace-copy-configmap-configmaps
name: espejote:supplemental:my-namespace:copy-configmap:configmaps
app.kubernetes.io/name: esp-x-my-namespace-copy-configmap-configmaps
name: esp:x:my-namespace:copy-configmap:configmaps
namespace: b
rules:
- apiGroups:
Expand All @@ -32,8 +32,8 @@ apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
labels:
app.kubernetes.io/name: espejote-supplemental-my-namespace-copy-configmap-configmaps
name: espejote:supplemental:my-namespace:copy-configmap:configmaps
app.kubernetes.io/name: esp-x-my-namespace-copy-configmap-configmaps
name: esp:x:my-namespace:copy-configmap:configmaps
namespace: my-namespace
rules:
- apiGroups:
Expand All @@ -47,13 +47,13 @@ apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
labels:
app.kubernetes.io/name: espejote-supplemental-configmaps-my-namespace-espejote-copy-configmap
name: espejote:supplemental:configmaps:my-namespace:espejote-copy-configmap
app.kubernetes.io/name: esp-x-configmaps-my-namespace-espejote-copy-configmap
name: esp:x:configmaps:my-namespace:espejote-copy-configmap
namespace: a
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: espejote:supplemental:my-namespace:copy-configmap:configmaps
name: esp:x:my-namespace:copy-configmap:configmaps
subjects:
- kind: ServiceAccount
name: espejote-copy-configmap
Expand All @@ -63,13 +63,13 @@ apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
labels:
app.kubernetes.io/name: espejote-supplemental-configmaps-my-namespace-espejote-copy-configmap
name: espejote:supplemental:configmaps:my-namespace:espejote-copy-configmap
app.kubernetes.io/name: esp-x-configmaps-my-namespace-espejote-copy-configmap
name: esp:x:configmaps:my-namespace:espejote-copy-configmap
namespace: b
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: espejote:supplemental:my-namespace:copy-configmap:configmaps
name: esp:x:my-namespace:copy-configmap:configmaps
subjects:
- kind: ServiceAccount
name: espejote-copy-configmap
Expand All @@ -79,13 +79,13 @@ apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
labels:
app.kubernetes.io/name: espejote-supplemental-configmaps-espejote-copy-configmap
name: espejote:supplemental:configmaps:espejote-copy-configmap
app.kubernetes.io/name: esp-x-configmaps-espejote-copy-configmap
name: esp:x:configmaps:espejote-copy-configmap
namespace: my-namespace
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: espejote:supplemental:my-namespace:copy-configmap:configmaps
name: esp:x:my-namespace:copy-configmap:configmaps
subjects:
- kind: ServiceAccount
name: espejote-copy-configmap
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
labels:
app.kubernetes.io/name: espejote-supplemental-admin-copy-configmap
name: espejote:supplemental:admin:copy-configmap
app.kubernetes.io/name: esp-x-admin-copy-configmap
name: esp:x:admin:copy-configmap
namespace: my-namespace
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: espejote:supplemental:my-namespace:copy-secret:admin
name: esp:x:my-namespace:copy-secret:admin
subjects:
- kind: ServiceAccount
name: copy-configmap
Expand All @@ -18,13 +18,13 @@ apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
labels:
app.kubernetes.io/name: espejote-supplemental-argocd-manager-copy-configmap
name: espejote:supplemental:argocd-manager:copy-configmap
app.kubernetes.io/name: esp-x-argocd-manager-copy-configmap
name: esp:x:argocd-manager:copy-configmap
namespace: my-namespace
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: espejote:supplemental:my-namespace:copy-secret:argocd-manager
name: esp:x:my-namespace:copy-secret:argocd-manager
subjects:
- kind: ServiceAccount
name: copy-configmap
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/name: espejote-supplemental-my-namespace-copy-configmap-namespace
name: espejote:supplemental:my-namespace:copy-configmap:namespace
app.kubernetes.io/name: esp-x-my-namespace-copy-configmap-namespace
name: esp:x:my-namespace:copy-configmap:namespace
rules:
- apiGroups:
- ''
Expand All @@ -16,12 +16,12 @@ apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app.kubernetes.io/name: espejote-supplemental-namespace-my-namespace-espejote-copy-configmap
name: espejote:supplemental:namespace:my-namespace:espejote-copy-configmap
app.kubernetes.io/name: esp-x-namespace-my-namespace-espejote-copy-configmap
name: esp:x:namespace:my-namespace:espejote-copy-configmap
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: espejote:supplemental:my-namespace:copy-configmap:namespace
name: esp:x:my-namespace:copy-configmap:namespace
subjects:
- kind: ServiceAccount
name: espejote-copy-configmap
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ spec:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: espejote:managedresource:my-namespace:auto-roles-1:triggers:namespace
name: esp:mr:my-namespace:auto-roles-1:trg:namespace
rules:
- apiGroups:
- ''
Expand All @@ -65,7 +65,7 @@ rules:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: espejote:managedresource:my-namespace:auto-roles-1:triggers:configmap
name: esp:mr:my-namespace:auto-roles-1:trg:configmap
rules:
- apiGroups:
- ''
Expand All @@ -79,7 +79,7 @@ rules:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: espejote:managedresource:my-namespace:auto-roles-1:triggers:override-namespaced-1
name: esp:mr:my-namespace:auto-roles-1:trg:override-namespaced-1
rules:
- apiGroups:
- ''
Expand All @@ -93,7 +93,7 @@ rules:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: espejote:managedresource:auto-roles-1:triggers:override-namespaced-2
name: esp:mr:auto-roles-1:trg:override-namespaced-2
namespace: my-namespace
rules:
- apiGroups:
Expand All @@ -108,7 +108,7 @@ rules:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: espejote:managedresource:auto-roles-1:triggers:weird-resource
name: esp:mr:auto-roles-1:trg:weird-resource
namespace: my-namespace
rules:
- apiGroups:
Expand All @@ -123,11 +123,11 @@ rules:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: espejote:managedresource:my-namespace:auto-roles-1:triggers:namespace
name: esp:mr:my-namespace:auto-roles-1:trg:namespace
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: espejote:managedresource:my-namespace:auto-roles-1:triggers:namespace
name: esp:mr:my-namespace:auto-roles-1:trg:namespace
subjects:
- kind: ServiceAccount
name: espejote-auto-roles-1
Expand All @@ -136,11 +136,11 @@ subjects:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: espejote:managedresource:my-namespace:auto-roles-1:triggers:configmap
name: esp:mr:my-namespace:auto-roles-1:trg:configmap
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: espejote:managedresource:my-namespace:auto-roles-1:triggers:configmap
name: esp:mr:my-namespace:auto-roles-1:trg:configmap
subjects:
- kind: ServiceAccount
name: espejote-auto-roles-1
Expand All @@ -149,11 +149,11 @@ subjects:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: espejote:managedresource:my-namespace:auto-roles-1:triggers:override-namespaced-1
name: esp:mr:my-namespace:auto-roles-1:trg:override-namespaced-1
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: espejote:managedresource:my-namespace:auto-roles-1:triggers:override-namespaced-1
name: esp:mr:my-namespace:auto-roles-1:trg:override-namespaced-1
subjects:
- kind: ServiceAccount
name: espejote-auto-roles-1
Expand All @@ -162,12 +162,12 @@ subjects:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: espejote:managedresource:auto-roles-1:triggers:override-namespaced-2
name: esp:mr:auto-roles-1:trg:override-namespaced-2
namespace: my-namespace
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: espejote:managedresource:auto-roles-1:triggers:override-namespaced-2
name: esp:mr:auto-roles-1:trg:override-namespaced-2
subjects:
- kind: ServiceAccount
name: espejote-auto-roles-1
Expand All @@ -176,12 +176,12 @@ subjects:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: espejote:managedresource:auto-roles-1:triggers:weird-resource
name: esp:mr:auto-roles-1:trg:weird-resource
namespace: my-namespace
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: espejote:managedresource:auto-roles-1:triggers:weird-resource
name: esp:mr:auto-roles-1:trg:weird-resource
subjects:
- kind: ServiceAccount
name: espejote-auto-roles-1
Expand Down
Loading
Loading