mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-07 00:17:13 +00:00
248 lines
5.8 KiB
Go
248 lines
5.8 KiB
Go
|
package generate
|
||
|
|
||
|
// Namespace Description
|
||
|
var namespaceYaml = []byte(`
|
||
|
apiVersion: v1
|
||
|
kind: Namespace
|
||
|
metadata:
|
||
|
name: test
|
||
|
`)
|
||
|
|
||
|
// Cluster Policy to generate Role and RoleBinding with synchronize=true
|
||
|
var roleRoleBindingYamlWithSync = []byte(`
|
||
|
apiVersion: kyverno.io/v1
|
||
|
kind: ClusterPolicy
|
||
|
metadata:
|
||
|
name: "gen-role-policy"
|
||
|
spec:
|
||
|
background: false
|
||
|
rules:
|
||
|
- name: "gen-role"
|
||
|
match:
|
||
|
resources:
|
||
|
kinds:
|
||
|
- Namespace
|
||
|
generate:
|
||
|
kind: Role
|
||
|
name: "ns-role"
|
||
|
namespace: "{{request.object.metadata.name}}"
|
||
|
synchronize: true
|
||
|
data:
|
||
|
rules:
|
||
|
- apiGroups: [""]
|
||
|
resources: ["pods"]
|
||
|
verbs: ["get", "watch", "list"]
|
||
|
- name: "gen-role-binding"
|
||
|
match:
|
||
|
resources:
|
||
|
kinds:
|
||
|
- Namespace
|
||
|
generate:
|
||
|
kind: RoleBinding
|
||
|
name: "ns-role-binding"
|
||
|
namespace: "{{request.object.metadata.name}}"
|
||
|
synchronize: true
|
||
|
data:
|
||
|
subjects:
|
||
|
- apiGroup: rbac.authorization.k8s.io
|
||
|
kind: User
|
||
|
name: minikube-user
|
||
|
roleRef:
|
||
|
kind: Role
|
||
|
name: ns-role
|
||
|
namespace: "{{request.object.metadata.name}}"
|
||
|
apiGroup: rbac.authorization.k8s.io
|
||
|
`)
|
||
|
|
||
|
// Cluster Policy to generate Role and RoleBinding with Clone
|
||
|
var roleRoleBindingYamlWithClone = []byte(`
|
||
|
apiVersion: kyverno.io/v1
|
||
|
kind: ClusterPolicy
|
||
|
metadata:
|
||
|
name: "gen-role-policy"
|
||
|
spec:
|
||
|
background: false
|
||
|
rules:
|
||
|
- name: "gen-role"
|
||
|
match:
|
||
|
resources:
|
||
|
kinds:
|
||
|
- Namespace
|
||
|
generate:
|
||
|
kind: Role
|
||
|
name: "ns-role"
|
||
|
namespace: "{{request.object.metadata.name}}"
|
||
|
synchronize: true
|
||
|
clone:
|
||
|
kind: Role
|
||
|
name: "ns-role"
|
||
|
namespace: "default"
|
||
|
- name: "gen-role-binding"
|
||
|
match:
|
||
|
resources:
|
||
|
kinds:
|
||
|
- Namespace
|
||
|
generate:
|
||
|
kind: RoleBinding
|
||
|
name: "ns-role-binding"
|
||
|
namespace: "{{request.object.metadata.name}}"
|
||
|
synchronize: true
|
||
|
clone:
|
||
|
kind: RoleBinding
|
||
|
name: "ns-role-binding"
|
||
|
namespace: default
|
||
|
`)
|
||
|
|
||
|
// Source Role from which ROle is Cloned by generate
|
||
|
var sourceRoleYaml = []byte(`
|
||
|
kind: Role
|
||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||
|
metadata:
|
||
|
namespace: default
|
||
|
name: ns-role
|
||
|
rules:
|
||
|
- apiGroups: ["*"]
|
||
|
resources: ["*"]
|
||
|
verbs: ["get", "watch", "list", "delete", "create"]
|
||
|
`)
|
||
|
|
||
|
// Source RoleBinding from which RoleBinding is Cloned by generate
|
||
|
var sourceRoleBindingYaml = []byte(`
|
||
|
kind: RoleBinding
|
||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||
|
metadata:
|
||
|
name: ns-role-binding
|
||
|
namespace: default
|
||
|
subjects:
|
||
|
- apiGroup: rbac.authorization.k8s.io
|
||
|
kind: User
|
||
|
name: minikube-user
|
||
|
roleRef:
|
||
|
kind: Role
|
||
|
name: ns-role
|
||
|
apiGroup: rbac.authorization.k8s.io
|
||
|
`)
|
||
|
|
||
|
// ClusterPolicy to generate ClusterRole and ClusterRoleBinding with synchronize = true
|
||
|
var genClusterRoleYamlWithSync = []byte(`
|
||
|
apiVersion: kyverno.io/v1
|
||
|
kind: ClusterPolicy
|
||
|
metadata:
|
||
|
name: "gen-cluster-policy"
|
||
|
spec:
|
||
|
background: false
|
||
|
rules:
|
||
|
- name: "gen-cluster-role"
|
||
|
match:
|
||
|
resources:
|
||
|
kinds:
|
||
|
- Namespace
|
||
|
generate:
|
||
|
kind: ClusterRole
|
||
|
name: ns-cluster-role
|
||
|
synchronize: true
|
||
|
data:
|
||
|
rules:
|
||
|
- apiGroups: [""]
|
||
|
resources: ["pods"]
|
||
|
verbs: ["get", "watch", "list"]
|
||
|
- name: "gen-cluster-role-binding"
|
||
|
match:
|
||
|
resources:
|
||
|
kinds:
|
||
|
- Namespace
|
||
|
generate:
|
||
|
kind: ClusterRoleBinding
|
||
|
name: ns-cluster-role-binding
|
||
|
synchronize: true
|
||
|
data:
|
||
|
roleRef:
|
||
|
apiGroup: rbac.authorization.k8s.io
|
||
|
kind: ClusterRole
|
||
|
name: ns-cluster-role
|
||
|
subjects:
|
||
|
- kind: ServiceAccount
|
||
|
name: "kyverno-service-account"
|
||
|
namespace: "{{request.object.metadata.name}}"
|
||
|
`)
|
||
|
|
||
|
// ClusterPolicy to generate ClusterRole and ClusterRoleBinding with clone = true
|
||
|
var genClusterRoleYamlWithClone = []byte(`
|
||
|
apiVersion: kyverno.io/v1
|
||
|
kind: ClusterPolicy
|
||
|
metadata:
|
||
|
name: "gen-cluster-policy"
|
||
|
spec:
|
||
|
background: false
|
||
|
rules:
|
||
|
- name: "gen-cluster-role"
|
||
|
match:
|
||
|
resources:
|
||
|
kinds:
|
||
|
- Namespace
|
||
|
generate:
|
||
|
kind: ClusterRole
|
||
|
name: ns-cluster-role
|
||
|
namespace: "{{request.object.metadata.name}}"
|
||
|
synchronize: true
|
||
|
clone:
|
||
|
kind: ClusterRole
|
||
|
name: base-cluster-role
|
||
|
namespace: default
|
||
|
- name: "gen-cluster-role-binding"
|
||
|
match:
|
||
|
resources:
|
||
|
kinds:
|
||
|
- Namespace
|
||
|
generate:
|
||
|
kind: ClusterRoleBinding
|
||
|
name: ns-cluster-role-binding
|
||
|
namespace: "{{request.object.metadata.name}}"
|
||
|
synchronize: true
|
||
|
clone:
|
||
|
kind: ClusterRole
|
||
|
name: base-cluster-role-binding
|
||
|
namespace: default
|
||
|
`)
|
||
|
|
||
|
var baseClusterRoleData = []byte(`
|
||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||
|
kind: ClusterRole
|
||
|
metadata:
|
||
|
name: base-cluster-role
|
||
|
rules:
|
||
|
- apiGroups:
|
||
|
- "*"
|
||
|
resources:
|
||
|
- namespaces
|
||
|
- networkpolicies
|
||
|
- secrets
|
||
|
- configmaps
|
||
|
- resourcequotas
|
||
|
- limitranges
|
||
|
- roles
|
||
|
- clusterroles
|
||
|
- rolebindings
|
||
|
- clusterrolebindings
|
||
|
verbs:
|
||
|
- create # generate new resources
|
||
|
- get # check the contents of exiting resources
|
||
|
- update # update existing resource, if required configuration defined in policy is not present
|
||
|
- delete # clean-up, if the generate trigger resource is deleted
|
||
|
`)
|
||
|
|
||
|
var baseClusterRoleBindingData = []byte(`
|
||
|
kind: ClusterRoleBinding
|
||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||
|
metadata:
|
||
|
name: base-cluster-role-binding
|
||
|
roleRef:
|
||
|
apiGroup: rbac.authorization.k8s.io
|
||
|
kind: ClusterRole
|
||
|
name: base-cluster-role
|
||
|
subjects:
|
||
|
- kind: ServiceAccount
|
||
|
name: kyverno-service-account
|
||
|
namespace: kyverno
|
||
|
`)
|