Files
deployment-portal-be/templates/chaos_main.jsonnet
Anoop Narang 62895e4138 [INFRA-65] | Add packetloss experiment (#73)
* [INFRA-65] | Anoop | Add support for packet loss experiment

* [INFRA-65] | Anoop | Fix label show for alerts

* [INFRA-65] | Anoop | Update litmus-go image
2020-09-21 09:43:58 +05:30

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 {})