* [INFRA-65] | Anoop | Add support for packet loss experiment * [INFRA-65] | Anoop | Fix label show for alerts * [INFRA-65] | Anoop | Update litmus-go image
119 lines
3.1 KiB
Jsonnet
119 lines
3.1 KiB
Jsonnet
local chaos_engines = import 'chaos_engine.jsonnet';
|
|
local chaos_experiments = import 'chaos_experiment.jsonnet';
|
|
local deployment_manifest = import 'deployment_manifest.jsonnet';
|
|
local deployment = deployment_manifest.deployment;
|
|
local chaos_util = import 'chaos_util.jsonnet';
|
|
|
|
local chaos_sa = function(experiment) {
|
|
apiVersion: 'v1',
|
|
kind: 'ServiceAccount',
|
|
metadata: {
|
|
labels: {
|
|
name: '%s-sa' % chaos_util.experimentName(experiment),
|
|
},
|
|
name: '%s-sa' % chaos_util.experimentName(experiment),
|
|
namespace: deployment.namespace,
|
|
},
|
|
};
|
|
|
|
local chaos_role = function(experiment) {
|
|
apiVersion: 'rbac.authorization.k8s.io/v1',
|
|
kind: 'Role',
|
|
metadata: {
|
|
labels: {
|
|
name: '%s-sa' % chaos_util.experimentName(experiment),
|
|
},
|
|
name: '%s-sa' % chaos_util.experimentName(experiment),
|
|
namespace: deployment.namespace,
|
|
},
|
|
rules: [
|
|
{
|
|
apiGroups: [
|
|
'',
|
|
'litmuschaos.io',
|
|
'batch',
|
|
],
|
|
resources: [
|
|
'pods',
|
|
'jobs',
|
|
'pods/log',
|
|
'events',
|
|
'chaosengines',
|
|
'chaosexperiments',
|
|
'chaosresults',
|
|
],
|
|
verbs: [
|
|
'create',
|
|
'list',
|
|
'get',
|
|
'patch',
|
|
'update',
|
|
'delete',
|
|
],
|
|
},
|
|
],
|
|
};
|
|
|
|
local chaos_rolebinding = function(experiment) {
|
|
apiVersion: 'rbac.authorization.k8s.io/v1',
|
|
kind: 'RoleBinding',
|
|
metadata: {
|
|
labels: {
|
|
name: '%s-sa' % chaos_util.experimentName(experiment),
|
|
},
|
|
name: '%s-sa' % chaos_util.experimentName(experiment),
|
|
namespace: deployment.namespace,
|
|
},
|
|
roleRef: {
|
|
apiGroup: 'rbac.authorization.k8s.io',
|
|
kind: 'Role',
|
|
name: '%s-sa' % chaos_util.experimentName(experiment),
|
|
},
|
|
subjects: [
|
|
{
|
|
kind: 'ServiceAccount',
|
|
name: '%s-sa' % chaos_util.experimentName(experiment),
|
|
},
|
|
],
|
|
};
|
|
|
|
local chaos_privileged_rolebinding = function(experiment) {
|
|
apiVersion: 'rbac.authorization.k8s.io/v1',
|
|
kind: 'RoleBinding',
|
|
metadata: {
|
|
name: 'psp:privileged:%s-sa' % chaos_util.experimentName(experiment),
|
|
namespace: deployment.namespace,
|
|
},
|
|
roleRef: {
|
|
apiGroup: 'rbac.authorization.k8s.io',
|
|
kind: 'ClusterRole',
|
|
name: 'psp:privileged',
|
|
},
|
|
subjects: [
|
|
{
|
|
kind: 'ServiceAccount',
|
|
name: '%s-sa' % chaos_util.experimentName(experiment),
|
|
},
|
|
],
|
|
};
|
|
|
|
local getFiles = function(s, fn) {
|
|
[s % index]: fn(deployment.faults[index])
|
|
for index in std.range(0, std.length(chaos_experiments) - 1)
|
|
};
|
|
|
|
|
|
if 'faults' in deployment && std.length(deployment.faults) > 0 then
|
|
(if chaos_experiments != null then {
|
|
['1_%s_chaos_experiment.json' % index]: chaos_experiments[index]
|
|
for index in std.range(0, std.length(chaos_experiments) - 1)
|
|
} else {}) +
|
|
getFiles('2_%s_chaos_sa.json', chaos_sa) +
|
|
getFiles('3_%s_chaos_role.json', chaos_role) +
|
|
getFiles('4_%s_chaos_rolebinding.json', chaos_rolebinding) +
|
|
getFiles('5_%s_chaos_privileged_rolebinding.json', chaos_privileged_rolebinding) +
|
|
(if chaos_engines != null then {
|
|
['6_%s_chaos_engine.json' % index]: chaos_engines[index]
|
|
for index in std.range(0, std.length(chaos_engines) - 1)
|
|
} else {})
|