From 7adf5d35a1ac6569b59cac8b70fe0b16c8b7d1ea Mon Sep 17 00:00:00 2001 From: Amit Kumar Das Date: Fri, 15 Jul 2022 17:30:39 +0530 Subject: [PATCH] Directory restructure to add scenarios and experiments (#559) * Updated dir struture with scenarios and experiments dir Signed-off-by: Amit Kumar Das * Added icons Signed-off-by: Amit Kumar Das --- ...s-ssm-chaos-by-id.chartserviceversion.yaml | 43 + .../aws-ssm/aws-ssm-chaos-by-id/engine.yaml | 62 + .../aws-ssm-chaos-by-id/experiment.yaml | 129 + .../aws-ssm/aws-ssm-chaos-by-id/rbac.yaml | 62 + ...-ssm-chaos-by-tag.chartserviceversion.yaml | 43 + .../aws-ssm/aws-ssm-chaos-by-tag/engine.yaml | 62 + .../aws-ssm-chaos-by-tag/experiment.yaml | 133 + .../aws-ssm/aws-ssm-chaos-by-tag/rbac.yaml | 62 + .../aws-ssm/aws-ssm.chartserviceversion.yaml | 38 + experiments/aws-ssm/aws-ssm.package.yaml | 8 + experiments/aws-ssm/experiments.yaml | 266 ++ .../aws-ssm/icons/aws-ssm-chaos-by-id.png | Bin 0 -> 3152 bytes .../aws-ssm/icons/aws-ssm-chaos-by-tag.png | Bin 0 -> 3152 bytes experiments/aws-ssm/icons/aws-ssm.png | Bin 0 -> 3152 bytes .../azure-disk-loss.chartserviceversion.yaml | 42 + experiments/azure/azure-disk-loss/engine.yaml | 32 + .../azure/azure-disk-loss/experiment.yaml | 95 + experiments/azure/azure-disk-loss/rbac.yaml | 64 + ...ure-instance-stop.chartserviceversion.yaml | 44 + .../azure/azure-instance-stop/engine.yaml | 33 + .../azure/azure-instance-stop/experiment.yaml | 96 + .../azure/azure-instance-stop/rbac.yaml | 62 + .../azure/azure.chartserviceversion.yaml | 41 + experiments/azure/azure.package.yaml | 10 + experiments/azure/experiments.yaml | 195 ++ experiments/azure/icons/azure-disk-loss.png | Bin 0 -> 22398 bytes .../azure/icons/azure-instance-stop.png | Bin 0 -> 22398 bytes experiments/azure/icons/azure.png | Bin 0 -> 22398 bytes ...sandra-pod-delete.chartserviceversion.yaml | 47 + .../cassandra-pod-delete/engine.yaml | 55 + .../cassandra-pod-delete/experiment.yaml | 121 + .../cassandra/cassandra-pod-delete/rbac.yaml | 73 + .../cassandra.chartserviceversion.yaml | 42 + experiments/cassandra/cassandra.package.yaml | 5 + experiments/cassandra/experiments.yaml | 123 + .../cassandra/icons/cassandra-pod-delete.png | Bin 0 -> 959 bytes experiments/cassandra/icons/cassandra.png | Bin 0 -> 29049 bytes ...oredns-pod-delete.chartserviceversion.yaml | 43 + .../coredns/coredns-pod-delete/engine.yaml | 30 + .../coredns-pod-delete/experiment.yaml | 72 + .../coredns/coredns-pod-delete/rbac.yaml | 36 + .../coredns/coredns.chartserviceversion.yaml | 42 + experiments/coredns/coredns.package.yaml | 5 + experiments/coredns/experiments.yaml | 74 + .../coredns/icons/coredns-pod-delete.png | Bin 0 -> 20309 bytes experiments/coredns/icons/coredns.png | Bin 0 -> 20309 bytes experiments/gcp/experiments.yaml | 374 +++ .../gcp/gcp-vm-disk-loss-by-label/engine.yaml | 41 + .../gcp-vm-disk-loss-by-label/experiment.yaml | 83 + ...isk-loss-by-label.chartserviceversion.yaml | 33 + .../gcp/gcp-vm-disk-loss-by-label/rbac.yaml | 62 + experiments/gcp/gcp-vm-disk-loss/engine.yaml | 40 + .../gcp/gcp-vm-disk-loss/experiment.yaml | 89 + .../gcp-vm-disk-loss.chartserviceversion.yaml | 33 + experiments/gcp/gcp-vm-disk-loss/rbac.yaml | 62 + .../gcp-vm-instance-stop-by-label/engine.yaml | 46 + .../experiment.yaml | 95 + ...nce-stop-by-label.chartserviceversion.yaml | 33 + .../gcp-vm-instance-stop-by-label/rbac.yaml | 66 + .../gcp/gcp-vm-instance-stop/engine.yaml | 42 + .../gcp/gcp-vm-instance-stop/experiment.yaml | 99 + ...-vm-instance-stop.chartserviceversion.yaml | 33 + .../gcp/gcp-vm-instance-stop/rbac.yaml | 66 + experiments/gcp/gcp.chartserviceversion.yaml | 42 + experiments/gcp/gcp.package.yaml | 14 + .../gcp/icons/gcp-vm-disk-loss-by-label.png | Bin 0 -> 40149 bytes experiments/gcp/icons/gcp-vm-disk-loss.png | Bin 0 -> 40149 bytes .../icons/gcp-vm-instance-stop-by-label.png | Bin 0 -> 68699 bytes .../gcp/icons/gcp-vm-instance-stop.png | Bin 0 -> 68699 bytes experiments/gcp/icons/gcp.png | Bin 0 -> 30752 bytes .../container-kill.chartserviceversion.yaml | 48 + .../generic/container-kill/engine.yaml | 42 + .../engine_nginx_getstarted.yaml | 46 + .../generic/container-kill/experiment.yaml | 125 + .../generic/container-kill/rbac-psp.yaml | 86 + experiments/generic/container-kill/rbac.yaml | 81 + .../container-kill/rbac_nginx_getstarted.yaml | 78 + .../disk-fill.chartserviceversion.yaml | 48 + experiments/generic/disk-fill/engine.yaml | 34 + experiments/generic/disk-fill/experiment.yaml | 125 + experiments/generic/disk-fill/rbac-psp.yaml | 85 + experiments/generic/disk-fill/rbac.yaml | 80 + ...cker-service-kill.chartserviceversion.yaml | 47 + .../generic/docker-service-kill/engine.yaml | 23 + .../docker-service-kill/experiment.yaml | 85 + .../generic/docker-service-kill/rbac-psp.yaml | 71 + .../generic/docker-service-kill/rbac.yaml | 66 + experiments/generic/experiments.yaml | 2959 +++++++++++++++++ .../generic/generic.chartserviceversion.yaml | 101 + experiments/generic/generic.package.yaml | 77 + experiments/generic/icons/byoc-pod-delete.png | Bin 0 -> 959 bytes experiments/generic/icons/container-kill.png | Bin 0 -> 2281 bytes experiments/generic/icons/disk-fill.png | Bin 0 -> 1703 bytes .../generic/icons/docker-service-kill.png | Bin 0 -> 12130 bytes experiments/generic/icons/generic.png | Bin 0 -> 12130 bytes .../generic/icons/kubelet-service-kill.png | Bin 0 -> 2647 bytes experiments/generic/icons/node-cpu-hog.png | Bin 0 -> 2453 bytes experiments/generic/icons/node-drain.png | Bin 0 -> 1898 bytes experiments/generic/icons/node-io-stress.png | Bin 0 -> 12130 bytes experiments/generic/icons/node-memory-hog.png | Bin 0 -> 1571 bytes experiments/generic/icons/node-restart.png | Bin 0 -> 12130 bytes experiments/generic/icons/node-taint.png | Bin 0 -> 12130 bytes experiments/generic/icons/pod-autoscaler.png | Bin 0 -> 12130 bytes .../generic/icons/pod-cpu-hog-exec.png | Bin 0 -> 2078 bytes experiments/generic/icons/pod-cpu-hog.png | Bin 0 -> 2078 bytes experiments/generic/icons/pod-delete.png | Bin 0 -> 959 bytes experiments/generic/icons/pod-dns-error.png | Bin 0 -> 12130 bytes experiments/generic/icons/pod-dns-spoof.png | Bin 0 -> 12130 bytes .../generic/icons/pod-http-latency.png | Bin 0 -> 12130 bytes experiments/generic/icons/pod-io-stress.png | Bin 0 -> 12130 bytes .../generic/icons/pod-memory-hog-exec.png | Bin 0 -> 1516 bytes experiments/generic/icons/pod-memory-hog.png | Bin 0 -> 1516 bytes .../generic/icons/pod-network-corruption.png | Bin 0 -> 2650 bytes .../generic/icons/pod-network-duplication.png | Bin 0 -> 12130 bytes .../generic/icons/pod-network-latency.png | Bin 0 -> 2450 bytes .../generic/icons/pod-network-loss.png | Bin 0 -> 2715 bytes .../generic/icons/pod-network-partition.png | Bin 0 -> 12130 bytes .../generic/kubelet-service-kill/engine.yaml | 25 + .../kubelet-service-kill/experiment.yaml | 84 + ...elet-service-kill.chartserviceversion.yaml | 50 + .../kubelet-service-kill/rbac-psp.yaml | 71 + .../generic/kubelet-service-kill/rbac.yaml | 66 + experiments/generic/node-cpu-hog/engine.yaml | 37 + .../generic/node-cpu-hog/experiment.yaml | 104 + .../node-cpu-hog.chartserviceversion.yaml | 50 + .../generic/node-cpu-hog/rbac-psp.yaml | 71 + experiments/generic/node-cpu-hog/rbac.yaml | 66 + experiments/generic/node-drain/engine.yaml | 26 + .../generic/node-drain/experiment.yaml | 85 + .../node-drain.chartserviceversion.yaml | 49 + experiments/generic/node-drain/rbac-psp.yaml | 75 + experiments/generic/node-drain/rbac.yaml | 70 + .../generic/node-io-stress/engine.yaml | 39 + .../generic/node-io-stress/experiment.yaml | 116 + .../node-io-stress.chartserviceversion.yaml | 49 + .../generic/node-io-stress/rbac-psp.yaml | 71 + experiments/generic/node-io-stress/rbac.yaml | 66 + .../generic/node-memory-hog/engine.yaml | 37 + .../generic/node-memory-hog/experiment.yaml | 107 + .../node-memory-hog.chartserviceversion.yaml | 50 + .../generic/node-memory-hog/rbac-psp.yaml | 71 + experiments/generic/node-memory-hog/rbac.yaml | 66 + experiments/generic/node-poweroff/engine.yaml | 33 + .../generic/node-poweroff/experiment.yaml | 97 + .../node-poweroff.chartserviceversion.yaml | 39 + .../generic/node-poweroff/rbac-psp.yaml | 71 + experiments/generic/node-poweroff/rbac.yaml | 66 + experiments/generic/node-restart/engine.yaml | 33 + .../generic/node-restart/experiment.yaml | 94 + .../node-restart.chartserviceversion.yaml | 39 + .../generic/node-restart/rbac-psp.yaml | 71 + experiments/generic/node-restart/rbac.yaml | 66 + experiments/generic/node-taint/engine.yaml | 31 + .../generic/node-taint/experiment.yaml | 90 + .../node-taint.chartserviceversion.yaml | 49 + experiments/generic/node-taint/rbac-psp.yaml | 75 + experiments/generic/node-taint/rbac.yaml | 70 + .../generic/pod-autoscaler/engine.yaml | 28 + .../generic/pod-autoscaler/experiment.yaml | 78 + .../pod-autoscaler.chartserviceversion.yaml | 47 + .../generic/pod-autoscaler/rbac-psp.yaml | 71 + experiments/generic/pod-autoscaler/rbac.yaml | 66 + .../generic/pod-cpu-hog-exec/engine.yaml | 30 + .../generic/pod-cpu-hog-exec/experiment.yaml | 105 + .../pod-cpu-hog-exec.chartserviceversion.yaml | 51 + .../generic/pod-cpu-hog-exec/rbac-psp.yaml | 85 + .../generic/pod-cpu-hog-exec/rbac.yaml | 80 + experiments/generic/pod-cpu-hog/engine.yaml | 36 + .../generic/pod-cpu-hog/experiment.yaml | 127 + .../pod-cpu-hog.chartserviceversion.yaml | 53 + experiments/generic/pod-cpu-hog/rbac-psp.yaml | 85 + experiments/generic/pod-cpu-hog/rbac.yaml | 80 + .../generic/pod-delete/ansible/engine.yaml | 31 + .../pod-delete/ansible/experiment.yaml | 84 + .../pod-delete/ansible/powerfulseal_rbac.yaml | 38 + .../generic/pod-delete/ansible/rbac.yaml | 40 + experiments/generic/pod-delete/engine.yaml | 33 + .../pod-delete/engine_nginx_getstarted.yaml | 37 + .../generic/pod-delete/experiment.yaml | 106 + .../pod-delete.chartserviceversion.yaml | 52 + .../generic/pod-delete/python/engine.yaml | 33 + .../generic/pod-delete/python/experiment.yaml | 90 + .../generic/pod-delete/python/rbac.yaml | 58 + experiments/generic/pod-delete/rbac-psp.yaml | 86 + experiments/generic/pod-delete/rbac.yaml | 81 + .../pod-delete/rbac_nginx_getstarted.yaml | 77 + experiments/generic/pod-dns-error/engine.yaml | 41 + .../generic/pod-dns-error/experiment.yaml | 115 + .../pod-dns-error.chartserviceversion.yaml | 37 + .../generic/pod-dns-error/rbac-psp.yaml | 85 + experiments/generic/pod-dns-error/rbac.yaml | 80 + experiments/generic/pod-dns-spoof/engine.yaml | 37 + .../generic/pod-dns-spoof/experiment.yaml | 111 + .../pod-dns-spoof.chartserviceversion.yaml | 37 + .../generic/pod-dns-spoof/rbac-psp.yaml | 85 + experiments/generic/pod-dns-spoof/rbac.yaml | 80 + .../generic/pod-http-latency/engine.yaml | 41 + .../generic/pod-http-latency/experiment.yaml | 134 + .../pod-http-latency.chartserviceversion.yaml | 45 + .../generic/pod-http-latency/rbac-psp.yaml | 85 + .../generic/pod-http-latency/rbac.yaml | 80 + experiments/generic/pod-io-stress/engine.yaml | 37 + .../generic/pod-io-stress/experiment.yaml | 134 + .../pod-io-stress.chartserviceversion.yaml | 50 + .../generic/pod-io-stress/rbac-psp.yaml | 85 + experiments/generic/pod-io-stress/rbac.yaml | 80 + .../generic/pod-memory-hog-exec/engine.yaml | 29 + .../pod-memory-hog-exec/experiment.yaml | 106 + ...d-memory-hog-exec.chartserviceversion.yaml | 51 + .../generic/pod-memory-hog-exec/rbac-psp.yaml | 85 + .../generic/pod-memory-hog-exec/rbac.yaml | 80 + .../generic/pod-memory-hog/engine.yaml | 36 + .../generic/pod-memory-hog/experiment.yaml | 127 + .../pod-memory-hog.chartserviceversion.yaml | 51 + .../generic/pod-memory-hog/rbac-psp.yaml | 85 + experiments/generic/pod-memory-hog/rbac.yaml | 80 + .../pod-network-corruption/engine.yaml | 38 + .../pod-network-corruption/experiment.yaml | 138 + ...etwork-corruption.chartserviceversion.yaml | 49 + .../pod-network-corruption/rbac-psp.yaml | 85 + .../generic/pod-network-corruption/rbac.yaml | 80 + .../pod-network-duplication/engine.yaml | 39 + .../pod-network-duplication/experiment.yaml | 135 + ...twork-duplication.chartserviceversion.yaml | 49 + .../pod-network-duplication/rbac-psp.yaml | 84 + .../generic/pod-network-duplication/rbac.yaml | 79 + .../generic/pod-network-latency/engine.yaml | 41 + .../pod-network-latency/experiment.yaml | 141 + ...d-network-latency.chartserviceversion.yaml | 49 + .../generic/pod-network-latency/rbac-psp.yaml | 85 + .../generic/pod-network-latency/rbac.yaml | 80 + .../generic/pod-network-loss/engine.yaml | 40 + .../generic/pod-network-loss/experiment.yaml | 138 + .../pod-network-loss.chartserviceversion.yaml | 48 + .../generic/pod-network-loss/rbac-psp.yaml | 84 + .../generic/pod-network-loss/rbac.yaml | 79 + .../generic/pod-network-partition/engine.yaml | 21 + .../pod-network-partition/experiment.yaml | 100 + ...network-partition.chartserviceversion.yaml | 43 + .../pod-network-partition/rbac-psp.yaml | 72 + .../generic/pod-network-partition/rbac.yaml | 67 + experiments/kafka/experiments.yaml | 249 ++ .../kafka/icons/kafka-broker-disk-failure.png | Bin 0 -> 5236 bytes .../kafka/icons/kafka-broker-pod-failure.png | Bin 0 -> 5236 bytes experiments/kafka/icons/kafka.png | Bin 0 -> 5236 bytes .../kafka-broker-disk-failure/engine.yaml | 81 + .../kafka-broker-disk-failure/experiment.yaml | 118 + ...oker-disk-failure.chartserviceversion.yaml | 42 + .../kafka/kafka-broker-disk-failure/rbac.yaml | 38 + .../kafka-broker-pod-failure/engine.yaml | 74 + .../kafka-broker-pod-failure/experiment.yaml | 127 + ...roker-pod-failure.chartserviceversion.yaml | 45 + .../kafka/kafka-broker-pod-failure/rbac.yaml | 67 + .../kafka/kafka.chartserviceversion.yaml | 40 + experiments/kafka/kafka.package.yaml | 8 + .../aws-az-chaos.chartserviceversion.yaml | 35 + experiments/kube-aws/aws-az-chaos/engine.yaml | 27 + .../kube-aws/aws-az-chaos/experiment.yaml | 76 + experiments/kube-aws/aws-az-chaos/rbac.yaml | 60 + .../ebs-loss-by-id.chartserviceversion.yaml | 43 + .../kube-aws/ebs-loss-by-id/engine.yaml | 28 + .../kube-aws/ebs-loss-by-id/experiment.yaml | 88 + experiments/kube-aws/ebs-loss-by-id/rbac.yaml | 62 + .../ebs-loss-by-tag.chartserviceversion.yaml | 43 + .../kube-aws/ebs-loss-by-tag/engine.yaml | 32 + .../kube-aws/ebs-loss-by-tag/experiment.yaml | 90 + .../kube-aws/ebs-loss-by-tag/rbac.yaml | 62 + ...2-terminate-by-id.chartserviceversion.yaml | 42 + .../kube-aws/ec2-terminate-by-id/engine.yaml | 33 + .../ec2-terminate-by-id/experiment.yaml | 98 + .../kube-aws/ec2-terminate-by-id/rbac.yaml | 66 + ...-terminate-by-tag.chartserviceversion.yaml | 42 + .../kube-aws/ec2-terminate-by-tag/engine.yaml | 37 + .../ec2-terminate-by-tag/experiment.yaml | 100 + .../kube-aws/ec2-terminate-by-tag/rbac.yaml | 66 + experiments/kube-aws/experiments.yaml | 462 +++ experiments/kube-aws/icons/aws-az-chaos.png | Bin 0 -> 3152 bytes experiments/kube-aws/icons/ebs-loss-by-id.png | Bin 0 -> 3152 bytes .../kube-aws/icons/ebs-loss-by-tag.png | Bin 0 -> 3152 bytes .../kube-aws/icons/ec2-terminate-by-id.png | Bin 0 -> 3152 bytes .../kube-aws/icons/ec2-terminate-by-tag.png | Bin 0 -> 3152 bytes .../kube-aws/icons/k8-aws-ec2-terminate.png | Bin 0 -> 2289 bytes experiments/kube-aws/icons/kube-aws.png | Bin 0 -> 3152 bytes .../kube-aws.chartserviceversion.yaml | 47 + experiments/kube-aws/kube-aws.package.yaml | 17 + experiments/kube-aws/rbac-admin.yaml | 35 + experiments/longhorn/experiments.yaml | 0 experiments/longhorn/icons/longhorn.png | Bin 0 -> 2263 bytes .../longhorn.chartserviceversion.yaml | 32 + experiments/longhorn/longhorn.package.yaml | 2 + experiments/mongodb/experiments.yaml | 0 experiments/mongodb/icons/mongodb.png | Bin 0 -> 23291 bytes .../mongodb/mongodb.chartserviceversion.yaml | 30 + experiments/mongodb/mongodb.package.yaml | 2 + experiments/mysql/experiments.yaml | 0 experiments/mysql/icons/mysql.png | Bin 0 -> 41430 bytes .../mysql/mysql.chartserviceversion.yaml | 30 + experiments/mysql/mysql.package.yaml | 2 + experiments/openebs/experiments.yaml | 1097 ++++++ .../icons/openebs-control-plane-chaos.png | Bin 0 -> 12575 bytes .../icons/openebs-nfs-provisioner-kill.png | Bin 0 -> 12575 bytes .../icons/openebs-pool-container-failure.png | Bin 0 -> 12575 bytes .../openebs/icons/openebs-pool-disk-loss.png | Bin 0 -> 12575 bytes .../icons/openebs-pool-network-delay.png | Bin 0 -> 12575 bytes .../icons/openebs-pool-network-loss.png | Bin 0 -> 12575 bytes .../icons/openebs-pool-pod-failure.png | Bin 0 -> 1421 bytes .../openebs-target-container-failure.png | Bin 0 -> 3152 bytes .../icons/openebs-target-network-delay.png | Bin 0 -> 1256 bytes .../icons/openebs-target-network-loss.png | Bin 0 -> 2715 bytes .../icons/openebs-target-pod-failure.png | Bin 0 -> 2661 bytes experiments/openebs/icons/openebs.png | Bin 0 -> 12575 bytes .../openebs-control-plane-chaos/engine.yaml | 20 + .../experiment.yaml | 79 + ...ntrol-plane-chaos.chartserviceversion.yaml | 42 + .../openebs-control-plane-chaos/rbac.yaml | 42 + .../openebs-nfs-provisioner-kill/engine.yaml | 40 + .../experiment.yaml | 100 + ...-provisioner-kill.chartserviceversion.yaml | 42 + .../openebs-nfs-provisioner-kill/rbac.yaml | 37 + .../engine.yaml | 29 + .../experiment.yaml | 97 + ...container-failure.chartserviceversion.yaml | 45 + .../openebs-pool-container-failure/rbac.yaml | 38 + .../openebs-pool-disk-loss/engine.yaml | 51 + .../openebs-pool-disk-loss/experiment.yaml | 111 + ...bs-pool-disk-loss.chartserviceversion.yaml | 45 + .../openebs/openebs-pool-disk-loss/rbac.yaml | 38 + .../openebs-pool-network-delay/engine.yaml | 25 + .../experiment.yaml | 93 + ...ool-network-delay.chartserviceversion.yaml | 44 + .../openebs-pool-network-delay/rbac.yaml | 34 + .../openebs-pool-network-loss/engine.yaml | 27 + .../openebs-pool-network-loss/experiment.yaml | 92 + ...pool-network-loss.chartserviceversion.yaml | 44 + .../openebs-pool-network-loss/rbac.yaml | 35 + .../openebs-pool-pod-failure/engine.yaml | 28 + .../openebs-pool-pod-failure/experiment.yaml | 97 + ...-pool-pod-failure.chartserviceversion.yaml | 45 + .../openebs-pool-pod-failure/rbac.yaml | 38 + .../engine.yaml | 32 + .../experiment.yaml | 113 + ...container-failure.chartserviceversion.yaml | 45 + .../rbac.yaml | 38 + .../openebs-target-network-delay/engine.yaml | 35 + .../experiment.yaml | 94 + ...get-network-delay.chartserviceversion.yaml | 45 + .../openebs-target-network-delay/rbac.yaml | 38 + .../openebs-target-network-loss/engine.yaml | 31 + .../experiment.yaml | 94 + ...rget-network-loss.chartserviceversion.yaml | 45 + .../openebs-target-network-loss/rbac.yaml | 38 + .../openebs-target-pod-failure/engine.yaml | 31 + .../experiment.yaml | 105 + ...arget-pod-failure.chartserviceversion.yaml | 46 + .../openebs-target-pod-failure/rbac.yaml | 42 + .../openebs/openebs.chartserviceversion.yaml | 63 + experiments/openebs/openebs.package.yaml | 35 + ..._engine_with_data_persistency_enabled.yaml | 30 + experiments/vmware/experiments.yaml | 99 + experiments/vmware/icons/vm-poweroff.png | Bin 0 -> 74909 bytes experiments/vmware/icons/vmware.png | Bin 0 -> 74909 bytes experiments/vmware/vm-poweroff/engine.yaml | 27 + .../vmware/vm-poweroff/experiment.yaml | 97 + experiments/vmware/vm-poweroff/rbac.yaml | 63 + .../vm-poweroff.chartserviceversion.yaml | 42 + .../vmware/vmware.chartserviceversion.yaml | 35 + experiments/vmware/vmware.package.yaml | 5 + scenarios/icons/bank-of-anthos.png | Bin 0 -> 7870 bytes scenarios/icons/pod-delete.png | Bin 0 -> 959 bytes scenarios/icons/pod-memory-hog.png | Bin 0 -> 1516 bytes scenarios/icons/podtato-head.png | Bin 0 -> 162950 bytes scenarios/icons/sock-shop-promProbe.png | Bin 0 -> 246052 bytes scenarios/icons/sock-shop.png | Bin 0 -> 246052 bytes .../pod-delete.chartserviceversion.yaml | 39 + scenarios/pod-delete/workflow.yaml | 159 + scenarios/pod-delete/workflow_cron.yaml | 163 + .../pod-memory-hog.chartserviceversion.yaml | 40 + scenarios/pod-memory-hog/workflow.yaml | 159 + scenarios/pod-memory-hog/workflow_cron.yaml | 163 + .../podtato-head.chartserviceversion.yaml | 40 + scenarios/podtato-head/workflow.yaml | 114 + scenarios/podtato-head/workflow_cron.yaml | 118 + 382 files changed, 24112 insertions(+) create mode 100644 experiments/aws-ssm/aws-ssm-chaos-by-id/aws-ssm-chaos-by-id.chartserviceversion.yaml create mode 100644 experiments/aws-ssm/aws-ssm-chaos-by-id/engine.yaml create mode 100644 experiments/aws-ssm/aws-ssm-chaos-by-id/experiment.yaml create mode 100644 experiments/aws-ssm/aws-ssm-chaos-by-id/rbac.yaml create mode 100644 experiments/aws-ssm/aws-ssm-chaos-by-tag/aws-ssm-chaos-by-tag.chartserviceversion.yaml create mode 100644 experiments/aws-ssm/aws-ssm-chaos-by-tag/engine.yaml create mode 100644 experiments/aws-ssm/aws-ssm-chaos-by-tag/experiment.yaml create mode 100644 experiments/aws-ssm/aws-ssm-chaos-by-tag/rbac.yaml create mode 100644 experiments/aws-ssm/aws-ssm.chartserviceversion.yaml create mode 100644 experiments/aws-ssm/aws-ssm.package.yaml create mode 100644 experiments/aws-ssm/experiments.yaml create mode 100644 experiments/aws-ssm/icons/aws-ssm-chaos-by-id.png create mode 100644 experiments/aws-ssm/icons/aws-ssm-chaos-by-tag.png create mode 100644 experiments/aws-ssm/icons/aws-ssm.png create mode 100644 experiments/azure/azure-disk-loss/azure-disk-loss.chartserviceversion.yaml create mode 100644 experiments/azure/azure-disk-loss/engine.yaml create mode 100644 experiments/azure/azure-disk-loss/experiment.yaml create mode 100644 experiments/azure/azure-disk-loss/rbac.yaml create mode 100644 experiments/azure/azure-instance-stop/azure-instance-stop.chartserviceversion.yaml create mode 100644 experiments/azure/azure-instance-stop/engine.yaml create mode 100644 experiments/azure/azure-instance-stop/experiment.yaml create mode 100644 experiments/azure/azure-instance-stop/rbac.yaml create mode 100644 experiments/azure/azure.chartserviceversion.yaml create mode 100644 experiments/azure/azure.package.yaml create mode 100644 experiments/azure/experiments.yaml create mode 100644 experiments/azure/icons/azure-disk-loss.png create mode 100644 experiments/azure/icons/azure-instance-stop.png create mode 100644 experiments/azure/icons/azure.png create mode 100644 experiments/cassandra/cassandra-pod-delete/cassandra-pod-delete.chartserviceversion.yaml create mode 100644 experiments/cassandra/cassandra-pod-delete/engine.yaml create mode 100644 experiments/cassandra/cassandra-pod-delete/experiment.yaml create mode 100644 experiments/cassandra/cassandra-pod-delete/rbac.yaml create mode 100644 experiments/cassandra/cassandra.chartserviceversion.yaml create mode 100644 experiments/cassandra/cassandra.package.yaml create mode 100644 experiments/cassandra/experiments.yaml create mode 100644 experiments/cassandra/icons/cassandra-pod-delete.png create mode 100644 experiments/cassandra/icons/cassandra.png create mode 100644 experiments/coredns/coredns-pod-delete/coredns-pod-delete.chartserviceversion.yaml create mode 100644 experiments/coredns/coredns-pod-delete/engine.yaml create mode 100644 experiments/coredns/coredns-pod-delete/experiment.yaml create mode 100644 experiments/coredns/coredns-pod-delete/rbac.yaml create mode 100644 experiments/coredns/coredns.chartserviceversion.yaml create mode 100644 experiments/coredns/coredns.package.yaml create mode 100644 experiments/coredns/experiments.yaml create mode 100644 experiments/coredns/icons/coredns-pod-delete.png create mode 100644 experiments/coredns/icons/coredns.png create mode 100644 experiments/gcp/experiments.yaml create mode 100644 experiments/gcp/gcp-vm-disk-loss-by-label/engine.yaml create mode 100644 experiments/gcp/gcp-vm-disk-loss-by-label/experiment.yaml create mode 100644 experiments/gcp/gcp-vm-disk-loss-by-label/gcp-vm-disk-loss-by-label.chartserviceversion.yaml create mode 100644 experiments/gcp/gcp-vm-disk-loss-by-label/rbac.yaml create mode 100644 experiments/gcp/gcp-vm-disk-loss/engine.yaml create mode 100644 experiments/gcp/gcp-vm-disk-loss/experiment.yaml create mode 100644 experiments/gcp/gcp-vm-disk-loss/gcp-vm-disk-loss.chartserviceversion.yaml create mode 100644 experiments/gcp/gcp-vm-disk-loss/rbac.yaml create mode 100644 experiments/gcp/gcp-vm-instance-stop-by-label/engine.yaml create mode 100644 experiments/gcp/gcp-vm-instance-stop-by-label/experiment.yaml create mode 100644 experiments/gcp/gcp-vm-instance-stop-by-label/gcp-vm-instance-stop-by-label.chartserviceversion.yaml create mode 100644 experiments/gcp/gcp-vm-instance-stop-by-label/rbac.yaml create mode 100644 experiments/gcp/gcp-vm-instance-stop/engine.yaml create mode 100644 experiments/gcp/gcp-vm-instance-stop/experiment.yaml create mode 100644 experiments/gcp/gcp-vm-instance-stop/gcp-vm-instance-stop.chartserviceversion.yaml create mode 100644 experiments/gcp/gcp-vm-instance-stop/rbac.yaml create mode 100644 experiments/gcp/gcp.chartserviceversion.yaml create mode 100644 experiments/gcp/gcp.package.yaml create mode 100644 experiments/gcp/icons/gcp-vm-disk-loss-by-label.png create mode 100644 experiments/gcp/icons/gcp-vm-disk-loss.png create mode 100644 experiments/gcp/icons/gcp-vm-instance-stop-by-label.png create mode 100644 experiments/gcp/icons/gcp-vm-instance-stop.png create mode 100644 experiments/gcp/icons/gcp.png create mode 100644 experiments/generic/container-kill/container-kill.chartserviceversion.yaml create mode 100644 experiments/generic/container-kill/engine.yaml create mode 100644 experiments/generic/container-kill/engine_nginx_getstarted.yaml create mode 100644 experiments/generic/container-kill/experiment.yaml create mode 100644 experiments/generic/container-kill/rbac-psp.yaml create mode 100644 experiments/generic/container-kill/rbac.yaml create mode 100644 experiments/generic/container-kill/rbac_nginx_getstarted.yaml create mode 100644 experiments/generic/disk-fill/disk-fill.chartserviceversion.yaml create mode 100644 experiments/generic/disk-fill/engine.yaml create mode 100644 experiments/generic/disk-fill/experiment.yaml create mode 100644 experiments/generic/disk-fill/rbac-psp.yaml create mode 100644 experiments/generic/disk-fill/rbac.yaml create mode 100644 experiments/generic/docker-service-kill/docker-service-kill.chartserviceversion.yaml create mode 100644 experiments/generic/docker-service-kill/engine.yaml create mode 100644 experiments/generic/docker-service-kill/experiment.yaml create mode 100644 experiments/generic/docker-service-kill/rbac-psp.yaml create mode 100644 experiments/generic/docker-service-kill/rbac.yaml create mode 100644 experiments/generic/experiments.yaml create mode 100644 experiments/generic/generic.chartserviceversion.yaml create mode 100644 experiments/generic/generic.package.yaml create mode 100644 experiments/generic/icons/byoc-pod-delete.png create mode 100644 experiments/generic/icons/container-kill.png create mode 100644 experiments/generic/icons/disk-fill.png create mode 100644 experiments/generic/icons/docker-service-kill.png create mode 100644 experiments/generic/icons/generic.png create mode 100644 experiments/generic/icons/kubelet-service-kill.png create mode 100644 experiments/generic/icons/node-cpu-hog.png create mode 100644 experiments/generic/icons/node-drain.png create mode 100644 experiments/generic/icons/node-io-stress.png create mode 100644 experiments/generic/icons/node-memory-hog.png create mode 100644 experiments/generic/icons/node-restart.png create mode 100644 experiments/generic/icons/node-taint.png create mode 100644 experiments/generic/icons/pod-autoscaler.png create mode 100644 experiments/generic/icons/pod-cpu-hog-exec.png create mode 100644 experiments/generic/icons/pod-cpu-hog.png create mode 100644 experiments/generic/icons/pod-delete.png create mode 100644 experiments/generic/icons/pod-dns-error.png create mode 100644 experiments/generic/icons/pod-dns-spoof.png create mode 100644 experiments/generic/icons/pod-http-latency.png create mode 100644 experiments/generic/icons/pod-io-stress.png create mode 100644 experiments/generic/icons/pod-memory-hog-exec.png create mode 100644 experiments/generic/icons/pod-memory-hog.png create mode 100644 experiments/generic/icons/pod-network-corruption.png create mode 100644 experiments/generic/icons/pod-network-duplication.png create mode 100644 experiments/generic/icons/pod-network-latency.png create mode 100644 experiments/generic/icons/pod-network-loss.png create mode 100644 experiments/generic/icons/pod-network-partition.png create mode 100644 experiments/generic/kubelet-service-kill/engine.yaml create mode 100644 experiments/generic/kubelet-service-kill/experiment.yaml create mode 100644 experiments/generic/kubelet-service-kill/kubelet-service-kill.chartserviceversion.yaml create mode 100644 experiments/generic/kubelet-service-kill/rbac-psp.yaml create mode 100644 experiments/generic/kubelet-service-kill/rbac.yaml create mode 100644 experiments/generic/node-cpu-hog/engine.yaml create mode 100644 experiments/generic/node-cpu-hog/experiment.yaml create mode 100644 experiments/generic/node-cpu-hog/node-cpu-hog.chartserviceversion.yaml create mode 100644 experiments/generic/node-cpu-hog/rbac-psp.yaml create mode 100644 experiments/generic/node-cpu-hog/rbac.yaml create mode 100644 experiments/generic/node-drain/engine.yaml create mode 100644 experiments/generic/node-drain/experiment.yaml create mode 100644 experiments/generic/node-drain/node-drain.chartserviceversion.yaml create mode 100644 experiments/generic/node-drain/rbac-psp.yaml create mode 100644 experiments/generic/node-drain/rbac.yaml create mode 100644 experiments/generic/node-io-stress/engine.yaml create mode 100644 experiments/generic/node-io-stress/experiment.yaml create mode 100644 experiments/generic/node-io-stress/node-io-stress.chartserviceversion.yaml create mode 100644 experiments/generic/node-io-stress/rbac-psp.yaml create mode 100644 experiments/generic/node-io-stress/rbac.yaml create mode 100644 experiments/generic/node-memory-hog/engine.yaml create mode 100644 experiments/generic/node-memory-hog/experiment.yaml create mode 100644 experiments/generic/node-memory-hog/node-memory-hog.chartserviceversion.yaml create mode 100644 experiments/generic/node-memory-hog/rbac-psp.yaml create mode 100644 experiments/generic/node-memory-hog/rbac.yaml create mode 100644 experiments/generic/node-poweroff/engine.yaml create mode 100644 experiments/generic/node-poweroff/experiment.yaml create mode 100644 experiments/generic/node-poweroff/node-poweroff.chartserviceversion.yaml create mode 100644 experiments/generic/node-poweroff/rbac-psp.yaml create mode 100644 experiments/generic/node-poweroff/rbac.yaml create mode 100644 experiments/generic/node-restart/engine.yaml create mode 100644 experiments/generic/node-restart/experiment.yaml create mode 100644 experiments/generic/node-restart/node-restart.chartserviceversion.yaml create mode 100644 experiments/generic/node-restart/rbac-psp.yaml create mode 100644 experiments/generic/node-restart/rbac.yaml create mode 100644 experiments/generic/node-taint/engine.yaml create mode 100644 experiments/generic/node-taint/experiment.yaml create mode 100644 experiments/generic/node-taint/node-taint.chartserviceversion.yaml create mode 100644 experiments/generic/node-taint/rbac-psp.yaml create mode 100644 experiments/generic/node-taint/rbac.yaml create mode 100644 experiments/generic/pod-autoscaler/engine.yaml create mode 100644 experiments/generic/pod-autoscaler/experiment.yaml create mode 100644 experiments/generic/pod-autoscaler/pod-autoscaler.chartserviceversion.yaml create mode 100644 experiments/generic/pod-autoscaler/rbac-psp.yaml create mode 100644 experiments/generic/pod-autoscaler/rbac.yaml create mode 100644 experiments/generic/pod-cpu-hog-exec/engine.yaml create mode 100644 experiments/generic/pod-cpu-hog-exec/experiment.yaml create mode 100644 experiments/generic/pod-cpu-hog-exec/pod-cpu-hog-exec.chartserviceversion.yaml create mode 100644 experiments/generic/pod-cpu-hog-exec/rbac-psp.yaml create mode 100644 experiments/generic/pod-cpu-hog-exec/rbac.yaml create mode 100644 experiments/generic/pod-cpu-hog/engine.yaml create mode 100644 experiments/generic/pod-cpu-hog/experiment.yaml create mode 100644 experiments/generic/pod-cpu-hog/pod-cpu-hog.chartserviceversion.yaml create mode 100644 experiments/generic/pod-cpu-hog/rbac-psp.yaml create mode 100644 experiments/generic/pod-cpu-hog/rbac.yaml create mode 100644 experiments/generic/pod-delete/ansible/engine.yaml create mode 100644 experiments/generic/pod-delete/ansible/experiment.yaml create mode 100644 experiments/generic/pod-delete/ansible/powerfulseal_rbac.yaml create mode 100644 experiments/generic/pod-delete/ansible/rbac.yaml create mode 100644 experiments/generic/pod-delete/engine.yaml create mode 100644 experiments/generic/pod-delete/engine_nginx_getstarted.yaml create mode 100644 experiments/generic/pod-delete/experiment.yaml create mode 100644 experiments/generic/pod-delete/pod-delete.chartserviceversion.yaml create mode 100644 experiments/generic/pod-delete/python/engine.yaml create mode 100644 experiments/generic/pod-delete/python/experiment.yaml create mode 100644 experiments/generic/pod-delete/python/rbac.yaml create mode 100644 experiments/generic/pod-delete/rbac-psp.yaml create mode 100644 experiments/generic/pod-delete/rbac.yaml create mode 100644 experiments/generic/pod-delete/rbac_nginx_getstarted.yaml create mode 100644 experiments/generic/pod-dns-error/engine.yaml create mode 100644 experiments/generic/pod-dns-error/experiment.yaml create mode 100644 experiments/generic/pod-dns-error/pod-dns-error.chartserviceversion.yaml create mode 100644 experiments/generic/pod-dns-error/rbac-psp.yaml create mode 100644 experiments/generic/pod-dns-error/rbac.yaml create mode 100644 experiments/generic/pod-dns-spoof/engine.yaml create mode 100644 experiments/generic/pod-dns-spoof/experiment.yaml create mode 100644 experiments/generic/pod-dns-spoof/pod-dns-spoof.chartserviceversion.yaml create mode 100644 experiments/generic/pod-dns-spoof/rbac-psp.yaml create mode 100644 experiments/generic/pod-dns-spoof/rbac.yaml create mode 100644 experiments/generic/pod-http-latency/engine.yaml create mode 100644 experiments/generic/pod-http-latency/experiment.yaml create mode 100644 experiments/generic/pod-http-latency/pod-http-latency.chartserviceversion.yaml create mode 100644 experiments/generic/pod-http-latency/rbac-psp.yaml create mode 100644 experiments/generic/pod-http-latency/rbac.yaml create mode 100644 experiments/generic/pod-io-stress/engine.yaml create mode 100644 experiments/generic/pod-io-stress/experiment.yaml create mode 100644 experiments/generic/pod-io-stress/pod-io-stress.chartserviceversion.yaml create mode 100644 experiments/generic/pod-io-stress/rbac-psp.yaml create mode 100644 experiments/generic/pod-io-stress/rbac.yaml create mode 100644 experiments/generic/pod-memory-hog-exec/engine.yaml create mode 100644 experiments/generic/pod-memory-hog-exec/experiment.yaml create mode 100644 experiments/generic/pod-memory-hog-exec/pod-memory-hog-exec.chartserviceversion.yaml create mode 100644 experiments/generic/pod-memory-hog-exec/rbac-psp.yaml create mode 100644 experiments/generic/pod-memory-hog-exec/rbac.yaml create mode 100644 experiments/generic/pod-memory-hog/engine.yaml create mode 100644 experiments/generic/pod-memory-hog/experiment.yaml create mode 100644 experiments/generic/pod-memory-hog/pod-memory-hog.chartserviceversion.yaml create mode 100644 experiments/generic/pod-memory-hog/rbac-psp.yaml create mode 100644 experiments/generic/pod-memory-hog/rbac.yaml create mode 100644 experiments/generic/pod-network-corruption/engine.yaml create mode 100644 experiments/generic/pod-network-corruption/experiment.yaml create mode 100644 experiments/generic/pod-network-corruption/pod-network-corruption.chartserviceversion.yaml create mode 100644 experiments/generic/pod-network-corruption/rbac-psp.yaml create mode 100644 experiments/generic/pod-network-corruption/rbac.yaml create mode 100644 experiments/generic/pod-network-duplication/engine.yaml create mode 100644 experiments/generic/pod-network-duplication/experiment.yaml create mode 100644 experiments/generic/pod-network-duplication/pod-network-duplication.chartserviceversion.yaml create mode 100644 experiments/generic/pod-network-duplication/rbac-psp.yaml create mode 100644 experiments/generic/pod-network-duplication/rbac.yaml create mode 100644 experiments/generic/pod-network-latency/engine.yaml create mode 100644 experiments/generic/pod-network-latency/experiment.yaml create mode 100644 experiments/generic/pod-network-latency/pod-network-latency.chartserviceversion.yaml create mode 100644 experiments/generic/pod-network-latency/rbac-psp.yaml create mode 100644 experiments/generic/pod-network-latency/rbac.yaml create mode 100644 experiments/generic/pod-network-loss/engine.yaml create mode 100644 experiments/generic/pod-network-loss/experiment.yaml create mode 100644 experiments/generic/pod-network-loss/pod-network-loss.chartserviceversion.yaml create mode 100644 experiments/generic/pod-network-loss/rbac-psp.yaml create mode 100644 experiments/generic/pod-network-loss/rbac.yaml create mode 100644 experiments/generic/pod-network-partition/engine.yaml create mode 100644 experiments/generic/pod-network-partition/experiment.yaml create mode 100644 experiments/generic/pod-network-partition/pod-network-partition.chartserviceversion.yaml create mode 100644 experiments/generic/pod-network-partition/rbac-psp.yaml create mode 100644 experiments/generic/pod-network-partition/rbac.yaml create mode 100644 experiments/kafka/experiments.yaml create mode 100644 experiments/kafka/icons/kafka-broker-disk-failure.png create mode 100644 experiments/kafka/icons/kafka-broker-pod-failure.png create mode 100644 experiments/kafka/icons/kafka.png create mode 100644 experiments/kafka/kafka-broker-disk-failure/engine.yaml create mode 100644 experiments/kafka/kafka-broker-disk-failure/experiment.yaml create mode 100644 experiments/kafka/kafka-broker-disk-failure/kafka-broker-disk-failure.chartserviceversion.yaml create mode 100644 experiments/kafka/kafka-broker-disk-failure/rbac.yaml create mode 100644 experiments/kafka/kafka-broker-pod-failure/engine.yaml create mode 100644 experiments/kafka/kafka-broker-pod-failure/experiment.yaml create mode 100644 experiments/kafka/kafka-broker-pod-failure/kafka-broker-pod-failure.chartserviceversion.yaml create mode 100644 experiments/kafka/kafka-broker-pod-failure/rbac.yaml create mode 100644 experiments/kafka/kafka.chartserviceversion.yaml create mode 100644 experiments/kafka/kafka.package.yaml create mode 100755 experiments/kube-aws/aws-az-chaos/aws-az-chaos.chartserviceversion.yaml create mode 100755 experiments/kube-aws/aws-az-chaos/engine.yaml create mode 100755 experiments/kube-aws/aws-az-chaos/experiment.yaml create mode 100755 experiments/kube-aws/aws-az-chaos/rbac.yaml create mode 100644 experiments/kube-aws/ebs-loss-by-id/ebs-loss-by-id.chartserviceversion.yaml create mode 100644 experiments/kube-aws/ebs-loss-by-id/engine.yaml create mode 100644 experiments/kube-aws/ebs-loss-by-id/experiment.yaml create mode 100644 experiments/kube-aws/ebs-loss-by-id/rbac.yaml create mode 100644 experiments/kube-aws/ebs-loss-by-tag/ebs-loss-by-tag.chartserviceversion.yaml create mode 100644 experiments/kube-aws/ebs-loss-by-tag/engine.yaml create mode 100644 experiments/kube-aws/ebs-loss-by-tag/experiment.yaml create mode 100644 experiments/kube-aws/ebs-loss-by-tag/rbac.yaml create mode 100644 experiments/kube-aws/ec2-terminate-by-id/ec2-terminate-by-id.chartserviceversion.yaml create mode 100644 experiments/kube-aws/ec2-terminate-by-id/engine.yaml create mode 100644 experiments/kube-aws/ec2-terminate-by-id/experiment.yaml create mode 100644 experiments/kube-aws/ec2-terminate-by-id/rbac.yaml create mode 100644 experiments/kube-aws/ec2-terminate-by-tag/ec2-terminate-by-tag.chartserviceversion.yaml create mode 100644 experiments/kube-aws/ec2-terminate-by-tag/engine.yaml create mode 100644 experiments/kube-aws/ec2-terminate-by-tag/experiment.yaml create mode 100644 experiments/kube-aws/ec2-terminate-by-tag/rbac.yaml create mode 100644 experiments/kube-aws/experiments.yaml create mode 100644 experiments/kube-aws/icons/aws-az-chaos.png create mode 100644 experiments/kube-aws/icons/ebs-loss-by-id.png create mode 100644 experiments/kube-aws/icons/ebs-loss-by-tag.png create mode 100644 experiments/kube-aws/icons/ec2-terminate-by-id.png create mode 100644 experiments/kube-aws/icons/ec2-terminate-by-tag.png create mode 100644 experiments/kube-aws/icons/k8-aws-ec2-terminate.png create mode 100644 experiments/kube-aws/icons/kube-aws.png create mode 100644 experiments/kube-aws/kube-aws.chartserviceversion.yaml create mode 100644 experiments/kube-aws/kube-aws.package.yaml create mode 100644 experiments/kube-aws/rbac-admin.yaml create mode 100644 experiments/longhorn/experiments.yaml create mode 100644 experiments/longhorn/icons/longhorn.png create mode 100644 experiments/longhorn/longhorn.chartserviceversion.yaml create mode 100644 experiments/longhorn/longhorn.package.yaml create mode 100644 experiments/mongodb/experiments.yaml create mode 100644 experiments/mongodb/icons/mongodb.png create mode 100644 experiments/mongodb/mongodb.chartserviceversion.yaml create mode 100644 experiments/mongodb/mongodb.package.yaml create mode 100644 experiments/mysql/experiments.yaml create mode 100644 experiments/mysql/icons/mysql.png create mode 100644 experiments/mysql/mysql.chartserviceversion.yaml create mode 100644 experiments/mysql/mysql.package.yaml create mode 100644 experiments/openebs/experiments.yaml create mode 100644 experiments/openebs/icons/openebs-control-plane-chaos.png create mode 100644 experiments/openebs/icons/openebs-nfs-provisioner-kill.png create mode 100644 experiments/openebs/icons/openebs-pool-container-failure.png create mode 100644 experiments/openebs/icons/openebs-pool-disk-loss.png create mode 100644 experiments/openebs/icons/openebs-pool-network-delay.png create mode 100644 experiments/openebs/icons/openebs-pool-network-loss.png create mode 100644 experiments/openebs/icons/openebs-pool-pod-failure.png create mode 100644 experiments/openebs/icons/openebs-target-container-failure.png create mode 100644 experiments/openebs/icons/openebs-target-network-delay.png create mode 100644 experiments/openebs/icons/openebs-target-network-loss.png create mode 100644 experiments/openebs/icons/openebs-target-pod-failure.png create mode 100644 experiments/openebs/icons/openebs.png create mode 100644 experiments/openebs/openebs-control-plane-chaos/engine.yaml create mode 100644 experiments/openebs/openebs-control-plane-chaos/experiment.yaml create mode 100644 experiments/openebs/openebs-control-plane-chaos/openebs-control-plane-chaos.chartserviceversion.yaml create mode 100644 experiments/openebs/openebs-control-plane-chaos/rbac.yaml create mode 100644 experiments/openebs/openebs-nfs-provisioner-kill/engine.yaml create mode 100644 experiments/openebs/openebs-nfs-provisioner-kill/experiment.yaml create mode 100644 experiments/openebs/openebs-nfs-provisioner-kill/openebs-nfs-provisioner-kill.chartserviceversion.yaml create mode 100644 experiments/openebs/openebs-nfs-provisioner-kill/rbac.yaml create mode 100644 experiments/openebs/openebs-pool-container-failure/engine.yaml create mode 100644 experiments/openebs/openebs-pool-container-failure/experiment.yaml create mode 100644 experiments/openebs/openebs-pool-container-failure/openebs-pool-container-failure.chartserviceversion.yaml create mode 100644 experiments/openebs/openebs-pool-container-failure/rbac.yaml create mode 100644 experiments/openebs/openebs-pool-disk-loss/engine.yaml create mode 100644 experiments/openebs/openebs-pool-disk-loss/experiment.yaml create mode 100644 experiments/openebs/openebs-pool-disk-loss/openebs-pool-disk-loss.chartserviceversion.yaml create mode 100644 experiments/openebs/openebs-pool-disk-loss/rbac.yaml create mode 100644 experiments/openebs/openebs-pool-network-delay/engine.yaml create mode 100644 experiments/openebs/openebs-pool-network-delay/experiment.yaml create mode 100644 experiments/openebs/openebs-pool-network-delay/openebs-pool-network-delay.chartserviceversion.yaml create mode 100644 experiments/openebs/openebs-pool-network-delay/rbac.yaml create mode 100644 experiments/openebs/openebs-pool-network-loss/engine.yaml create mode 100644 experiments/openebs/openebs-pool-network-loss/experiment.yaml create mode 100644 experiments/openebs/openebs-pool-network-loss/openebs-pool-network-loss.chartserviceversion.yaml create mode 100644 experiments/openebs/openebs-pool-network-loss/rbac.yaml create mode 100644 experiments/openebs/openebs-pool-pod-failure/engine.yaml create mode 100644 experiments/openebs/openebs-pool-pod-failure/experiment.yaml create mode 100644 experiments/openebs/openebs-pool-pod-failure/openebs-pool-pod-failure.chartserviceversion.yaml create mode 100644 experiments/openebs/openebs-pool-pod-failure/rbac.yaml create mode 100644 experiments/openebs/openebs-target-container-failure/engine.yaml create mode 100644 experiments/openebs/openebs-target-container-failure/experiment.yaml create mode 100644 experiments/openebs/openebs-target-container-failure/openebs-target-container-failure.chartserviceversion.yaml create mode 100644 experiments/openebs/openebs-target-container-failure/rbac.yaml create mode 100644 experiments/openebs/openebs-target-network-delay/engine.yaml create mode 100644 experiments/openebs/openebs-target-network-delay/experiment.yaml create mode 100644 experiments/openebs/openebs-target-network-delay/openebs-target-network-delay.chartserviceversion.yaml create mode 100644 experiments/openebs/openebs-target-network-delay/rbac.yaml create mode 100644 experiments/openebs/openebs-target-network-loss/engine.yaml create mode 100644 experiments/openebs/openebs-target-network-loss/experiment.yaml create mode 100644 experiments/openebs/openebs-target-network-loss/openebs-target-network-loss.chartserviceversion.yaml create mode 100644 experiments/openebs/openebs-target-network-loss/rbac.yaml create mode 100644 experiments/openebs/openebs-target-pod-failure/engine.yaml create mode 100644 experiments/openebs/openebs-target-pod-failure/experiment.yaml create mode 100644 experiments/openebs/openebs-target-pod-failure/openebs-target-pod-failure.chartserviceversion.yaml create mode 100644 experiments/openebs/openebs-target-pod-failure/rbac.yaml create mode 100644 experiments/openebs/openebs.chartserviceversion.yaml create mode 100644 experiments/openebs/openebs.package.yaml create mode 100644 experiments/openebs/sample_openebs_engine_with_data_persistency_enabled.yaml create mode 100644 experiments/vmware/experiments.yaml create mode 100644 experiments/vmware/icons/vm-poweroff.png create mode 100644 experiments/vmware/icons/vmware.png create mode 100644 experiments/vmware/vm-poweroff/engine.yaml create mode 100644 experiments/vmware/vm-poweroff/experiment.yaml create mode 100644 experiments/vmware/vm-poweroff/rbac.yaml create mode 100644 experiments/vmware/vm-poweroff/vm-poweroff.chartserviceversion.yaml create mode 100644 experiments/vmware/vmware.chartserviceversion.yaml create mode 100644 experiments/vmware/vmware.package.yaml create mode 100644 scenarios/icons/bank-of-anthos.png create mode 100644 scenarios/icons/pod-delete.png create mode 100644 scenarios/icons/pod-memory-hog.png create mode 100644 scenarios/icons/podtato-head.png create mode 100644 scenarios/icons/sock-shop-promProbe.png create mode 100644 scenarios/icons/sock-shop.png create mode 100644 scenarios/pod-delete/pod-delete.chartserviceversion.yaml create mode 100644 scenarios/pod-delete/workflow.yaml create mode 100644 scenarios/pod-delete/workflow_cron.yaml create mode 100644 scenarios/pod-memory-hog/pod-memory-hog.chartserviceversion.yaml create mode 100644 scenarios/pod-memory-hog/workflow.yaml create mode 100644 scenarios/pod-memory-hog/workflow_cron.yaml create mode 100644 scenarios/podtato-head/podtato-head.chartserviceversion.yaml create mode 100644 scenarios/podtato-head/workflow.yaml create mode 100644 scenarios/podtato-head/workflow_cron.yaml diff --git a/experiments/aws-ssm/aws-ssm-chaos-by-id/aws-ssm-chaos-by-id.chartserviceversion.yaml b/experiments/aws-ssm/aws-ssm-chaos-by-id/aws-ssm-chaos-by-id.chartserviceversion.yaml new file mode 100644 index 0000000..bc01916 --- /dev/null +++ b/experiments/aws-ssm/aws-ssm-chaos-by-id/aws-ssm-chaos-by-id.chartserviceversion.yaml @@ -0,0 +1,43 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2021-06-10T10:28:08Z + name: aws-ssm-chaos-by-id + version: 0.1.0 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: aws-ssm-chaos-by-id + categoryDescription: | + AWS SSM Chaos By ID contains chaos to disrupt the state of infra resources. The experiment can induce chaos on AWS resources using Amazon SSM Run Command This is carried out by using SSM Docs that defines the actions performed by Systems Manager on your managed instances (having SSM agent installed) which let us perform chaos experiments on resources. + - Causes chaos on AWS ec2 instances with given instance ID(s) using SSM docs for total chaos duration with the specified chaos interval. + - Tests deployment sanity (replica availability & uninterrupted service) and recovery workflows of the target application pod(if provided). + keywords: + - SSM + - AWS + - EC2 + platforms: + - AWS + maturity: alpha + chaosType: infra + maintainers: + - name: Udit Gaurav + email: udit@chaosnative.com + provider: + name: ChaosNative + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/aws-ssm/aws-ssm-chaos-by-id + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/aws-ssm/aws-ssm-chaos-by-id/ + - name: Video + url: + icon: + - url: + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/aws-ssm/aws-ssm-chaos-by-id/experiment.yaml diff --git a/experiments/aws-ssm/aws-ssm-chaos-by-id/engine.yaml b/experiments/aws-ssm/aws-ssm-chaos-by-id/engine.yaml new file mode 100644 index 0000000..1133a5a --- /dev/null +++ b/experiments/aws-ssm/aws-ssm-chaos-by-id/engine.yaml @@ -0,0 +1,62 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + engineState: 'active' + chaosServiceAccount: aws-ssm-chaos-by-id-sa + experiments: + - name: aws-ssm-chaos-by-id + spec: + components: + env: + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '60' + + # set chaos duration (in sec) as desired + - name: CHAOS_INTERVAL + value: '60' + + # Instance ID of the target ec2 instance + # Multiple IDs can also be provided as comma separated values ex: id1,id2 + - name: EC2_INSTANCE_ID + value: '' + + # provide the region name of the target instances + - name: REGION + value: '' + + # provide the percentage of available memory to stress + - name: MEMORY_PERCENTAGE + value: '80' + + # provide the CPU chores to be comsumed + # 0 will consume all the available cpu cores + - name: CPU_CORE + value: '0' + + # Provide the name of ssm doc + # if not using the default stress docs + - name: DOCUMENT_NAME + value: '' + + # Provide the type of ssm doc + # if not using the default stress docs + - name: DOCUMENT_TYPE + value: '' + + # Provide the format of ssm doc + # if not using the default stress docs + - name: DOCUMENT_FORMAT + value: '' + + # Provide the path of ssm doc + # if not using the default stress docs + - name: DOCUMENT_PATH + value: '' + + # if you want to install dependencies to run default ssm docs + - name: INSTALL_DEPENDENCIES + value: 'True' diff --git a/experiments/aws-ssm/aws-ssm-chaos-by-id/experiment.yaml b/experiments/aws-ssm/aws-ssm-chaos-by-id/experiment.yaml new file mode 100644 index 0000000..c0f9996 --- /dev/null +++ b/experiments/aws-ssm/aws-ssm-chaos-by-id/experiment.yaml @@ -0,0 +1,129 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Execute AWS SSM Chaos on given ec2 instance IDs +kind: ChaosExperiment +metadata: + name: aws-ssm-chaos-by-id + labels: + name: aws-ssm-chaos-by-id + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name aws-ssm-chaos-by-id + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '60' + + - name: CHAOS_INTERVAL + value: '60' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # Instance ID of the target ec2 instance + # Multiple IDs can also be provided as comma separated values ex: id1,id2 + - name: EC2_INSTANCE_ID + value: '' + + - name: REGION + value: '' + + # it defines the sequence of chaos execution for multiple target instances + # supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + # Provide the path of aws credentials mounted from secret + - name: AWS_SHARED_CREDENTIALS_FILE + value: '/tmp/cloud_config.yml' + + # Provide the name of ssm doc + # if not using the default stress docs + - name: DOCUMENT_NAME + value: '' + + # Provide the type of ssm doc + # if not using the default stress docs + - name: DOCUMENT_TYPE + value: '' + + # Provide the format of ssm doc + # if not using the default stress docs + - name: DOCUMENT_FORMAT + value: '' + + # Provide the path of ssm doc + # if not using the default stress docs + - name: DOCUMENT_PATH + value: '' + + # if you want to install dependencies to run default ssm docs + - name: INSTALL_DEPENDENCIES + value: 'True' + + # provide the number of workers for memory stress + - name: NUMBER_OF_WORKERS + value: '1' + + # provide the percentage of available memory to stress + - name: MEMORY_PERCENTAGE + value: '80' + + # provide the CPU chores to be comsumed + # 0 will consume all the available cpu cores + - name: CPU_CORE + value: '0' + + # provide the LIB + # only litmus supported + - name: LIB + value: 'litmus' + + labels: + name: aws-ssm-chaos-by-id + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: cloud-secret + mountPath: /tmp/ diff --git a/experiments/aws-ssm/aws-ssm-chaos-by-id/rbac.yaml b/experiments/aws-ssm/aws-ssm-chaos-by-id/rbac.yaml new file mode 100644 index 0000000..72db75e --- /dev/null +++ b/experiments/aws-ssm/aws-ssm-chaos-by-id/rbac.yaml @@ -0,0 +1,62 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: aws-ssm-chaos-by-id-sa + namespace: default + labels: + name: aws-ssm-chaos-by-id-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: aws-ssm-chaos-by-id-sa + labels: + name: aws-ssm-chaos-by-id-sa + app.kubernetes.io/part-of: litmus +rules: +# Create and monitor the experiment & helper pods +- apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] +# Performs CRUD operations on the events inside chaosengine and chaosresult +- apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] +# Fetch configmaps & secrets details and mount it to the experiment pod (if specified) +- apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] +# Track and get the runner, experiment, and helper pods log +- apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] +# for creating and managing to execute comands inside target container +- apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] +# for configuring and monitor the experiment job by the chaos-runner pod +- apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] +# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow +- apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: aws-ssm-chaos-by-id-sa + labels: + name: aws-ssm-chaos-by-id-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: aws-ssm-chaos-by-id-sa +subjects: +- kind: ServiceAccount + name: aws-ssm-chaos-by-id-sa + namespace: default diff --git a/experiments/aws-ssm/aws-ssm-chaos-by-tag/aws-ssm-chaos-by-tag.chartserviceversion.yaml b/experiments/aws-ssm/aws-ssm-chaos-by-tag/aws-ssm-chaos-by-tag.chartserviceversion.yaml new file mode 100644 index 0000000..fea5b08 --- /dev/null +++ b/experiments/aws-ssm/aws-ssm-chaos-by-tag/aws-ssm-chaos-by-tag.chartserviceversion.yaml @@ -0,0 +1,43 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2021-06-10T10:28:08Z + name: aws-ssm-chaos-by-tag + version: 0.1.0 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: aws-ssm-chaos-by-tag + categoryDescription: | + AWS SSM Chaos By ID contains chaos to disrupt the state of infra resources. The experiment can induce chaos on AWS resources using Amazon SSM Run Command This is carried out by using SSM Docs that defines the actions performed by Systems Manager on your managed instances (having SSM agent installed) which let us perform chaos experiments on resources. + - Causes chaos on AWS ec2 instances with given instance tag using SSM docs for total chaos duration with the specified chaos interval. + - Tests deployment sanity (replica availability & uninterrupted service) and recovery workflows of the target application pod(if provided). + keywords: + - SSM + - AWS + - EC2 + platforms: + - AWS + maturity: alpha + chaosType: infra + maintainers: + - name: Udit Gaurav + email: udit@chaosnative.com + provider: + name: ChaosNative + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/aws-ssm/aws-ssm-chaos-by-tag + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/aws-ssm/aws-ssm-chaos-by-tag/ + - name: Video + url: + icon: + - url: + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/aws-ssm/aws-ssm-chaos-by-tag/experiment.yaml diff --git a/experiments/aws-ssm/aws-ssm-chaos-by-tag/engine.yaml b/experiments/aws-ssm/aws-ssm-chaos-by-tag/engine.yaml new file mode 100644 index 0000000..19d294b --- /dev/null +++ b/experiments/aws-ssm/aws-ssm-chaos-by-tag/engine.yaml @@ -0,0 +1,62 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + engineState: 'active' + chaosServiceAccount: aws-ssm-chaos-by-tag-sa + experiments: + - name: aws-ssm-chaos-by-tag + spec: + components: + env: + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '60' + + # set chaos duration (in sec) as desired + - name: CHAOS_INTERVAL + value: '60' + + # provide tag of the target ec2 instances + # ex: team:devops (key:value) + - name: EC2_INSTANCE_TAG + value: '' + + # provide the region name of the target instances + - name: REGION + value: '' + + # provide the percentage of available memory to stress + - name: MEMORY_PERCENTAGE + value: '80' + + # provide the CPU chores to comsumed + # 0 will consume all the available cpu cores + - name: CPU_CORE + value: '0' + + # Provide the name of ssm doc + # if not using the default stress docs + - name: DOCUMENT_NAME + value: '' + + # Provide the type of ssm doc + # if not using the default stress docs + - name: DOCUMENT_TYPE + value: '' + + # Provide the format of ssm doc + # if not using the default stress docs + - name: DOCUMENT_FORMAT + value: '' + + # Provide the path of ssm doc + # if not using the default stress docs + - name: DOCUMENT_PATH + value: '' + + # if you want to install dependencies to run default ssm docs + - name: INSTALL_DEPENDENCIES + value: 'True' diff --git a/experiments/aws-ssm/aws-ssm-chaos-by-tag/experiment.yaml b/experiments/aws-ssm/aws-ssm-chaos-by-tag/experiment.yaml new file mode 100644 index 0000000..2ca8c45 --- /dev/null +++ b/experiments/aws-ssm/aws-ssm-chaos-by-tag/experiment.yaml @@ -0,0 +1,133 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Execute AWS SSM Chaos on given ec2 instance Tag +kind: ChaosExperiment +metadata: + name: aws-ssm-chaos-by-tag + labels: + name: aws-ssm-chaos-by-tag + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name aws-ssm-chaos-by-tag + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '60' + + - name: CHAOS_INTERVAL + value: '60' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # provide tag of the target ec2 instances + # ex: team:devops (key:value) + - name: EC2_INSTANCE_TAG + value: '' + + - name: REGION + value: '' + + # it defines the sequence of chaos execution for multiple target instances + # supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + # Provide the path of aws credentials mounted from secret + - name: AWS_SHARED_CREDENTIALS_FILE + value: '/tmp/cloud_config.yml' + + # percentage of total instance to target + - name: INSTANCE_AFFECTED_PERC + value: '' + + # Provide the name of ssm doc + # if not using the default stress docs + - name: DOCUMENT_NAME + value: '' + + # Provide the type of ssm doc + # if not using the default stress docs + - name: DOCUMENT_TYPE + value: '' + + # Provide the format of ssm doc + # if not using the default stress docs + - name: DOCUMENT_FORMAT + value: '' + + # Provide the path of ssm doc + # if not using the default stress docs + - name: DOCUMENT_PATH + value: '' + + # if you want to install dependencies to run default ssm docs + - name: INSTALL_DEPENDENCIES + value: 'True' + + # provide the number of workers for memory stress + - name: NUMBER_OF_WORKERS + value: '1' + + # provide the percentage of available memory to stress + - name: MEMORY_PERCENTAGE + value: '80' + + # provide the CPU chores to comsumed + # 0 will consume all the available cpu cores + - name: CPU_CORE + value: '0' + + # provide the LIB + # only litmus supported + - name: LIB + value: 'litmus' + + labels: + name: aws-ssm-chaos-by-tag + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: cloud-secret + mountPath: /tmp/ diff --git a/experiments/aws-ssm/aws-ssm-chaos-by-tag/rbac.yaml b/experiments/aws-ssm/aws-ssm-chaos-by-tag/rbac.yaml new file mode 100644 index 0000000..473d902 --- /dev/null +++ b/experiments/aws-ssm/aws-ssm-chaos-by-tag/rbac.yaml @@ -0,0 +1,62 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: aws-ssm-chaos-by-tag-sa + namespace: default + labels: + name: aws-ssm-chaos-by-tag-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: aws-ssm-chaos-by-tag-sa + labels: + name: aws-ssm-chaos-by-tag-sa + app.kubernetes.io/part-of: litmus +rules: +# Create and monitor the experiment & helper pods +- apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] +# Performs CRUD operations on the events inside chaosengine and chaosresult +- apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] +# Fetch configmaps & secrets details and mount it to the experiment pod (if specified) +- apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] +# Track and get the runner, experiment, and helper pods log +- apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] +# for creating and managing to execute comands inside target container +- apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] +# for configuring and monitor the experiment job by the chaos-runner pod +- apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] +# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow +- apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: aws-ssm-chaos-by-tag-sa + labels: + name: aws-ssm-chaos-by-tag-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: aws-ssm-chaos-by-tag-sa +subjects: +- kind: ServiceAccount + name: aws-ssm-chaos-by-tag-sa + namespace: default diff --git a/experiments/aws-ssm/aws-ssm.chartserviceversion.yaml b/experiments/aws-ssm/aws-ssm.chartserviceversion.yaml new file mode 100644 index 0000000..38f76a8 --- /dev/null +++ b/experiments/aws-ssm/aws-ssm.chartserviceversion.yaml @@ -0,0 +1,38 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2021-06-11T10:28:08Z + name: aws-ssm + version: 0.1.0 + annotations: + categories: Kubernetes + chartDescription: Injects aws ssm chaos +spec: + displayName: AWS SSM + categoryDescription: > + aws ssm contains chaos to disrupt state of aws resources by litmus aws ssm docs + experiments: + - name: aws-ssm-chaos-by-id + description: "" + - name: aws-ssm-chaos-by-tag + description: "" + keywords: + - AWS + - SSM + - EC2 + maintainers: + - name: ksatchit + email: karthik@chaosnative.com + provider: + name: ChaosNative + links: + - name: Kubernetes Website + url: https://kubernetes.io + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/aws-ssm + - name: Kubernetes Slack + url: https://slack.kubernetes.io/ + icon: + - url: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/aws-ssm/icons/aws-ssm.png + mediatype: image/png + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/aws-ssm/experiments.yaml diff --git a/experiments/aws-ssm/aws-ssm.package.yaml b/experiments/aws-ssm/aws-ssm.package.yaml new file mode 100644 index 0000000..cfae7ec --- /dev/null +++ b/experiments/aws-ssm/aws-ssm.package.yaml @@ -0,0 +1,8 @@ +packageName: aws-ssm +experiments: + - name: aws-ssm-chaos-by-id + CSV: aws-ssm-chaos-by-id.chartserviceversion.yaml + desc: "aws-ssm-chaos-by-id" + - name: aws-ssm-chaos-by-tag + CSV: aws-ssm-chaos-by-tag.chartserviceversion.yaml + desc: "aws-ssm-chaos-by-tag" \ No newline at end of file diff --git a/experiments/aws-ssm/experiments.yaml b/experiments/aws-ssm/experiments.yaml new file mode 100644 index 0000000..6915473 --- /dev/null +++ b/experiments/aws-ssm/experiments.yaml @@ -0,0 +1,266 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Execute AWS SSM Chaos on given ec2 instance IDs +kind: ChaosExperiment +metadata: + name: aws-ssm-chaos-by-id + labels: + name: aws-ssm-chaos-by-id + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name aws-ssm-chaos-by-id + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '60' + + - name: CHAOS_INTERVAL + value: '60' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # Instance ID of the target ec2 instance + # Multiple IDs can also be provided as comma separated values ex: id1,id2 + - name: EC2_INSTANCE_ID + value: '' + + - name: REGION + value: '' + + # it defines the sequence of chaos execution for multiple target instances + # supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + # Provide the path of aws credentials mounted from secret + - name: AWS_SHARED_CREDENTIALS_FILE + value: '/tmp/cloud_config.yml' + + # Provide the name of ssm doc + # if not using the default stress docs + - name: DOCUMENT_NAME + value: '' + + # Provide the type of ssm doc + # if not using the default stress docs + - name: DOCUMENT_TYPE + value: '' + + # Provide the format of ssm doc + # if not using the default stress docs + - name: DOCUMENT_FORMAT + value: '' + + # Provide the path of ssm doc + # if not using the default stress docs + - name: DOCUMENT_PATH + value: '' + + # if you want to install dependencies to run default ssm docs + - name: INSTALL_DEPENDENCIES + value: 'True' + + # provide the number of workers for memory stress + - name: NUMBER_OF_WORKERS + value: '1' + + # provide the percentage of available memory to stress + - name: MEMORY_PERCENTAGE + value: '80' + + # provide the CPU chores to be comsumed + # 0 will consume all the available cpu cores + - name: CPU_CORE + value: '0' + + # provide the LIB + # only litmus supported + - name: LIB + value: 'litmus' + + labels: + name: aws-ssm-chaos-by-id + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: cloud-secret + mountPath: /tmp/ + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Execute AWS SSM Chaos on given ec2 instance Tag +kind: ChaosExperiment +metadata: + name: aws-ssm-chaos-by-tag + labels: + name: aws-ssm-chaos-by-tag + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name aws-ssm-chaos-by-tag + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '60' + + - name: CHAOS_INTERVAL + value: '60' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # provide tag of the target ec2 instances + # ex: team:devops (key:value) + - name: EC2_INSTANCE_TAG + value: '' + + - name: REGION + value: '' + + # it defines the sequence of chaos execution for multiple target instances + # supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + # Provide the path of aws credentials mounted from secret + - name: AWS_SHARED_CREDENTIALS_FILE + value: '/tmp/cloud_config.yml' + + # percentage of total instance to target + - name: INSTANCE_AFFECTED_PERC + value: '' + + # Provide the name of ssm doc + # if not using the default stress docs + - name: DOCUMENT_NAME + value: '' + + # Provide the type of ssm doc + # if not using the default stress docs + - name: DOCUMENT_TYPE + value: '' + + # Provide the format of ssm doc + # if not using the default stress docs + - name: DOCUMENT_FORMAT + value: '' + + # Provide the path of ssm doc + # if not using the default stress docs + - name: DOCUMENT_PATH + value: '' + + # if you want to install dependencies to run default ssm docs + - name: INSTALL_DEPENDENCIES + value: 'True' + + # provide the number of workers for memory stress + - name: NUMBER_OF_WORKERS + value: '1' + + # provide the percentage of available memory to stress + - name: MEMORY_PERCENTAGE + value: '80' + + # provide the CPU chores to comsumed + # 0 will consume all the available cpu cores + - name: CPU_CORE + value: '0' + + # provide the LIB + # only litmus supported + - name: LIB + value: 'litmus' + + labels: + name: aws-ssm-chaos-by-tag + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: cloud-secret + mountPath: /tmp/ + +--- diff --git a/experiments/aws-ssm/icons/aws-ssm-chaos-by-id.png b/experiments/aws-ssm/icons/aws-ssm-chaos-by-id.png new file mode 100644 index 0000000000000000000000000000000000000000..fd09e34f6cd5c49336db1bb357ebf14d82201274 GIT binary patch literal 3152 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 + Azure category of chaos experiments causes the disruption of the azure serives for a certain chaos duration. + experiments: + - name: azure-instance-stop + description: "" + - name: azure-disk-loss + description: "" + keywords: + - Azure + - Instance + - AKS + - Scaleset + maintainers: + - name: Udit Gaurav + email: udit.gaurav@mayadata.io + provider: + name: Chaos Native + links: + - name: Kubernetes Website + url: https://kubernetes.io + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/azure/experiments/azure + - name: Kubernetes Slack + url: https://slack.kubernetes.io/ + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/contents/#cloud-infrastructure + icon: + - url: https://raw.githubusercontent.com/litmuschaos/charthub.litmuschaos.io/master/public/litmus.ico + mediatype: image/png + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/azure/experiments.yaml diff --git a/experiments/azure/azure.package.yaml b/experiments/azure/azure.package.yaml new file mode 100644 index 0000000..904710a --- /dev/null +++ b/experiments/azure/azure.package.yaml @@ -0,0 +1,10 @@ +packageName: azure +experiments: + - name: azure-instance-stop + CSV: azure-instance-stop.chartserviceversion.yaml + desc: "azure-instance-stop" + + - name: azure-disk-loss + CSV: azure-disk-loss.chartserviceversion.yaml + desc: "azure-disk-loss" + diff --git a/experiments/azure/experiments.yaml b/experiments/azure/experiments.yaml new file mode 100644 index 0000000..06d46d2 --- /dev/null +++ b/experiments/azure/experiments.yaml @@ -0,0 +1,195 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Terminating azure VM instance +kind: ChaosExperiment +metadata: + name: azure-instance-stop + labels: + name: azure-instance-stop + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name azure-instance-stop + command: + - /bin/bash + env: + + - name: TOTAL_CHAOS_DURATION + value: '30' + + - name: CHAOS_INTERVAL + value: '30' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # provide the target instance name(s) (comma separated if multiple) + - name: AZURE_INSTANCE_NAME + value: '' + + # provide the resource group of the instance + - name: RESOURCE_GROUP + value: '' + + # accepts enable/disable, default is disable + - name: SCALE_SET + value: '' + + # Provide the path of aks credentials mounted from secret + - name: AZURE_AUTH_LOCATION + value: '/tmp/azure.auth' + + - name: SEQUENCE + value: 'parallel' + + # provide the LIB + # only litmus supported + - name: LIB + value: 'litmus' + + labels: + name: azure-instance-stop + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: cloud-secret + mountPath: /tmp/ + + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Detaches disk from the VM and then re-attaches disk to the VM +kind: ChaosExperiment +metadata: + name: azure-disk-loss + labels: + name: azure-disk-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name azure-disk-loss + command: + - /bin/bash + env: + + - name: TOTAL_CHAOS_DURATION + value: '30' + + - name: CHAOS_INTERVAL + value: '30' + + - name: LIB + value: 'litmus' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # provide the resource group of the instance + - name: RESOURCE_GROUP + value: '' + + # accepts enable/disable, default is disable + - name: SCALE_SET + value: '' + + # provide the virtual disk names (comma separated if multiple) + - name: VIRTUAL_DISK_NAMES + value: '' + + # provide the sequence type for the run. Options: serial/parallel + - name: SEQUENCE + value: 'parallel' + + # provide the path to aks credentials mounted from secret + - name: AZURE_AUTH_LOCATION + value: '/tmp/azure.auth' + + labels: + name: azure-disk-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + + secrets: + - name: cloud-secret + mountPath: /tmp/ + +--- diff --git a/experiments/azure/icons/azure-disk-loss.png b/experiments/azure/icons/azure-disk-loss.png new file mode 100644 index 0000000000000000000000000000000000000000..5baec5e1850d10cf4b49c165957ed4c7a4739f3c GIT binary patch literal 22398 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 + Cassandra is a free and open-source, distributed, wide column store, NoSQL database management system designed to handle + large amounts of data across many commodity servers, providing high availability with no single point of failure. + It will install all the experiments which can be used to inject chaos into cassandra applications. + experiments: + - name: cassandra-pod-delete + description: "" + keywords: + - Kubernetes + - K8S + - Pod + - Cassandra + maintainers: + - name: ksatchit + email: karthik.s@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + links: + - name: Cassandra Website + url: http://cassandra.apache.org/ + - name: Source Code + url: https://github.com/apache/cassandra + - name: Cassandra Slack + url: https://cassandra-slack.herokuapp.com + - name: Documentation + url: http://cassandra.apache.org/doc/latest/ + icon: + - url: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/cassandra/icons/cassandra.png + mediatype: image/png + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/cassandra/experiments.yaml diff --git a/experiments/cassandra/cassandra.package.yaml b/experiments/cassandra/cassandra.package.yaml new file mode 100644 index 0000000..aeab8f3 --- /dev/null +++ b/experiments/cassandra/cassandra.package.yaml @@ -0,0 +1,5 @@ +packageName: cassandra +experiments: + - name: cassandra-pod-delete + CSV: cassandra-pod-delete.chartserviceversion.yaml + desc: "cassandra-pod-delete" diff --git a/experiments/cassandra/experiments.yaml b/experiments/cassandra/experiments.yaml new file mode 100644 index 0000000..0dbe50a --- /dev/null +++ b/experiments/cassandra/experiments.yaml @@ -0,0 +1,123 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Deletes a pod belonging to a casandra statefulset +kind: ChaosExperiment +metadata: + name: cassandra-pod-delete + labels: + name: cassandra-pod-delete + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Create and manage the liveness and target application services + - apiGroups: [""] + resources: ["services"] + verbs: ["create","delete","get","list", "deletecollection"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for deriving the parent/owner details of the pod + - apiGroups: ["apps"] + resources: ["deployments","statefulsets"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name cassandra-pod-delete + command: + - /bin/bash + env: + + # provide cassandra service name + # default service: cassandra + - name: CASSANDRA_SVC_NAME + value: '' + + # provide the keyspace replication factor + - name: KEYSPACE_REPLICATION_FACTOR + value: '' + + # provide cassandra port + # default port: 9042 + - name: CASSANDRA_PORT + value: '9042' + + # provide liveness deployement port + # default port: 8088, It only supports 8088 port + - name: LIVENESS_SVC_PORT + value: '8088' + + # provide cassandra liveness image + - name: CASSANDRA_LIVENESS_IMAGE + value: 'litmuschaos/cassandra-client:latest' + + - name: TOTAL_CHAOS_DURATION + value: '15' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + - name: CHAOS_INTERVAL + value: '15' + + # SET THE CASSANDRA_LIVENESS_CHECK + # IT CAN BE `enable` OR `disable` + - name: CASSANDRA_LIVENESS_CHECK + value: '' + + ## Period to wait before and after injection of chaos + - name: RAMP_TIME + value: '' + + - name: FORCE + value: '' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + ## env var that describes the library used to execute the chaos + ## default: litmus. Supported values: litmus + - name: LIB + value: 'litmus' + + labels: + name: cassandra-pod-delete + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + +--- diff --git a/experiments/cassandra/icons/cassandra-pod-delete.png b/experiments/cassandra/icons/cassandra-pod-delete.png new file mode 100644 index 0000000000000000000000000000000000000000..16aa7b417698ef0d66f130fe9b3218f25fa6f356 GIT binary patch literal 959 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 + CoreDNS is an open-source system for DNS management of containerized applications. + It helps to resolve services to IP address. It will install all the experiments which can be used to inject chaos into containerized applications. + experiments: + - name: coredns-pod-delete + description: "" + keywords: + - Kubernetes + - K8S + - Pod + - CoreDNS + - DNS + maintainers: + - name: Raj Babu Das + email: raj.das@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + links: + - name: CoreDNS Website + url: https://coredns.io + - name: Source Code + url: https://github.com/coredns/coredns + - name: CoreDNS Slack + url: https://slack.cncf.io/ + - name: Documentation + url: https://coredns.io/manual/toc/ + icon: + - url: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/coredns/icons/coredns-pod-delete.png + mediatype: image/png + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/coredns/experiments.yaml diff --git a/experiments/coredns/coredns.package.yaml b/experiments/coredns/coredns.package.yaml new file mode 100644 index 0000000..9fa1e66 --- /dev/null +++ b/experiments/coredns/coredns.package.yaml @@ -0,0 +1,5 @@ +packageName: coredns +experiments: + - name: coredns-pod-delete + CSV: coredns-pod-delete.chartserviceversion.yaml + desc: "coredns pod delete experiment" \ No newline at end of file diff --git a/experiments/coredns/experiments.yaml b/experiments/coredns/experiments.yaml new file mode 100644 index 0000000..46c81be --- /dev/null +++ b/experiments/coredns/experiments.yaml @@ -0,0 +1,74 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Deletes coredns pod in kube-system namespace +kind: ChaosExperiment +metadata: + name: coredns-pod-delete + labels: + name: coredns-pod-delete + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + permissions: + - apiGroups: + - "" + - "batch" + - "litmuschaos.io" + resources: + - "services" + - "jobs" + - "pods" + - "pods/log" + - "events" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "get" + - "list" + - "patch" + - "create" + - "update" + - "delete" + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/coredns/pod_delete/pod_delete_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + - name: TOTAL_CHAOS_DURATION + value: '15' + + # provide the kill count + - name: KILL_COUNT + value: '' + + - name: FORCE + value: 'true' + + - name: CHAOS_INTERVAL + value: '5' + + #supported libs are litmus and powerfulseal + - name: LIB + value: 'litmus' + + - name: LIB_IMAGE + value: 'litmuschaos/pod-delete-helper:latest' + + labels: + name: coredns-pod-delete + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + +--- diff --git a/experiments/coredns/icons/coredns-pod-delete.png b/experiments/coredns/icons/coredns-pod-delete.png new file mode 100644 index 0000000000000000000000000000000000000000..c643b7b898a3ed9c82a48e03046b2c98c0a119bc GIT binary patch literal 20309 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 literal 0 HcmV?d00001 diff --git a/experiments/coredns/icons/coredns.png b/experiments/coredns/icons/coredns.png new file mode 100644 index 0000000000000000000000000000000000000000..c643b7b898a3ed9c82a48e03046b2c98c0a119bc GIT binary patch literal 20309 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 literal 0 HcmV?d00001 diff --git a/experiments/gcp/experiments.yaml b/experiments/gcp/experiments.yaml new file mode 100644 index 0000000..c262a5d --- /dev/null +++ b/experiments/gcp/experiments.yaml @@ -0,0 +1,374 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Causes loss of a non-boot storage persistent disk from a GCP VM instance filtered by a label for a specified duration before attaching them back +kind: ChaosExperiment +metadata: + name: gcp-vm-disk-loss-by-label + labels: + name: gcp-vm-disk-loss-by-label + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name gcp-vm-disk-loss-by-label + command: + - /bin/bash + env: + + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '30' + + # set chaos interval (in sec) as desired + - name: CHAOS_INTERVAL + value: '30' + + # set the GCP project id + - name: GCP_PROJECT_ID + value: '' + + # set the zone in which all the disks are created + # all the disks must exist in the same zone + - name: DISK_ZONES + value: '' + + # set the label of the target disk volumes + - name: DISK_VOLUME_LABEL + value: '' + + # set the percentage value of the disks with the given label + # which should be targeted as part of the chaos injection + - name: DISK_AFFECTED_PERC + value: '' + + labels: + name: gcp-vm-disk-loss-by-label + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: cloud-secret + mountPath: /tmp/ + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Stops GCP VM instances and GKE nodes filtered by a label for a specified duration and later restarts them +kind: ChaosExperiment +metadata: + name: gcp-vm-instance-stop-by-label + labels: + name: gcp-vm-instance-stop-by-label + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name gcp-vm-instance-stop-by-label + command: + - /bin/bash + env: + + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '30' + + # set chaos interval (in sec) as desired + - name: CHAOS_INTERVAL + value: '30' + + - name: SEQUENCE + value: 'parallel' + + # GCP project ID to which the vm instances belong + - name: GCP_PROJECT_ID + value: '' + + # Label of the target vm instance(s) + - name: INSTANCE_LABEL + value: '' + + # Zone in which the target vm instance(s) filtered by the label exist + # all the instances should lie in a single zone + - name: INSTANCE_ZONES + value: '' + + # enable it if the target instance is a part of a managed instance group + - name: MANAGED_INSTANCE_GROUP + value: 'disable' + + # set the percentage value of the instances with the given label + # which should be targeted as part of the chaos injection + - name: INSTANCE_AFFECTED_PERC + value: '' + + labels: + name: gcp-vm-instance-stop-by-label + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + + secrets: + - name: cloud-secret + mountPath: /tmp/ + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Stops GCP VM instances and GKE nodes for a specified duration and later restarts them +kind: ChaosExperiment +metadata: + name: gcp-vm-instance-stop + labels: + name: gcp-vm-instance-stop + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name gcp-vm-instance-stop + command: + - /bin/bash + env: + + - name: TOTAL_CHAOS_DURATION + value: '30' + + - name: CHAOS_INTERVAL + value: '30' + + # parallel or serial; determines how the VM instances are terminated, all at once or one at a time + - name: SEQUENCE + value: 'parallel' + + # provide the LIB + # only litmus supported + - name: LIB + value: 'litmus' + + # period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # enable or disable; shall be set to enable if the target instances are a part of a managed instance group + - name: MANAGED_INSTANCE_GROUP + value: 'disable' + + # Instance name of the target vm instance(s) + # Multiple instance names can be provided as comma separated values ex: instance1,instance2 + - name: VM_INSTANCE_NAMES + value: '' + + # GCP project ID to which the vm instances belong + - name: GCP_PROJECT_ID + value: '' + + # Instance zone(s) of the target vm instance(s) + # If more than one instance is targetted, provide zone for each in the order of their + # respective instance name in VM_INSTANCE_NAME as comma separated values ex: zone1,zone2 + - name: INSTANCE_ZONES + value: '' + + labels: + name: gcp-vm-instance-stop + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: cloud-secret + mountPath: /tmp/ + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Causes loss of a non-boot storage persistent disk from a GCP VM instance for a specified duration before attaching them back +kind: ChaosExperiment +metadata: + name: gcp-vm-disk-loss + labels: + name: gcp-vm-disk-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name gcp-vm-disk-loss + command: + - /bin/bash + env: + + - name: TOTAL_CHAOS_DURATION + value: '30' + + - name: CHAOS_INTERVAL + value: '30' + + - name: LIB + value: 'litmus' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # parallel or serial; determines how chaos is injected + - name: SEQUENCE + value: 'parallel' + + # set the GCP project id + - name: GCP_PROJECT_ID + value: '' + + # set the disk volume name(s) as comma seperated values + # eg. volume1,volume2,... + - name: DISK_VOLUME_NAMES + value: '' + + # set the disk zone(s) as comma seperated values in the corresponding + # order of DISK_VOLUME_NAME + # eg. zone1,zone2,... + - name: DISK_ZONES + value: '' + + labels: + name: gcp-vm-disk-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: cloud-secret + mountPath: /tmp/ + +--- diff --git a/experiments/gcp/gcp-vm-disk-loss-by-label/engine.yaml b/experiments/gcp/gcp-vm-disk-loss-by-label/engine.yaml new file mode 100644 index 0000000..827a47e --- /dev/null +++ b/experiments/gcp/gcp-vm-disk-loss-by-label/engine.yaml @@ -0,0 +1,41 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: gcp-disk-chaos +spec: + engineState: 'active' + chaosServiceAccount: gcp-vm-disk-loss-by-label-sa + experiments: + - name: gcp-vm-disk-loss-by-label + spec: + components: + env: + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '30' + + # set chaos interval (in sec) as desired + - name: CHAOS_INTERVAL + value: '30' + + # set the GCP project id + - name: GCP_PROJECT_ID + value: '' + + # set the zone in which all the disks are created + # all the disks must exist in the same zone + - name: DISK_ZONES + value: '' + + # set the label of the target disk volumes + - name: DISK_VOLUME_LABEL + value: '' + + # set the percentage value of the disks with the given label + # which should be targeted as part of the chaos injection + - name: DISK_AFFECTED_PERC + value: '' + + # parallel or serial; determines how chaos is injected + - name: SEQUENCE + value: 'parallel' diff --git a/experiments/gcp/gcp-vm-disk-loss-by-label/experiment.yaml b/experiments/gcp/gcp-vm-disk-loss-by-label/experiment.yaml new file mode 100644 index 0000000..773443c --- /dev/null +++ b/experiments/gcp/gcp-vm-disk-loss-by-label/experiment.yaml @@ -0,0 +1,83 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Causes loss of a non-boot storage persistent disk from a GCP VM instance filtered by a label for a specified duration before attaching them back +kind: ChaosExperiment +metadata: + name: gcp-vm-disk-loss-by-label + labels: + name: gcp-vm-disk-loss-by-label + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name gcp-vm-disk-loss-by-label + command: + - /bin/bash + env: + + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '30' + + # set chaos interval (in sec) as desired + - name: CHAOS_INTERVAL + value: '30' + + # set the GCP project id + - name: GCP_PROJECT_ID + value: '' + + # set the zone in which all the disks are created + # all the disks must exist in the same zone + - name: DISK_ZONES + value: '' + + # set the label of the target disk volumes + - name: DISK_VOLUME_LABEL + value: '' + + # set the percentage value of the disks with the given label + # which should be targeted as part of the chaos injection + - name: DISK_AFFECTED_PERC + value: '' + + labels: + name: gcp-vm-disk-loss-by-label + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: cloud-secret + mountPath: /tmp/ diff --git a/experiments/gcp/gcp-vm-disk-loss-by-label/gcp-vm-disk-loss-by-label.chartserviceversion.yaml b/experiments/gcp/gcp-vm-disk-loss-by-label/gcp-vm-disk-loss-by-label.chartserviceversion.yaml new file mode 100644 index 0000000..2aa5bee --- /dev/null +++ b/experiments/gcp/gcp-vm-disk-loss-by-label/gcp-vm-disk-loss-by-label.chartserviceversion.yaml @@ -0,0 +1,33 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + name: gcp-vm-disk-loss-by-label + version: 0.1.0 + annotations: + categories: gcp +spec: + displayName: gcp-vm-disk-loss-by-label + categoryDescription: > + Causes loss of a non-boot storage persistent disk from a GCP VM instance filtered by a label for a specified duration before attaching them back + keywords: + - "Disk" + - "GCP" + platforms: + - "Minikube" + maturity: alpha + maintainers: + - name: Neelanjan Manna + email: neelanjan.manna@harness.io + minKubeVersion: 1.12.0 + provider: + name: Harness + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/gcp/gcp-vm-disk-loss-by-label/ + icon: + - url: + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/gcp/gcp-vm-disk-loss-by-label/experiment.yaml diff --git a/experiments/gcp/gcp-vm-disk-loss-by-label/rbac.yaml b/experiments/gcp/gcp-vm-disk-loss-by-label/rbac.yaml new file mode 100644 index 0000000..3406523 --- /dev/null +++ b/experiments/gcp/gcp-vm-disk-loss-by-label/rbac.yaml @@ -0,0 +1,62 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: gcp-vm-disk-loss-by-label-sa + namespace: default + labels: + name: gcp-vm-disk-loss-by-label-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: gcp-vm-disk-loss-by-label-sa + labels: + name: gcp-vm-disk-loss-by-label-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: gcp-vm-disk-loss-by-label-sa + labels: + name: gcp-vm-disk-loss-by-label-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: gcp-vm-disk-loss-by-label-sa +subjects: +- kind: ServiceAccount + name: gcp-vm-disk-loss-by-label-sa + namespace: default \ No newline at end of file diff --git a/experiments/gcp/gcp-vm-disk-loss/engine.yaml b/experiments/gcp/gcp-vm-disk-loss/engine.yaml new file mode 100644 index 0000000..71a4b35 --- /dev/null +++ b/experiments/gcp/gcp-vm-disk-loss/engine.yaml @@ -0,0 +1,40 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: gcp-disk-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + chaosServiceAccount: gcp-vm-disk-loss-sa + experiments: + - name: gcp-vm-disk-loss + spec: + components: + env: + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '30' + + # set chaos interval (in sec) as desired + - name: CHAOS_INTERVAL + value: '30' + + # set the GCP project id + - name: GCP_PROJECT_ID + value: '' + + # set the disk volume name(s) as comma seperated values + # eg. volume1,volume2,... + - name: DISK_VOLUME_NAMES + value: '' + + # set the disk zone(s) as comma seperated values in the corresponding + # order of DISK_VOLUME_NAME + # eg. zone1,zone2,... + - name: DISK_ZONES + value: '' + + # parallel or serial; determines how chaos is injected + - name: SEQUENCE + value: 'parallel' diff --git a/experiments/gcp/gcp-vm-disk-loss/experiment.yaml b/experiments/gcp/gcp-vm-disk-loss/experiment.yaml new file mode 100644 index 0000000..dc9fa37 --- /dev/null +++ b/experiments/gcp/gcp-vm-disk-loss/experiment.yaml @@ -0,0 +1,89 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Causes loss of a non-boot storage persistent disk from a GCP VM instance for a specified duration before attaching them back +kind: ChaosExperiment +metadata: + name: gcp-vm-disk-loss + labels: + name: gcp-vm-disk-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name gcp-vm-disk-loss + command: + - /bin/bash + env: + + - name: TOTAL_CHAOS_DURATION + value: '30' + + - name: CHAOS_INTERVAL + value: '30' + + - name: LIB + value: 'litmus' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # parallel or serial; determines how chaos is injected + - name: SEQUENCE + value: 'parallel' + + # set the GCP project id + - name: GCP_PROJECT_ID + value: '' + + # set the disk volume name(s) as comma seperated values + # eg. volume1,volume2,... + - name: DISK_VOLUME_NAMES + value: '' + + # set the disk zone(s) as comma seperated values in the corresponding + # order of DISK_VOLUME_NAME + # eg. zone1,zone2,... + - name: DISK_ZONES + value: '' + + labels: + name: gcp-vm-disk-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: cloud-secret + mountPath: /tmp/ diff --git a/experiments/gcp/gcp-vm-disk-loss/gcp-vm-disk-loss.chartserviceversion.yaml b/experiments/gcp/gcp-vm-disk-loss/gcp-vm-disk-loss.chartserviceversion.yaml new file mode 100644 index 0000000..452dffe --- /dev/null +++ b/experiments/gcp/gcp-vm-disk-loss/gcp-vm-disk-loss.chartserviceversion.yaml @@ -0,0 +1,33 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + name: gcp-vm-disk-loss + version: 0.1.0 + annotations: + categories: gcp +spec: + displayName: gcp-vm-disk-loss + categoryDescription: > + Causes loss of a non-boot storage persistent disk from a GCP VM instance for a specified duration before attaching them back + keywords: + - "Disk" + - "GCP" + platforms: + - "GCP" + maturity: alpha + maintainers: + - name: Neelanjan Manna + email: neelanjan@chaosnative.com + minKubeVersion: 1.12.0 + provider: + name: ChaosNative + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/gcp/gcp-vm-disk-loss/ + icon: + - url: + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/gcp/gcp-vm-disk-loss/experiment.yaml diff --git a/experiments/gcp/gcp-vm-disk-loss/rbac.yaml b/experiments/gcp/gcp-vm-disk-loss/rbac.yaml new file mode 100644 index 0000000..27c2072 --- /dev/null +++ b/experiments/gcp/gcp-vm-disk-loss/rbac.yaml @@ -0,0 +1,62 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: gcp-vm-disk-loss-sa + namespace: default + labels: + name: gcp-vm-disk-loss-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: gcp-vm-disk-loss-sa + labels: + name: gcp-vm-disk-loss-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: gcp-vm-disk-loss-sa + labels: + name: gcp-vm-disk-loss-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: gcp-vm-disk-loss-sa +subjects: +- kind: ServiceAccount + name: gcp-vm-disk-loss-sa + namespace: default \ No newline at end of file diff --git a/experiments/gcp/gcp-vm-instance-stop-by-label/engine.yaml b/experiments/gcp/gcp-vm-instance-stop-by-label/engine.yaml new file mode 100644 index 0000000..34bf1be --- /dev/null +++ b/experiments/gcp/gcp-vm-instance-stop-by-label/engine.yaml @@ -0,0 +1,46 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: gcp-vm-chaos +spec: + # It can be active/stop + engineState: 'active' + chaosServiceAccount: gcp-vm-instance-stop-by-label-sa + # It can be delete/retain + experiments: + - name: gcp-vm-instance-stop-by-label + spec: + components: + env: + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '30' + + # set chaos interval (in sec) as desired + - name: CHAOS_INTERVAL + value: '30' + + - name: SEQUENCE + value: 'parallel' + + # GCP project ID to which the vm instances belong + - name: GCP_PROJECT_ID + value: '' + + # Label of the target vm instance(s) + - name: INSTANCE_LABEL + value: '' + + # Zone in which the target vm instance(s) filtered by the label exist + # all the instances should lie in a single zone + - name: INSTANCE_ZONES + value: '' + + # enable it if the target instances are a part of a managed instance group + - name: MANAGED_INSTANCE_GROUP + value: 'disable' + + # set the percentage value of the instances with the given label + # which should be targeted as part of the chaos injection + - name: INSTANCE_AFFECTED_PERC + value: '' \ No newline at end of file diff --git a/experiments/gcp/gcp-vm-instance-stop-by-label/experiment.yaml b/experiments/gcp/gcp-vm-instance-stop-by-label/experiment.yaml new file mode 100644 index 0000000..4091b8f --- /dev/null +++ b/experiments/gcp/gcp-vm-instance-stop-by-label/experiment.yaml @@ -0,0 +1,95 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Stops GCP VM instances and GKE nodes filtered by a label for a specified duration and later restarts them +kind: ChaosExperiment +metadata: + name: gcp-vm-instance-stop-by-label + labels: + name: gcp-vm-instance-stop-by-label + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name gcp-vm-instance-stop-by-label + command: + - /bin/bash + env: + + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '30' + + # set chaos interval (in sec) as desired + - name: CHAOS_INTERVAL + value: '30' + + - name: SEQUENCE + value: 'parallel' + + # GCP project ID to which the vm instances belong + - name: GCP_PROJECT_ID + value: '' + + # Label of the target vm instance(s) + - name: INSTANCE_LABEL + value: '' + + # Zone in which the target vm instance(s) filtered by the label exist + # all the instances should lie in a single zone + - name: INSTANCE_ZONES + value: '' + + # enable it if the target instance is a part of a managed instance group + - name: MANAGED_INSTANCE_GROUP + value: 'disable' + + # set the percentage value of the instances with the given label + # which should be targeted as part of the chaos injection + - name: INSTANCE_AFFECTED_PERC + value: '' + + labels: + name: gcp-vm-instance-stop-by-label + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + + secrets: + - name: cloud-secret + mountPath: /tmp/ diff --git a/experiments/gcp/gcp-vm-instance-stop-by-label/gcp-vm-instance-stop-by-label.chartserviceversion.yaml b/experiments/gcp/gcp-vm-instance-stop-by-label/gcp-vm-instance-stop-by-label.chartserviceversion.yaml new file mode 100644 index 0000000..f14399d --- /dev/null +++ b/experiments/gcp/gcp-vm-instance-stop-by-label/gcp-vm-instance-stop-by-label.chartserviceversion.yaml @@ -0,0 +1,33 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + name: gcp-vm-instance-stop-by-label + version: 0.1.0 + annotations: + categories: gcp +spec: + displayName: gcp-vm-instance-stop-by-label + categoryDescription: > + Stops GCP VM instances and GKE nodes filtered by a label for a specified duration and later restarts them + keywords: + - "VM" + - "GCP" + platforms: + - "Minikube" + maturity: alpha + maintainers: + - name: Neelanjan Manna + email: neelanjan.manna@harness.io + minKubeVersion: 1.12.0 + provider: + name: Harness + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/gcp/gcp-vm-instance-stop-by-label/ + icon: + - url: + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/gcp/gcp-vm-instance-stop-by-label/experiment.yaml diff --git a/experiments/gcp/gcp-vm-instance-stop-by-label/rbac.yaml b/experiments/gcp/gcp-vm-instance-stop-by-label/rbac.yaml new file mode 100644 index 0000000..f37f8f7 --- /dev/null +++ b/experiments/gcp/gcp-vm-instance-stop-by-label/rbac.yaml @@ -0,0 +1,66 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: gcp-vm-instance-stop-by-label-sa + namespace: default + labels: + name: gcp-vm-instance-stop-by-label-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: gcp-vm-instance-stop-by-label-sa + labels: + name: gcp-vm-instance-stop-by-label-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: gcp-vm-instance-stop-by-label-sa + labels: + name: gcp-vm-instance-stop-by-label-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: gcp-vm-instance-stop-by-label-sa +subjects: +- kind: ServiceAccount + name: gcp-vm-instance-stop-by-label-sa + namespace: default \ No newline at end of file diff --git a/experiments/gcp/gcp-vm-instance-stop/engine.yaml b/experiments/gcp/gcp-vm-instance-stop/engine.yaml new file mode 100644 index 0000000..3966faa --- /dev/null +++ b/experiments/gcp/gcp-vm-instance-stop/engine.yaml @@ -0,0 +1,42 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: gcp-vm-chaos +spec: + engineState: 'active' + chaosServiceAccount: gcp-vm-instance-stop-sa + experiments: + - name: gcp-vm-instance-stop + spec: + components: + env: + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '30' + + # set chaos interval (in sec) as desired + - name: CHAOS_INTERVAL + value: '30' + + # Instance name of the target vm instance(s) + # Multiple instance names can be provided as comma separated values ex: instance1,instance2 + - name: VM_INSTANCE_NAMES + value: '' + + # GCP project ID to which the vm instances belong + - name: GCP_PROJECT_ID + value: '' + + # Instance zone(s) of the target vm instance(s) + # If more than one instance is targetted, provide zone for each in the order of their + # respective instance name in VM_INSTANCE_NAME as comma separated values ex: zone1,zone2 + - name: INSTANCE_ZONES + value: '' + + # enable it if the target instance is a part of a managed instance group. + - name: MANAGED_INSTANCE_GROUP + value: 'disable' + + # parallel or serial; determines how chaos is injected + - name: SEQUENCE + value: 'parallel' diff --git a/experiments/gcp/gcp-vm-instance-stop/experiment.yaml b/experiments/gcp/gcp-vm-instance-stop/experiment.yaml new file mode 100644 index 0000000..f1a60ab --- /dev/null +++ b/experiments/gcp/gcp-vm-instance-stop/experiment.yaml @@ -0,0 +1,99 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Stops GCP VM instances and GKE nodes for a specified duration and later restarts them +kind: ChaosExperiment +metadata: + name: gcp-vm-instance-stop + labels: + name: gcp-vm-instance-stop + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name gcp-vm-instance-stop + command: + - /bin/bash + env: + + - name: TOTAL_CHAOS_DURATION + value: '30' + + - name: CHAOS_INTERVAL + value: '30' + + # parallel or serial; determines how the VM instances are terminated, all at once or one at a time + - name: SEQUENCE + value: 'parallel' + + # provide the LIB + # only litmus supported + - name: LIB + value: 'litmus' + + # period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # enable or disable; shall be set to enable if the target instances are a part of a managed instance group + - name: MANAGED_INSTANCE_GROUP + value: 'disable' + + # Instance name of the target vm instance(s) + # Multiple instance names can be provided as comma separated values ex: instance1,instance2 + - name: VM_INSTANCE_NAMES + value: '' + + # GCP project ID to which the vm instances belong + - name: GCP_PROJECT_ID + value: '' + + # Instance zone(s) of the target vm instance(s) + # If more than one instance is targetted, provide zone for each in the order of their + # respective instance name in VM_INSTANCE_NAME as comma separated values ex: zone1,zone2 + - name: INSTANCE_ZONES + value: '' + + labels: + name: gcp-vm-instance-stop + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: cloud-secret + mountPath: /tmp/ diff --git a/experiments/gcp/gcp-vm-instance-stop/gcp-vm-instance-stop.chartserviceversion.yaml b/experiments/gcp/gcp-vm-instance-stop/gcp-vm-instance-stop.chartserviceversion.yaml new file mode 100644 index 0000000..6b8aab2 --- /dev/null +++ b/experiments/gcp/gcp-vm-instance-stop/gcp-vm-instance-stop.chartserviceversion.yaml @@ -0,0 +1,33 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + name: gcp-vm-instance-stop + version: 0.1.0 + annotations: + categories: gcp +spec: + displayName: gcp-vm-instance-stop + categoryDescription: > + Stops GCP VM instances and GKE nodes for a specified duration and later restarts them + keywords: + - "VM" + - "GCP" + platforms: + - "GCP" + maturity: alpha + maintainers: + - name: Neelanjan Manna + email: neelanjan@chaosnative.com + minKubeVersion: 1.12.0 + provider: + name: ChaosNative + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/gcp/gcp-vm-instance-stop/ + icon: + - url: + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/gcp/gcp-vm-instance-stop/experiment.yaml diff --git a/experiments/gcp/gcp-vm-instance-stop/rbac.yaml b/experiments/gcp/gcp-vm-instance-stop/rbac.yaml new file mode 100644 index 0000000..0592ea9 --- /dev/null +++ b/experiments/gcp/gcp-vm-instance-stop/rbac.yaml @@ -0,0 +1,66 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: gcp-vm-instance-stop-sa + namespace: default + labels: + name: gcp-vm-instance-stop-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: gcp-vm-instance-stop-sa + labels: + name: gcp-vm-instance-stop-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: gcp-vm-instance-stop-sa + labels: + name: gcp-vm-instance-stop-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: gcp-vm-instance-stop-sa +subjects: +- kind: ServiceAccount + name: gcp-vm-instance-stop-sa + namespace: default \ No newline at end of file diff --git a/experiments/gcp/gcp.chartserviceversion.yaml b/experiments/gcp/gcp.chartserviceversion.yaml new file mode 100644 index 0000000..ed3d603 --- /dev/null +++ b/experiments/gcp/gcp.chartserviceversion.yaml @@ -0,0 +1,42 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + name: gcp + version: 0.1.0 + annotations: + categories: gcp +spec: + displayName: gcp chaos + categoryDescription: > + GCP contains chaos to disrupt state of gcp resources running part of the gcp services + experiments: + - name: gcp-vm-instance-stop + description: "" + - name: gcp-vm-disk-loss + description: "" + - name: gcp-vm-instance-stop-by-label + description: "" + - name: gcp-vm-disk-loss-by-label + description: "" + keywords: + - "VM" + - "Disk" + - "GCP" + - "Infra" + maintainers: + - name: Neelanjan Manna + email: neelanjan.manna@harness.io + minKubeVersion: 1.12.0 + provider: + name: Harness + links: + - name: GCP Website + url: https://cloud.google.com/ + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/contents/#cloud-infrastructure + - name: Community Slack + url: https://app.slack.com/client/T09NY5SBT/CNXNB0ZTN + icon: + - url: + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/gcp/experiments.yaml diff --git a/experiments/gcp/gcp.package.yaml b/experiments/gcp/gcp.package.yaml new file mode 100644 index 0000000..28c1b33 --- /dev/null +++ b/experiments/gcp/gcp.package.yaml @@ -0,0 +1,14 @@ +packageName: gcp +experiments: + - name: gcp-vm-instance-stop + CSV: gcp-vm-instance-stop.chartserviceversion.yaml + desc: "gcp-vm-instance-stop" + - name: gcp-vm-disk-loss + CSV: gcp-vm-disk-loss.chartserviceversion.yaml + desc: "gcp-vm-disk-loss" + - name: gcp-vm-instance-stop-by-label + CSV: gcp-vm-instance-stop-by-label.chartserviceversion.yaml + desc: "gcp-vm-instance-stop-by-label" + - name: gcp-vm-disk-loss-by-label + CSV: gcp-vm-disk-loss-by-label.chartserviceversion.yaml + desc: "gcp-vm-disk-loss-by-label" diff --git a/experiments/gcp/icons/gcp-vm-disk-loss-by-label.png b/experiments/gcp/icons/gcp-vm-disk-loss-by-label.png new file mode 100644 index 0000000000000000000000000000000000000000..1b1b94c522b45561914527f96acb40d2b0b635df GIT binary patch literal 40149 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

-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 literal 0 HcmV?d00001 diff --git a/experiments/gcp/icons/gcp-vm-disk-loss.png b/experiments/gcp/icons/gcp-vm-disk-loss.png new file mode 100644 index 0000000000000000000000000000000000000000..1b1b94c522b45561914527f96acb40d2b0b635df GIT binary patch literal 40149 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

-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 literal 0 HcmV?d00001 diff --git a/experiments/gcp/icons/gcp-vm-instance-stop-by-label.png b/experiments/gcp/icons/gcp-vm-instance-stop-by-label.png new file mode 100644 index 0000000000000000000000000000000000000000..9f1b90f8534574a0171ce676f92f4c3dacabd71b GIT binary patch literal 68699 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 M07*qoM6N<$f+#YqcmMzZ literal 0 HcmV?d00001 diff --git a/experiments/gcp/icons/gcp-vm-instance-stop.png b/experiments/gcp/icons/gcp-vm-instance-stop.png new file mode 100644 index 0000000000000000000000000000000000000000..9f1b90f8534574a0171ce676f92f4c3dacabd71b GIT binary patch literal 68699 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 M07*qoM6N<$f+#YqcmMzZ literal 0 HcmV?d00001 diff --git a/experiments/gcp/icons/gcp.png b/experiments/gcp/icons/gcp.png new file mode 100644 index 0000000000000000000000000000000000000000..577f8bad34919c9b7d0487c966c323ed6ed4bcb5 GIT binary patch literal 30752 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%0DeSB+8VaA6;s|>>DYk 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 literal 0 HcmV?d00001 diff --git a/experiments/generic/container-kill/container-kill.chartserviceversion.yaml b/experiments/generic/container-kill/container-kill.chartserviceversion.yaml new file mode 100644 index 0000000..14db31c --- /dev/null +++ b/experiments/generic/container-kill/container-kill.chartserviceversion.yaml @@ -0,0 +1,48 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2019-10-15T10:28:08Z + name: container-kill + version: 0.1.13 + annotations: + categories: "Kubernetes" + vendor: "CNCF" + support: https://slack.openebs.io/ +spec: + displayName: container-kill + categoryDescription: | + Container kill contains chaos to disrupt state of kubernetes resources. Experiments can inject random container delete failures against specified application. + - Executes SIGKILL on containers of random replicas of an application deployment. + - Tests deployment sanity (replica availability & uninterrupted service) and recovery workflows of the application pod. + keywords: + - Kubernetes + - K8S + - Pod + - Container + platforms: + - GKE + - Minikube + - Packet(Kubeadm) + - EKS + - AKS + maturity: alpha + maintainers: + - name: ksatchit + email: karthik.s@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/container-kill + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/pods/container-kill/ + - name: Video + url: https://www.youtube.com/watch?v=XKyMNdVsKMo + icon: + - url: + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/container-kill/experiment.yaml diff --git a/experiments/generic/container-kill/engine.yaml b/experiments/generic/container-kill/engine.yaml new file mode 100644 index 0000000..19ccab1 --- /dev/null +++ b/experiments/generic/container-kill/engine.yaml @@ -0,0 +1,42 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + appinfo: + appns: 'default' + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: container-kill-sa + experiments: + - name: container-kill + spec: + components: + env: + # provide the total chaos duration + - name: TOTAL_CHAOS_DURATION + value: '20' + + # provide the chaos interval + - name: CHAOS_INTERVAL + value: '10' + + # provide the name of container runtime + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + - name: PODS_AFFECTED_PERC + value: '' + + - name: TARGET_CONTAINER + value: '' + \ No newline at end of file diff --git a/experiments/generic/container-kill/engine_nginx_getstarted.yaml b/experiments/generic/container-kill/engine_nginx_getstarted.yaml new file mode 100644 index 0000000..1f98146 --- /dev/null +++ b/experiments/generic/container-kill/engine_nginx_getstarted.yaml @@ -0,0 +1,46 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: nginx +spec: + # It can be active/stop + engineState: 'active' + #ex. values: ns1:name=percona,ns2:run=nginx + auxiliaryAppInfo: '' + appinfo: + appns: 'nginx' + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: container-kill-sa + # It can be delete/retain + jobCleanUpPolicy: 'delete' + experiments: + - name: container-kill + spec: + components: + env: + # provide the total chaos duration + - name: TOTAL_CHAOS_DURATION + value: '20' + + # provide the chaos interval + - name: CHAOS_INTERVAL + value: '10' + + # provide the name of container runtime + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + - name: PODS_AFFECTED_PERC + value: '' + + - name: TARGET_CONTAINER + value: '' + \ No newline at end of file diff --git a/experiments/generic/container-kill/experiment.yaml b/experiments/generic/container-kill/experiment.yaml new file mode 100644 index 0000000..826a56e --- /dev/null +++ b/experiments/generic/container-kill/experiment.yaml @@ -0,0 +1,125 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: "Kills a container belonging to an application pod \n" +kind: ChaosExperiment +metadata: + name: container-kill + labels: + name: container-kill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name container-kill + command: + - /bin/bash + env: + + - name: TARGET_CONTAINER + value: '' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # lib can be litmus or pumba + - name: LIB + value: 'litmus' + + - name: TARGET_PODS + value: '' + + # provide the chaos interval + - name: CHAOS_INTERVAL + value: '10' + + - name: SIGNAL + value: 'SIGKILL' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + # provide the name of container runtime + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the total chaos duration + - name: TOTAL_CHAOS_DURATION + value: '20' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + # To select pods on specific node(s) + - name: NODE_LABEL + value: '' + + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: container-kill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: latest diff --git a/experiments/generic/container-kill/rbac-psp.yaml b/experiments/generic/container-kill/rbac-psp.yaml new file mode 100644 index 0000000..12de772 --- /dev/null +++ b/experiments/generic/container-kill/rbac-psp.yaml @@ -0,0 +1,86 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: container-kill-sa + namespace: default + labels: + name: container-kill-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: container-kill-sa + namespace: default + labels: + name: container-kill-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: container-kill-sa + namespace: default + labels: + name: container-kill-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: container-kill-sa +subjects: +- kind: ServiceAccount + name: container-kill-sa + namespace: default + diff --git a/experiments/generic/container-kill/rbac.yaml b/experiments/generic/container-kill/rbac.yaml new file mode 100644 index 0000000..ccea310 --- /dev/null +++ b/experiments/generic/container-kill/rbac.yaml @@ -0,0 +1,81 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: container-kill-sa + namespace: default + labels: + name: container-kill-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: container-kill-sa + namespace: default + labels: + name: container-kill-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: container-kill-sa + namespace: default + labels: + name: container-kill-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: container-kill-sa +subjects: +- kind: ServiceAccount + name: container-kill-sa + namespace: default + diff --git a/experiments/generic/container-kill/rbac_nginx_getstarted.yaml b/experiments/generic/container-kill/rbac_nginx_getstarted.yaml new file mode 100644 index 0000000..461b164 --- /dev/null +++ b/experiments/generic/container-kill/rbac_nginx_getstarted.yaml @@ -0,0 +1,78 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: container-kill-sa + namespace: nginx + labels: + name: container-kill-sa +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: container-kill-sa + namespace: nginx + labels: + name: container-kill-sa +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: container-kill-sa + namespace: nginx + labels: + name: container-kill-sa +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: container-kill-sa +subjects: +- kind: ServiceAccount + name: container-kill-sa + namespace: nginx + diff --git a/experiments/generic/disk-fill/disk-fill.chartserviceversion.yaml b/experiments/generic/disk-fill/disk-fill.chartserviceversion.yaml new file mode 100644 index 0000000..e5b202c --- /dev/null +++ b/experiments/generic/disk-fill/disk-fill.chartserviceversion.yaml @@ -0,0 +1,48 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2019-11-11T10:28:08Z + name: disk-fill + version: 0.0.12 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: disk-fill + categoryDescription: | + Disk fill contains chaos to disrupt state of kubernetes resources. + - Causes (forced/graceful) Disk Stress by filling up the Ephemeral Storage of the Pod using one of it containers. + - Causes Pod to get Evicted if the Pod exceeds it Ephemeral Storage Limit. + - Tests the Ephemeral Storage Limits, to ensure those parameters are sufficient. + keywords: + - Kubernetes + - K8S + - Pod + - Disk + platforms: + - GKE + - EKS + - AKS + maturity: alpha + chaosType: infra + maintainers: + - name: ksatchit + email: karthik.s@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/disk-fill + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/pods/disk-fill/ + - name: Video + url: https://www.youtube.com/watch?v=pbok737rUPQ + icon: + - url: + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/disk-fill/experiment.yaml diff --git a/experiments/generic/disk-fill/engine.yaml b/experiments/generic/disk-fill/engine.yaml new file mode 100644 index 0000000..a7abecd --- /dev/null +++ b/experiments/generic/disk-fill/engine.yaml @@ -0,0 +1,34 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + #ex. values: ns1:name=percona,ns2:run=nginx + auxiliaryAppInfo: '' + appinfo: + appns: 'default' + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: disk-fill-sa + experiments: + - name: disk-fill + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: '60' + + # specify the fill percentage according to the disk pressure required + - name: FILL_PERCENTAGE + value: '80' + + - name: PODS_AFFECTED_PERC + value: '' + + # Provide the container runtime path + # Default set to docker container path + - name: CONTAINER_PATH + value: '/var/lib/docker/containers' diff --git a/experiments/generic/disk-fill/experiment.yaml b/experiments/generic/disk-fill/experiment.yaml new file mode 100644 index 0000000..e1364c5 --- /dev/null +++ b/experiments/generic/disk-fill/experiment.yaml @@ -0,0 +1,125 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Fillup Ephemeral Storage of a Resource +kind: ChaosExperiment +metadata: + name: disk-fill + labels: + name: disk-fill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name disk-fill + command: + - /bin/bash + env: + + - name: TARGET_CONTAINER + value: '' + + - name: FILL_PERCENTAGE + value: '80' + + - name: TOTAL_CHAOS_DURATION + value: '60' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # Provide the LIB here + # Only litmus supported + - name: LIB + value: 'litmus' + + # provide the data block size + # supported unit is KB + - name: DATA_BLOCK_SIZE + value: '256' + + - name: TARGET_PODS + value: '' + + - name: EPHEMERAL_STORAGE_MEBIBYTES + value: '' + + # To select pods on specific node(s) + - name: NODE_LABEL + value: '' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + # Provide the container runtime path + # Default set to docker container path + - name: CONTAINER_PATH + value: '/var/lib/docker/containers' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: disk-fill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/host-path-usage: "true" + app.kubernetes.io/version: latest diff --git a/experiments/generic/disk-fill/rbac-psp.yaml b/experiments/generic/disk-fill/rbac-psp.yaml new file mode 100644 index 0000000..e7aa880 --- /dev/null +++ b/experiments/generic/disk-fill/rbac-psp.yaml @@ -0,0 +1,85 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: disk-fill-sa + namespace: default + labels: + name: disk-fill-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: disk-fill-sa + namespace: default + labels: + name: disk-fill-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: disk-fill-sa + namespace: default + labels: + name: disk-fill-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: disk-fill-sa +subjects: +- kind: ServiceAccount + name: disk-fill-sa + namespace: default diff --git a/experiments/generic/disk-fill/rbac.yaml b/experiments/generic/disk-fill/rbac.yaml new file mode 100644 index 0000000..37a9d9a --- /dev/null +++ b/experiments/generic/disk-fill/rbac.yaml @@ -0,0 +1,80 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: disk-fill-sa + namespace: default + labels: + name: disk-fill-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: disk-fill-sa + namespace: default + labels: + name: disk-fill-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: disk-fill-sa + namespace: default + labels: + name: disk-fill-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: disk-fill-sa +subjects: +- kind: ServiceAccount + name: disk-fill-sa + namespace: default diff --git a/experiments/generic/docker-service-kill/docker-service-kill.chartserviceversion.yaml b/experiments/generic/docker-service-kill/docker-service-kill.chartserviceversion.yaml new file mode 100644 index 0000000..0f629dd --- /dev/null +++ b/experiments/generic/docker-service-kill/docker-service-kill.chartserviceversion.yaml @@ -0,0 +1,47 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2020-07-14T10:28:08Z + name: docker-service-kill + version: 0.1.1 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: docker-service-kill + categoryDescription: | + docker-service-kill contains killing docker service gracefully for a certain chaos duration. + - Causes replicas may be evicted or becomes unreachable on account on nodes turning unschedulable (Not Ready) due to docker service kill. + - The application node should be healthy once chaos is stopped and the services are reaccessable. + keywords: + - Kubernetes + - K8S + - Node + - Service + - Docker + platforms: + - GKE + - AKS + maturity: alpha + maintainers: + - name: Ankur Ghosh + email: ankur.ghosh3@wipro.com + minKubeVersion: 1.12.0 + provider: + name: Wipro + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/docker-service-kill + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/nodes/docker-service-kill/ + - name: Video + url: + + icon: + - base64data: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/docker-service-kill/experiment.yaml diff --git a/experiments/generic/docker-service-kill/engine.yaml b/experiments/generic/docker-service-kill/engine.yaml new file mode 100644 index 0000000..cfc1d1a --- /dev/null +++ b/experiments/generic/docker-service-kill/engine.yaml @@ -0,0 +1,23 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + auxiliaryAppInfo: '' + chaosServiceAccount: docker-service-kill-sa + experiments: + - name: docker-service-kill + spec: + components: + # nodeSelector: + # # provide the node labels + # kubernetes.io/hostname: 'node02' + env: + - name: TOTAL_CHAOS_DURATION + value: '90' # in seconds + + - name: TARGET_NODE + value: '' \ No newline at end of file diff --git a/experiments/generic/docker-service-kill/experiment.yaml b/experiments/generic/docker-service-kill/experiment.yaml new file mode 100644 index 0000000..056f9a6 --- /dev/null +++ b/experiments/generic/docker-service-kill/experiment.yaml @@ -0,0 +1,85 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Kills the docker service on the application node to check the resiliency. +kind: ChaosExperiment +metadata: + name: docker-service-kill + labels: + name: docker-service-kill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name docker-service-kill + command: + - /bin/bash + env: + + - name: TOTAL_CHAOS_DURATION + value: '90' # in seconds + + # Period to wait before injection of chaos in sec + - name: RAMP_TIME + value: '' + + - name: LIB + value: 'litmus' + + - name: NODE_LABEL + value: '' + + # provide lib image + - name: LIB_IMAGE + value: 'ubuntu:16.04' + + # provide the target node name + - name: TARGET_NODE + value: '' + + labels: + name: docker-service-kill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/service-kill: "true" + app.kubernetes.io/version: latest + diff --git a/experiments/generic/docker-service-kill/rbac-psp.yaml b/experiments/generic/docker-service-kill/rbac-psp.yaml new file mode 100644 index 0000000..cc1c8a9 --- /dev/null +++ b/experiments/generic/docker-service-kill/rbac-psp.yaml @@ -0,0 +1,71 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: docker-service-kill-sa + namespace: default + labels: + name: docker-service-kill-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: docker-service-kill-sa + labels: + name: docker-service-kill-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: docker-service-kill-sa + labels: + name: docker-service-kill-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: docker-service-kill-sa +subjects: +- kind: ServiceAccount + name: docker-service-kill-sa + namespace: default diff --git a/experiments/generic/docker-service-kill/rbac.yaml b/experiments/generic/docker-service-kill/rbac.yaml new file mode 100644 index 0000000..1972a97 --- /dev/null +++ b/experiments/generic/docker-service-kill/rbac.yaml @@ -0,0 +1,66 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: docker-service-kill-sa + namespace: default + labels: + name: docker-service-kill-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: docker-service-kill-sa + labels: + name: docker-service-kill-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: docker-service-kill-sa + labels: + name: docker-service-kill-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: docker-service-kill-sa +subjects: +- kind: ServiceAccount + name: docker-service-kill-sa + namespace: default diff --git a/experiments/generic/experiments.yaml b/experiments/generic/experiments.yaml new file mode 100644 index 0000000..1023276 --- /dev/null +++ b/experiments/generic/experiments.yaml @@ -0,0 +1,2959 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects network packet loss on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-network-loss + labels: + name: pod-network-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-network-loss + command: + - /bin/bash + env: + + - name: TARGET_CONTAINER + value: '' + + # provide lib image + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + - name: NETWORK_INTERFACE + value: 'eth0' + + - name: TC_IMAGE + value: 'gaiadocker/iproute2' + + - name: NETWORK_PACKET_LOSS_PERCENTAGE + value: '100' #in PERCENTAGE + + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + # ime period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # it can be litmus or pumba + - name: LIB + value: 'litmus' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + - name: TARGET_PODS + value: '' + + # To select pods on specific node(s) + - name: NODE_LABEL + value: '' + + # provide the name of container runtime + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the destination ips + # chaos injection will be triggered for these destination ips + - name: DESTINATION_IPS + value: '' + + # provide the destination hosts + # chaos injection will be triggered for these destination hosts + - name: DESTINATION_HOSTS + value: '' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: pod-network-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: latest + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + IO stress on a app pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-io-stress + labels: + name: pod-io-stress + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-io-stress + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '120' + + ## specify the size as percentage of free space on the file system + ## default value 90 (in percentage) + - name: FILESYSTEM_UTILIZATION_PERCENTAGE + value: '10' + + ## we can specify the size in Gigabyte (Gb) also in place of percentage of free space + ## NOTE: for selecting this option FILESYSTEM_UTILIZATION_PERCENTAGE should be empty + - name: FILESYSTEM_UTILIZATION_BYTES + value: '' + + ## Total number of workers default value is 4 + - name: NUMBER_OF_WORKERS + value: '4' + + ## Percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + # provide volume mount path + - name: VOLUME_MOUNT_PATH + value: '' + + ## specify the comma separated target pods + - name: TARGET_PODS + value: '' + + # To select pods on specific node(s) + - name: NODE_LABEL + value: '' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # Provide the LIB here + # support litmus and pumba + - name: LIB + value: 'litmus' + + # provide lib image + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + ## provide the cluster runtime + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: pod-io-stress + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: latest + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Pod DNS Error injects dns failure/error in target pod containers +kind: ChaosExperiment +metadata: + name: pod-dns-error + labels: + name: pod-dns-error + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + args: + - -c + - ./experiments -name pod-dns-error + command: + - /bin/bash + env: + - name: TARGET_CONTAINER + value: "" + + # provide lib image + - name: LIB_IMAGE + value: "litmuschaos/go-runner:latest" + + - name: TOTAL_CHAOS_DURATION + value: "60" # in seconds + + # Time period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: "" + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: "" + + - name: TARGET_PODS + value: "" + + # provide the name of container runtime, it supports docker, containerd, crio + - name: CONTAINER_RUNTIME + value: "docker" + + # provide the socket file path + - name: SOCKET_PATH + value: "/var/run/docker.sock" + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: "parallel" + + # list of the target hostnames or kewywords eg. '["litmuschaos","chaosnative.io"]' . If empty all hostnames are targets + - name: TARGET_HOSTNAMES + value: "" + + # can be either exact or substring, determines whether the dns query has to match exactly with one of the targets or can have any of the targets as substring + - name: MATCH_SCHEME + value: "exact" + + labels: + experiment: pod-dns-error + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: latest + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Give a memory hog on a node belonging to a deployment +kind: ChaosExperiment +metadata: + name: node-memory-hog + labels: + name: node-memory-hog + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name node-memory-hog + command: + - /bin/bash + env: + + - name: TOTAL_CHAOS_DURATION + value: '120' + + ## Specify the size as percent of total node capacity Ex: '30' + ## NOTE: for selecting this option keep MEMORY_CONSUMPTION_MEBIBYTES empty + - name: MEMORY_CONSUMPTION_PERCENTAGE + value: '' + + ## Specify the amount of memory to be consumed in mebibytes + ## NOTE: for selecting this option keep MEMORY_CONSUMPTION_PERCENTAGE empty + - name: MEMORY_CONSUMPTION_MEBIBYTES + value: '' + + - name: NUMBER_OF_WORKERS + value: '1' + + # ENTER THE COMMA SEPARATED TARGET NODES NAME + - name: TARGET_NODES + value: '' + + - name: NODE_LABEL + value: '' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # Provide the LIB here + # Only litmus supported + - name: LIB + value: 'litmus' + + # provide lib image + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + ## percentage of total nodes to target + - name: NODES_AFFECTED_PERC + value: '' + + ## it defines the sequence of chaos execution for multiple target nodes + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: node-memory-hog + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: "Kills a container belonging to an application pod \n" +kind: ChaosExperiment +metadata: + name: container-kill + labels: + name: container-kill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name container-kill + command: + - /bin/bash + env: + + - name: TARGET_CONTAINER + value: '' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # lib can be litmus or pumba + - name: LIB + value: 'litmus' + + - name: TARGET_PODS + value: '' + + # provide the chaos interval + - name: CHAOS_INTERVAL + value: '10' + + - name: SIGNAL + value: 'SIGKILL' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + # provide the name of container runtime + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the total chaos duration + - name: TOTAL_CHAOS_DURATION + value: '20' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + # To select pods on specific node(s) + - name: NODE_LABEL + value: '' + + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: container-kill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: latest + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Inject network packet corruption into application pod +kind: ChaosExperiment +metadata: + name: pod-network-corruption + labels: + name: pod-network-corruption + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-network-corruption + command: + - /bin/bash + env: + + - name: TARGET_CONTAINER + value: '' + + # provide lib image + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + - name: NETWORK_INTERFACE + value: 'eth0' + + - name: TC_IMAGE + value: 'gaiadocker/iproute2' + + - name: NETWORK_PACKET_CORRUPTION_PERCENTAGE + value: '100' #in PERCENTAGE + + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + # Time period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # lib can be litmus or pumba + - name: LIB + value: 'litmus' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + - name: TARGET_PODS + value: '' + + # To select pods on specific node(s) + - name: NODE_LABEL + value: '' + + # provide the name of container runtime + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the destination ips + # chaos injection will be triggered for these destination ips + - name: DESTINATION_IPS + value: '' + + # provide the destination hosts + # chaos injection will be triggered for these destination hosts + - name: DESTINATION_HOSTS + value: '' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: pod-network-corruption + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: latest + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects cpu consumption on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-cpu-hog-exec + labels: + name: pod-cpu-hog-exec + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-cpu-hog-exec + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '60' + + ## Number of CPU cores to stress + - name: CPU_CORES + value: '1' + + ## Percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + ## Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + ## env var that describes the library used to execute the chaos + ## default: litmus. Supported values: litmus + - name: LIB + value: 'litmus' + + # The command to kill the chaos process + - name: CHAOS_KILL_COMMAND + value: "kill $(find /proc -name exe -lname '*/md5sum' 2>&1 | grep -v 'Permission denied' | awk -F/ '{print $(NF-1)}')" + + - name: TARGET_PODS + value: '' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: pod-cpu-hog-exec + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Fillup Ephemeral Storage of a Resource +kind: ChaosExperiment +metadata: + name: disk-fill + labels: + name: disk-fill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name disk-fill + command: + - /bin/bash + env: + + - name: TARGET_CONTAINER + value: '' + + - name: FILL_PERCENTAGE + value: '80' + + - name: TOTAL_CHAOS_DURATION + value: '60' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # Provide the LIB here + # Only litmus supported + - name: LIB + value: 'litmus' + + # provide the data block size + # supported unit is KB + - name: DATA_BLOCK_SIZE + value: '256' + + - name: TARGET_PODS + value: '' + + - name: EPHEMERAL_STORAGE_MEBIBYTES + value: '' + + # To select pods on specific node(s) + - name: NODE_LABEL + value: '' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + # Provide the container runtime path + # Default set to docker container path + - name: CONTAINER_PATH + value: '/var/lib/docker/containers' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: disk-fill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/host-path-usage: "true" + app.kubernetes.io/version: latest + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Kills the docker service on the application node to check the resiliency. +kind: ChaosExperiment +metadata: + name: docker-service-kill + labels: + name: docker-service-kill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name docker-service-kill + command: + - /bin/bash + env: + + - name: TOTAL_CHAOS_DURATION + value: '90' # in seconds + + # Period to wait before injection of chaos in sec + - name: RAMP_TIME + value: '' + + - name: LIB + value: 'litmus' + + - name: NODE_LABEL + value: '' + + # provide lib image + - name: LIB_IMAGE + value: 'ubuntu:16.04' + + # provide the target node name + - name: TARGET_NODE + value: '' + + labels: + name: docker-service-kill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/service-kill: "true" + app.kubernetes.io/version: latest + + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects http request latency on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-http-latency + labels: + name: pod-http-latency + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-http-latency + command: + - /bin/bash + env: + + - name: TARGET_CONTAINER + value: '' + + # provide lib image + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + - name: LATENCY + value: '2000' #in ms + + # port of the target service + - name: TARGET_SERVICE_PORT + value: "80" + + # port on which the proxy will listen + - name: PROXY_PORT + value: "20000" + + # network interface on which the proxy will listen + - name: NETWORK_INTERFACE + value: "eth0" + + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + # Time period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # lib can be litmus or pumba + - name: LIB + value: 'litmus' + + # percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + - name: TARGET_PODS + value: '' + + # provide the name of container runtime + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + # To select pods on specific node(s) + - name: NODE_LABEL + value: '' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: pod-http-latency + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: latest + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Kills the kubelet service on the application node to check the resiliency. +kind: ChaosExperiment +metadata: + name: kubelet-service-kill + labels: + name: kubelet-service-kill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name kubelet-service-kill + command: + - /bin/bash + env: + + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + - name: LIB + value: 'litmus' + + - name: NODE_LABEL + value: '' + + # provide lib image + - name: LIB_IMAGE + value: 'ubuntu:16.04' + + # provide the target node name + - name: TARGET_NODE + value: '' + + labels: + name: kubelet-service-kill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/service-kill: "true" + app.kubernetes.io/version: latest + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects memory consumption on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-memory-hog-exec + labels: + name: pod-memory-hog-exec + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-memory-hog-exec + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '60' + + ## enter the amount of memory in megabytes to be consumed by the application pod + - name: MEMORY_CONSUMPTION + value: '500' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + ## Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + ## env var that describes the library used to execute the chaos + ## default: litmus. Supported values: litmus + - name: LIB + value: 'litmus' + + # The command to kill the chaos process + - name: CHAOS_KILL_COMMAND + value: "kill $(find /proc -name exe -lname '*/dd' 2>&1 | grep -v 'Permission denied' | awk -F/ '{print $(NF-1)}' | head -n 1)" + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + - name: TARGET_PODS + value: '' + + labels: + name: pod-memory-hog-exec + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects 100% network packet loss on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-network-partition + labels: + name: pod-network-partition + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # performs CRUD operations on the network policies + - apiGroups: ["networking.k8s.io"] + resources: ["networkpolicies"] + verbs: ["create","delete","list","get"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-network-partition + command: + - /bin/bash + env: + + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + # ime period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # it should be litmus + - name: LIB + value: 'litmus' + + # provide the destination ips + # chaos injection will be triggered for these destination ips + - name: DESTINATION_IPS + value: '' + + # provide the destination hosts + # chaos injection will be triggered for these destination hosts + - name: DESTINATION_HOSTS + value: '' + + # provide network policy type + # support ingress, egress, all values + - name: POLICY_TYPES + value: 'all' + + # provide labels of the destination pods + - name: POD_SELECTOR + value: '' + + # provide labels the destination namespaces + - name: NAMESPACE_SELECTOR + value: '' + + # provide comma separated ports + - name: PORTS + value: '' + + labels: + name: pod-network-partition + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Scale the application replicas and test the node autoscaling on cluster +kind: ChaosExperiment +metadata: + name: pod-autoscaler + labels: + name: pod-autoscaler + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # performs CRUD operations on the deployments and statefulsets + - apiGroups: ["apps"] + resources: ["deployments","statefulsets"] + verbs: ["list","get","patch","update"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-autoscaler + command: + - /bin/bash + env: + + - name: TOTAL_CHAOS_DURATION + value: '60' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # Number of replicas to scale + - name: REPLICA_COUNT + value: '5' + + # PROVIDE THE LIB HERE + # ONLY LITMUS SUPPORTED + - name: LIB + value: 'litmus' + + labels: + name: pod-autoscaler + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + poweroff node +kind: ChaosExperiment +metadata: + name: node-poweroff + labels: + name: node-poweroff + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps","secrets"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name node-restart + command: + - /bin/bash + env: + - name: SSH_USER + value: 'root' + + - name: TOTAL_CHAOS_DURATION + value: '60' + + - name: REBOOT_COMMAND + value: '-o ServerAliveInterval=1 -o ServerAliveCountMax=1 "sudo systemctl poweroff --force --force" ; true' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # PROVIDE THE LIB HERE + # ONLY LITMUS SUPPORTED + - name: LIB + value: 'litmus' + + # provide lib image + - name: LIB_IMAGE + value: "litmuschaos/go-runner:latest" + + # ENTER THE TARGET NODE NAME + - name: TARGET_NODE + value: '' + + - name: NODE_LABEL + value: '' + + # ENTER THE TARGET NODE IP + - name: TARGET_NODE_IP + value: '' + + labels: + name: node-poweroff + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: id-rsa + mountPath: /mnt/ + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Taint the node where application pod is scheduled +kind: ChaosExperiment +metadata: + name: node-taint + labels: + name: node-taint + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec","pods/eviction"] + verbs: ["get","list","create"] + # ignore daemonsets while draining the node + - apiGroups: ["apps"] + resources: ["daemonsets"] + verbs: ["list","get","delete"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list","patch","update"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name node-taint + command: + - /bin/bash + env: + + - name: TARGET_NODE + value: '' + + - name: NODE_LABEL + value: '' + + - name: TOTAL_CHAOS_DURATION + value: '60' + + # Provide the LIB here + # Only litmus supported + - name: LIB + value: 'litmus' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # set taint label & effect + # key=value:effect or key:effect + - name: TAINTS + value: '' + + labels: + name: node-taint + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects cpu consumption on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-cpu-hog + labels: + name: pod-cpu-hog + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-cpu-hog + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '60' + + ## Number of CPU cores to stress + - name: CPU_CORES + value: '1' + + ## LOAD CPU WITH GIVEN PERCENT LOADING FOR THE CPU STRESS WORKERS. + ## 0 IS EFFECTIVELY A SLEEP (NO LOAD) AND 100 IS FULL LOADING + - name: CPU_LOAD + value: '100' + + ## Percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + ## Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + ## env var that describes the library used to execute the chaos + ## default: litmus. Supported values: litmus, pumba + - name: LIB + value: 'litmus' + + ## It is used in pumba lib only + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + ## It is used in pumba lib only + - name: STRESS_IMAGE + value: 'alexeiled/stress-ng:latest-ubuntu' + + ## provide the cluster runtime + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + - name: TARGET_PODS + value: '' + + # To select pods on specific node(s) + - name: NODE_LABEL + value: '' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: pod-cpu-hog + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: latest + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects network packet duplication on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-network-duplication + labels: + name: pod-network-duplication + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-network-duplication + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '60' + + - name: RAMP_TIME + value: '' + + - name: TARGET_CONTAINER + value: '' + + - name: TC_IMAGE + value: 'gaiadocker/iproute2' + + - name: NETWORK_INTERFACE + value: 'eth0' + + - name: NETWORK_PACKET_DUPLICATION_PERCENTAGE + value: '100' # in percentage + + # lib can be litmus or pumba + - name: LIB + value: 'litmus' + + - name: TARGET_PODS + value: '' + + # To select pods on specific node(s) + - name: NODE_LABEL + value: '' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + # provide the name of container runtime + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the destination ips + # chaos injection will be triggered for these destination ips + - name: DESTINATION_IPS + value: '' + + # provide the destination hosts + # chaos injection will be triggered for these destination hosts + - name: DESTINATION_HOSTS + value: '' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: pod-network-duplication + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: latest + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Give a cpu spike on a node belonging to a deployment +kind: ChaosExperiment +metadata: + name: node-cpu-hog + labels: + name: node-cpu-hog + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name node-cpu-hog + command: + - /bin/bash + env: + + - name: TOTAL_CHAOS_DURATION + value: '60' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + ## ENTER THE NUMBER OF CORES OF CPU FOR CPU HOGGING + ## OPTIONAL VALUE IN CASE OF EMPTY VALUE IT WILL TAKE NODE CPU CAPACITY + - name: NODE_CPU_CORE + value: '' + + ## LOAD CPU WITH GIVEN PERCENT LOADING FOR THE CPU STRESS WORKERS. + ## 0 IS EFFECTIVELY A SLEEP (NO LOAD) AND 100 IS FULL LOADING + - name: CPU_LOAD + value: '100' + + # ENTER THE COMMA SEPARATED TARGET NODES NAME + - name: TARGET_NODES + value: '' + + - name: NODE_LABEL + value: '' + + # PROVIDE THE LIB HERE + # ONLY LITMUS SUPPORTED + - name: LIB + value: 'litmus' + + # provide lib image + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + ## percentage of total nodes to target + - name: NODES_AFFECTED_PERC + value: '' + + ## it defines the sequence of chaos execution for multiple target nodes + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: node-cpu-hog + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects network latency on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-network-latency + labels: + name: pod-network-latency + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-network-latency + command: + - /bin/bash + env: + + - name: TARGET_CONTAINER + value: '' + + - name: NETWORK_INTERFACE + value: 'eth0' + + # provide lib image + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + - name: TC_IMAGE + value: 'gaiadocker/iproute2' + + - name: NETWORK_LATENCY + value: '2000' #in ms + + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + # Time period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + - name: JITTER + value: '0' + + # lib can be litmus or pumba + - name: LIB + value: 'litmus' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + - name: TARGET_PODS + value: '' + + # provide the name of container runtime + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the destination ips + # chaos injection will be triggered for these destination ips + - name: DESTINATION_IPS + value: '' + + # provide the destination hosts + # chaos injection will be triggered for these destination hosts + - name: DESTINATION_HOSTS + value: '' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + # To select pods on specific node(s) + - name: NODE_LABEL + value: '' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: pod-network-latency + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: latest + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Give IO disk stress on a node belonging to a deployment +kind: ChaosExperiment +metadata: + name: node-io-stress + labels: + name: node-io-stress + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name node-io-stress + command: + - /bin/bash + env: + + - name: TOTAL_CHAOS_DURATION + value: '120' + + ## specify the size as percentage of free space on the file system + ## default value 90 (in percentage) + - name: FILESYSTEM_UTILIZATION_PERCENTAGE + value: '10' + + ## we can specify the size in Gigabyte (Gb) also in place of percentage of free space + ## NOTE: for selecting this option FILESYSTEM_UTILIZATION_PERCENTAGE should be empty + - name: FILESYSTEM_UTILIZATION_BYTES + value: '' + + ## Number of core of CPU + - name: CPU + value: '1' + + ## Total number of workers default value is 4 + - name: NUMBER_OF_WORKERS + value: '4' + + ## Total number of vm workers + - name: VM_WORKERS + value: '1' + + ## enter the comma separated target nodes name + - name: TARGET_NODES + value: '' + + - name: NODE_LABEL + value: '' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # Provide the LIB here + # Only litmus supported + - name: LIB + value: 'litmus' + + # provide lib image + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + ## percentage of total nodes to target + - name: NODES_AFFECTED_PERC + value: '' + + ## it defines the sequence of chaos execution for multiple target nodes + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: node-io-stress + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Pod DNS Spoof can spoof particular dns requests in target pod container to desired target hostnames +kind: ChaosExperiment +metadata: + name: pod-dns-spoof + labels: + name: pod-dns-spoof + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + args: + - -c + - ./experiments -name pod-dns-spoof + command: + - /bin/bash + env: + - name: TARGET_CONTAINER + value: "" + + # provide lib image + - name: LIB_IMAGE + value: "litmuschaos/go-runner:latest" + + - name: TOTAL_CHAOS_DURATION + value: "60" # in seconds + + # Time period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: "" + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: "" + + - name: TARGET_PODS + value: "" + + # provide the name of container runtime, it supports docker, containerd, crio + - name: CONTAINER_RUNTIME + value: "docker" + + # provide the socket file path + - name: SOCKET_PATH + value: "/var/run/docker.sock" + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: "parallel" + + # map of the target hostnames eg. '{"abc.com":"spoofabc.com"}' . If empty no queries will be spoofed + - name: SPOOF_MAP + value: "" + + labels: + experiment: pod-dns-spoof + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: latest + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Deletes a pod belonging to a deployment/statefulset/daemonset +kind: ChaosExperiment +metadata: + name: pod-delete + labels: + name: pod-delete + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-delete + command: + - /bin/bash + env: + + - name: TOTAL_CHAOS_DURATION + value: '15' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + - name: FORCE + value: 'true' + + - name: CHAOS_INTERVAL + value: '5' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + - name: LIB + value: 'litmus' + + - name: TARGET_PODS + value: '' + + # To select pods on specific node(s) + - name: NODE_LABEL + value: '' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: pod-delete + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects memory consumption on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-memory-hog + labels: + name: pod-memory-hog + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-memory-hog + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '60' + + ## enter the amount of memory in megabytes to be consumed by the application pod + - name: MEMORY_CONSUMPTION + value: '500' + + ## Number of workers to perform stress + - name: NUMBER_OF_WORKERS + value: '1' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + ## Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + ## env var that describes the library used to execute the chaos + ## default: litmus. Supported values: litmus, pumba + - name: LIB + value: 'litmus' + + ## It is used in pumba lib only + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + ## It is used in pumba lib only + - name: STRESS_IMAGE + value: 'alexeiled/stress-ng:latest-ubuntu' + + ## provide the cluster runtime + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + - name: TARGET_PODS + value: '' + + # To select pods on specific node(s) + - name: NODE_LABEL + value: '' + + labels: + name: pod-memory-hog + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: latest + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Restart node +kind: ChaosExperiment +metadata: + name: node-restart + labels: + name: node-restart + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps","secrets"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name node-restart + command: + - /bin/bash + env: + - name: SSH_USER + value: 'root' + + - name: TOTAL_CHAOS_DURATION + value: '60' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # PROVIDE THE LIB HERE + # ONLY LITMUS SUPPORTED + - name: LIB + value: 'litmus' + + # provide lib image + - name: LIB_IMAGE + value: "litmuschaos/go-runner:latest" + + # ENTER THE TARGET NODE NAME + - name: TARGET_NODE + value: '' + + - name: NODE_LABEL + value: '' + + # ENTER THE TARGET NODE IP + - name: TARGET_NODE_IP + value: '' + + labels: + name: node-restart + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: id-rsa + mountPath: /mnt/ + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Drain the node where application pod is scheduled +kind: ChaosExperiment +metadata: + name: node-drain + labels: + name: node-drain + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec","pods/eviction"] + verbs: ["get","list","create"] + # ignore daemonsets while draining the node + - apiGroups: ["apps"] + resources: ["daemonsets"] + verbs: ["list","get","delete"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list","patch"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name node-drain + command: + - /bin/bash + env: + + - name: TARGET_NODE + value: '' + + - name: NODE_LABEL + value: '' + + - name: TOTAL_CHAOS_DURATION + value: '60' + + # Provide the LIB here + # Only litmus supported + - name: LIB + value: 'litmus' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + labels: + name: node-drain + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + +--- diff --git a/experiments/generic/generic.chartserviceversion.yaml b/experiments/generic/generic.chartserviceversion.yaml new file mode 100644 index 0000000..fdb2047 --- /dev/null +++ b/experiments/generic/generic.chartserviceversion.yaml @@ -0,0 +1,101 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2019-09-26T10:28:08Z + name: generic + version: 0.1.16 + annotations: + categories: Kubernetes + chartDescription: Injects generic kubernetes chaos +spec: + displayName: Generic Chaos + categoryDescription: > + Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications. It groups containers that make up an application into logical units for easier management and discovery. It will install all the experiments which can be used to inject chaos into containerized applications. + + experiments: + - name: pod-delete + description: "deletes a k8s pod" + - name: container-kill + description: "deletes a container in a k8s pod" + - name: pod-cpu-hog + description: "" + - name: pod-network-loss + description: "" + - name: pod-network-latency + description: "" + - name: pod-network-corruption + description: "" + - name: node-drain + description: "" + - name: node-cpu-hog + description: "" + - name: disk-fill + description: "" + - name: node-memory-hog + description: "" + - name: pod-memory-hog + description: "" + - name: kubelet-service-kill + description: "" + - name: pod-network-duplication + description: "" + - name: node-taint + description: "" + - name: docker-service-kill + description: "" + - name: pod-autoscaler + description: "" + - name: node-io-stress + description: "" + - name: pod-io-stress + description: "" + - name: node-restart + description: "" + - name: pod-dns-error + description: "" + - name: pod-dns-spoof + description: "" + - name: pod-cpu-hog-exec + description: "" + - name: pod-memory-hog-exec + description: "" + - name: pod-network-partition + description: "" + - name: pod-http-latency + description: "" + keywords: + - Kubernetes + - K8S + - Container + - Node + - Pod + - Disk + - IO + - Filesystem + - Network + - CPU + - Memory + - Stress + - Service + - DNS + - Scale + - Http + maintainers: + - name: ksatchit + email: karthik.s@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + links: + - name: Kubernetes Website + url: https://kubernetes.io + - name: Source Code + url: https://github.com/kubernetes/kubernetes + - name: Kubernetes Slack + url: https://slack.kubernetes.io/ + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/contents/#generic + icon: + - url: https://raw.githubusercontent.com/litmuschaos/charthub.litmuschaos.io/master/public/litmus.ico + mediatype: image/png + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/experiments.yaml diff --git a/experiments/generic/generic.package.yaml b/experiments/generic/generic.package.yaml new file mode 100644 index 0000000..a26f3d2 --- /dev/null +++ b/experiments/generic/generic.package.yaml @@ -0,0 +1,77 @@ +packageName: generic +experiments: + - name: pod-delete + CSV: pod-delete.chartserviceversion.yaml + desc: "pod-delete" + - name: container-kill + CSV: container-kill.chartserviceversion.yaml + desc: "container-kill" + - name: pod-network-loss + CSV: pod-network-loss.chartserviceversion.yaml + desc: "Pod-network-loss" + - name: pod-network-latency + CSV: pod-network-latency.chartserviceversion.yaml + desc: "pod-network-latency" + - name: pod-cpu-hog + CSV: pod-cpu-hog.chartserviceversion.yaml + desc: "pod-cpu-hog" + - name: node-cpu-hog + CSV: node-cpu-hog.chartserviceversion.yaml + desc: "node-cpu-hog" + - name: disk-fill + CSV: disk-fill.chartserviceversion.yaml + desc: "disk-fill" + - name: node-drain + CSV: node-drain.chartserviceversion.yaml + desc: "node-drain" + - name: pod-network-corruption + CSV: pod-network-corruption.chartserviceversion.yaml + desc: "pod-network-corruption" + - name: node-memory-hog + CSV: node-memory-hog.chartserviceversion.yaml + desc: "node-memory-hog" + - name: pod-memory-hog + CSV: pod-memory-hog.chartserviceversion.yaml + desc: "pod-memory-hog" + - name: kubelet-service-kill + CSV: kubelet-service-kill.chartserviceversion.yaml + desc: "kubelet-service-kill" + - name: pod-network-duplication + CSV: pod-network-duplication.chartserviceversion.yaml + desc: "pod-network-duplication" + - name: node-taint + CSV: node-taint.chartserviceversion.yaml + desc: "node-taint" + - name: docker-service-kill + CSV: docker-service-kill.chartserviceversion.yaml + desc: "docker-service-kill" + - name: pod-autoscaler + CSV: pod-autoscaler.chartserviceversion.yaml + desc: "pod-autoscaler" + - name: node-io-stress + CSV: node-io-stress.chartserviceversion.yaml + desc: "node-io-stress" + - name: pod-io-stress + CSV: pod-io-stress.chartserviceversion.yaml + desc: "pod-io-stress" + - name: node-restart + CSV: node-restart.chartserviceversion.yaml + desc: "node-restart" + - name: pod-dns-error + CSV: pod-dns-error.chartserviceversion.yaml + desc: "pod-dns-error" + - name: pod-dns-spoof + CSV: pod-dns-spoof.chartserviceversion.yaml + desc: "pod-dns-spoof" + - name: pod-cpu-hog-exec + CSV: pod-cpu-hog-exec.chartserviceversion.yaml + desc: "pod-cpu-hog-exec" + - name: pod-memory-hog-exec + CSV: pod-memory-hog-exec.chartserviceversion.yaml + desc: "pod-memory-hog-exec" + - name: pod-network-partition + CSV: pod-network-partition.chartserviceversion.yaml + desc: "pod-network-partition" + - name: pod-http-latency + CSV: pod-http-latency.chartserviceversion.yaml + desc: "pod-http-latency" diff --git a/experiments/generic/icons/byoc-pod-delete.png b/experiments/generic/icons/byoc-pod-delete.png new file mode 100644 index 0000000000000000000000000000000000000000..16aa7b417698ef0d66f130fe9b3218f25fa6f356 GIT binary patch literal 959 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r51|<6gKdl8)oCO|{#S9GG!XV7ZFl&wkP>``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&di49p>(E{-7;jBn@e_YV#fIeuQ7g^T4ylTJ`q zg1CrpkM->C&R^mk&6B&2oo)RkuFzBEkb1r1%RWh_y3XRYCsm3X9RilQCUiLj z_*vStc(X7GDZIzMgm4+nQtI%y}<9r|`+Y zT%_}SrPbzor*AKk;m%QSYu}ae%Eew*{{7-33+fV9vF>`;r>@7Uq4P-xpGRLliI)saTo`SRHK8kKn4p_?~3b<&(HG;{*eC@e$L}X zE*Q3sZDq9 zZk*-ez2Q}Kg7(t$Q97DiqaGYvFB?@i{rjylw?kLHROqW;xx4ChEoYAqXX=7g^IYE9 zp9q|?qxAEPS5`Ki5->-=g6zuc1CtePYqm?DVD3%ekml44nCeq7bMe~#Iaf}&ElE>3 zCwT3qaq|?LTaUBZuO-fCE7-dw?Do59Pi}ZUTK%PBzUIv~EB^9l_xvs27T*w? zxnRka;K|I5+y4K$CBNg7YtxncIv@47Dqpp|a>;n>Z)QVo>A?G*?_G8H_mr8g+~ucx zp*KQlE$eG&;K1E=TH@^~o2&<(M>yIxz+x8`h%PK?oGhuHEP8?*r&e*)xG89G`#rr< zWZ5E??*3c(wZ*xJp7hZ%i{pII^a|OoU4-B3~ z-23`!wp+ZLfpco7Cezo7?YmB8tbHg`QtG;7j^W%zpTd(|ChAO`Ug^K{nfB+Sa{n01 X?;ErEthk>7%x?^yu6{1-oD!M z+;i_a_k$90VRCY^hIeoAwu-luaJSx}cKX1Pfe8MNC-*0h_3ZDUU(Gr4$mz z#{Q#t-yOPf^KRN_IM#i6OnfIqG?lOqoTNMfLHhc~c|R&%kB_T~Q&u*EqV@OF!UdHS zn^!Jg=Zl;R81KJBofn4bkCQ{nf@Pz6_DqV+FBgsNn(CR9OL8V4EUf+5b?V`Lki_Ok zSjY#ck@vYEZ~^0e<8=7wwXDLSSi+K`^<^}4b0Y2g5GKOk5q^@bIGgphEU2L8SJeh? zk%0+_8*Tr6kdAXvosQVN2wO@ywLDZo(YmtKag|s&&b|{Ocbp%lp5Eyn4*mvz8x(;& zo*P4V>FaN=uqCC}rm(apAFmb`0&6n`f@53GzlHNabW}#pbK>}!zi-hSugwj_8h!u8 zGymM8!$+>A6)`E?@+YcAQS=iO{g+zngm@6kX}vi9<(^*goffXS{lr%R-HIMSQC<6D zy|~dJ!SAEUE_t*nVR`&8C1dQ?f_!s>E~w8(mHAL6>Kr2+4O zUn2Sbio+;gwrg<~aZ@}sV^G_E!Oq!Q zM8YJV6c7G^X5EHwX-J+L{p^@!~<^EhKdFE;3Yv}EFg-2^=YEQ2&;G!DPozW z8710~E-eRDj08l{b)FQpZJ5QA$fk~!<9`l`kkbSs0e?C=V0*u0QB}^HDqcYC9CIWa z5U-n{Eg-Tgofk%I$3oIytHs*ZdRtLOT#Zmr7i|HNlClEv3Zdva!8OAYt(f>iEdk;C ztZ61(1d4B=0=MI|LS0{|C7|;OAr)1K)+dQ16C74LFOHB7S_1Ysd_*DoJ}1aUTFI2Z zbVFIdt8CiVb{}dnQ|s%$Iz|KWF&e&om+}pAiq;w#jcc9CL|K8$j;!y(X8pX{p?y8n z*jz>DPG6^edoHDpKfGj)7$;USYbI4zmQrmr!mktiO5WEslv8;ne>N)^chSf_dsg4x z$6c#%Pbw&1Q3odtti%*gAZh>c3hn)@gSLLOEbX(cA1|ZL8`_0cN+4$ID>0kU0HQ)r zKgAXncx>u@Hyev;yH@!u=^@RuAU^7wctO%oXYb&0>kxAzCA-Yh zy5StFGB*Bi#_xx&P;xgsM{lW^nw7gRKJA%q~@~ zDA15aBi9;bzUq8sN<52iJ?M}{Xv1XICr zZ7S|%Q4r&f+@7HKwk%5gHXjr5ulSC6vcVauMj~p}gYp^S_s%E#LJ->FggWuC6cOQ7 zD)>)|fbHu8&bz@RF)i zZpPHt*~K#H!3ry0QgzA#%9M}9qyr|5xOJ52lq{`=wAT)pFyhuxrh}G%ZXGZon>nOK z!uq^*lxYd*)&X<;FTGx@FoEE}Ye$)OEbI)2V1;;+g@)SzDU%Va+5*ByIIZyD4}DZ< zIK^veuF&>>z$hED=D7!L?@@~(gIg%zTF*KXrfXK$k_kov$_Xx3kS;HTqKs?&#gW?g zGC;~WALu-(94;GX5#7PyOpliPMRPhvCP(IbZrj+~%Lj34ZykopEl= zV{sENR8zfxEMC^4hl&L=H?MN;FqhNuVRdMmy7gU$cCsPB#UU99pJ=V=(B{I1&lf*Z z6_}8S%Mn_-t;c{01MOG8ha~%cCz#yVu(2#{S{0C!pZ#7SBHKb1LC&BG#1wF$AG{lL ztxboLU8L9$5}Gbug6S4Ly`v(rn`xK{QgF|*<@-I!TN3!96AvYgRv~+`DE<4wpR{6&9Ikfe1f7tMTVWyk?B&?1rgfNN6oWj+dq9UerL%^S@h$-Jgz^{0_K}B@w!lK+W_#cS( zHWksO4gUy_%p&gR-A*c^%67RVe5y+016aj;I~B>sPS&bTzH$4{2sTk-VeTd>Vnw*R zWNA%NGTpb6LSl{SCJNC?zd5Fh63x7$yzNfb7dHL}_aG^`%H!(O00000NkvXXu0mjf DVw6lF literal 0 HcmV?d00001 diff --git a/experiments/generic/icons/disk-fill.png b/experiments/generic/icons/disk-fill.png new file mode 100644 index 0000000000000000000000000000000000000000..a0418eec072fc17f943c62567308c62aa53b20ef GIT binary patch literal 1703 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 FV1j;V=*s{A literal 0 HcmV?d00001 diff --git a/experiments/generic/icons/node-cpu-hog.png b/experiments/generic/icons/node-cpu-hog.png new file mode 100644 index 0000000000000000000000000000000000000000..aa91993bd725ca14b0b7932cea0aba3338d708c0 GIT binary patch literal 2453 zcmV;G32OFuz|EUCYsKzOu{|fY$HZ1owFVa0i-~Z4BS0sX!U7kOhT!o}BA&QPn&CMR zSWg-v@=vC<^{|+z2^vA*W26}n@8T9NY;~^4s4r?}nhlZeaqA1+S3!ZA$;N99g@m*u z@U*BtBxVN7X~v8@%wx@jL{9>F{`bJ_DyqM)(md8pNG6kJxYR$E7VE--Jh-leZbG7+ z1#;^{`~$+=0yPs7?Fi)YFMMy3xQg;g+6u`nVS#|ILZTIcJpRGzxa&fVC3F%Jtq6>= z>VsRHdaRR>XhmRzbzkO)4m8Ki8O#DT5)!>Eusgd2LPW~TlOI3F#6L-j8vi7? zsOTaj+7M_L|0HT_rkJmF5fW_(JjMEdYW$Pn7O0Dml!=b?P5K{>p=C4SRzlGT+|w4N zV~69k?WEj?5YX%3d(Xk_ObL@~H&m4QA&#+2ZbMw

HB7ZQq_VECp5r@><_$Ah)r1XEz-eM1~rs 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 literal 0 HcmV?d00001 diff --git a/experiments/generic/icons/node-io-stress.png b/experiments/generic/icons/node-io-stress.png new file mode 100644 index 0000000000000000000000000000000000000000..5d13f6b2fde28f9f5851dda3b8508814821df434 GIT binary patch literal 12130 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 literal 0 HcmV?d00001 diff --git a/experiments/generic/icons/node-restart.png b/experiments/generic/icons/node-restart.png new file mode 100644 index 0000000000000000000000000000000000000000..5d13f6b2fde28f9f5851dda3b8508814821df434 GIT binary patch literal 12130 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 QI{*Lx07*qoM6N<$f&(6imjD0& literal 0 HcmV?d00001 diff --git a/experiments/generic/icons/pod-network-loss.png b/experiments/generic/icons/pod-network-loss.png new file mode 100644 index 0000000000000000000000000000000000000000..5826e28ffd2541bf4e2c59059d30b1e41c8be230 GIT binary patch literal 2715 zcmV;M3S{+(P)kvo&>D#YzlOno>w@yA4gG@K6KYV)_D>J~e%-N&D0X>4Q&AV}0qr zv}px=F?P}F1Jow9Y*QNP9||E2D0X)xxI3%Dpscfs;Q8*%SH8^zTVgm>qlpL*MO~IJ( zWy#Spx+F(i$O&u{Ie~4WB?4=;OLDcL)iGrz@Lctx{C3Z2d3JwAt`;0U{#G<5j4dlN z5r`W+@#Gn)p1&x^j=z0XkO=ag+dmzR31iDjVkQFr@XTa%BMXpt^5qM%P%$+<8iOfw2 z96fZ_^LxPdZ`~rLV*FP@_Q6AErBeY*(t-rWf-x1HG1X=-MPqMssu9Qcp{qm;9EFCZ`)c{+g`~6gmy1PT28%?G((9DO@%MLJR=%Z0w;)VI9Cmv zAHvL$-7_$tD^-B7g#nF35VMZPf-z`qS%pU_8?lHHh~VL>3To1(Ypgyk4Y05gdcLEx zTNvOB!UBEdeD9b-4#?(qni+R#o!|>;c#)*P%8;y?Zhczxq5MH&=xMeC49+bK;GUX! z!j##fPMp%GZTHX=Pc!2ffv8ZpxO?@Dv0s|3%u0n)gLP};W{zO=BF&-8z1PP&rs2Zd z7v=S-T6ExjGpNxsV4mF9P>{IujwRmb6UzM9lMH0a#AphHid=+J9G(WE&9<%m5(0=i zuy0%r9yk*b=k;UdO)|9UQ?mBnvh?w!eN;wvzY-%a zy6364Wbe;U$|FDcryTs#8TA_Kbj(d)cd+=rADB)t9_HEKk2R#By5 zgh${c`9Dp8no3GM1q8CtW&>xA)h!w=rB zk_hsKcibMenQ4$V(+D~YO)R4-|$rRX+ z05egZ7ms|FAdncLAVKon>ntz(=GbiDK&j}fi^ZX#mPFu{1k#can8Xly7VxD^Afq-r zKgEoW-5WFQt570IPXhdtfGghQgpj~irfrS~Z!%ReIQzCABpBd16k>~aaB;r1r zNuqDsW`NLwn2XTv40Y44RLJ=wc0Fm+z>f=Bgbr;M)%Jw152Qjs zuzG;hC5;M!2e$Ob+CK5*Yx7pb%!+3ZOnaY;jXlvCj-^a-EP@1TD#Vis6&QF=AcDqx z)!?$?0oogQzX>vFH;eK*Gb3??P@%T{UjuxEHHrC-wprn(I7xpTq-_>mmtej?)4y0p zZU=L8fhZl?g^EIEIj~mzaRV+TWEHS3R$m$+G_^5pQ({u2?NsuB5P292lNXu>GEzAy zE!=lnq-_=Ods>9PFXcY(R0QJ5Ved0X+NYkGYUyumI|cTSgLu&^^p{u~Qin;HCi^{v z`^xmfRbinJKeuti&52Q$ktxq`BP|e`b1oEc0Rpb7S=42;^t~~NSlAQONvTRZfF)^l z&os!tc&ANt?ADHjf}FrMkrUV^ast}~2pp3ft>Op>JR&(-#W)E3tK?`E`wES3EytJ8 z=HDHi4P%8u;kGXG55A4|JCY+ScHy5W3gi2b&C6qwBQ1VxzY^Z7M;LS7WnLbZ97%Z0 zkoSH2LHo}Lc1oSZLCN7Fa&--BokJnix* literal 0 HcmV?d00001 diff --git a/experiments/generic/icons/pod-network-partition.png b/experiments/generic/icons/pod-network-partition.png new file mode 100644 index 0000000000000000000000000000000000000000..5d13f6b2fde28f9f5851dda3b8508814821df434 GIT binary patch literal 12130 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 + Drain the node where application pod is scheduled + keywords: + - Kubernetes + - K8S + - Node + - Drain + platforms: + - GKE + - AWS(KOPS) + - Packet(Kubeadm) + - Konvoy + - EKS + - AKS + maturity: alpha + chaosType: infra + maintainers: + - name: shubham chaudhary + email: shubham.chaudhary@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/node-drain + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/nodes/node-drain/ + - name: Video + url: https://www.youtube.com/watch?v=LQVCZUQ4-ok + icon: + - url: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/node-drain/experiment.yaml diff --git a/experiments/generic/node-drain/rbac-psp.yaml b/experiments/generic/node-drain/rbac-psp.yaml new file mode 100644 index 0000000..c1ddf8c --- /dev/null +++ b/experiments/generic/node-drain/rbac-psp.yaml @@ -0,0 +1,75 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: node-drain-sa + namespace: default + labels: + name: node-drain-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: node-drain-sa + labels: + name: node-drain-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec","pods/eviction"] + verbs: ["get","list","create"] + # ignore daemonsets while draining the node + - apiGroups: ["apps"] + resources: ["daemonsets"] + verbs: ["list","get","delete"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list","patch"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: node-drain-sa + labels: + name: node-drain-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: node-drain-sa +subjects: +- kind: ServiceAccount + name: node-drain-sa + namespace: default diff --git a/experiments/generic/node-drain/rbac.yaml b/experiments/generic/node-drain/rbac.yaml new file mode 100644 index 0000000..e16cbd8 --- /dev/null +++ b/experiments/generic/node-drain/rbac.yaml @@ -0,0 +1,70 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: node-drain-sa + namespace: default + labels: + name: node-drain-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: node-drain-sa + labels: + name: node-drain-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec","pods/eviction"] + verbs: ["get","list","create"] + # ignore daemonsets while draining the node + - apiGroups: ["apps"] + resources: ["daemonsets"] + verbs: ["list","get","delete"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list","patch"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: node-drain-sa + labels: + name: node-drain-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: node-drain-sa +subjects: +- kind: ServiceAccount + name: node-drain-sa + namespace: default diff --git a/experiments/generic/node-io-stress/engine.yaml b/experiments/generic/node-io-stress/engine.yaml new file mode 100644 index 0000000..938949f --- /dev/null +++ b/experiments/generic/node-io-stress/engine.yaml @@ -0,0 +1,39 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + #ex. values: ns1:name=percona,ns2:run=nginx + auxiliaryAppInfo: '' + chaosServiceAccount: node-io-stress-sa + experiments: + - name: node-io-stress + spec: + components: + env: + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '120' + + ## specify the size as percentage of free space on the file system + - name: FILESYSTEM_UTILIZATION_PERCENTAGE + value: '10' + + ## Number of core of CPU + - name: CPU + value: '1' + + ## Total number of workers default value is 4 + - name: NUMBER_OF_WORKERS + value: '4' + + ## percentage of total nodes to target + - name: NODES_AFFECTED_PERC + value: '' + + # provide the comma separated target node names + - name: TARGET_NODES + value: '' diff --git a/experiments/generic/node-io-stress/experiment.yaml b/experiments/generic/node-io-stress/experiment.yaml new file mode 100644 index 0000000..0e46e7f --- /dev/null +++ b/experiments/generic/node-io-stress/experiment.yaml @@ -0,0 +1,116 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Give IO disk stress on a node belonging to a deployment +kind: ChaosExperiment +metadata: + name: node-io-stress + labels: + name: node-io-stress + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name node-io-stress + command: + - /bin/bash + env: + + - name: TOTAL_CHAOS_DURATION + value: '120' + + ## specify the size as percentage of free space on the file system + ## default value 90 (in percentage) + - name: FILESYSTEM_UTILIZATION_PERCENTAGE + value: '10' + + ## we can specify the size in Gigabyte (Gb) also in place of percentage of free space + ## NOTE: for selecting this option FILESYSTEM_UTILIZATION_PERCENTAGE should be empty + - name: FILESYSTEM_UTILIZATION_BYTES + value: '' + + ## Number of core of CPU + - name: CPU + value: '1' + + ## Total number of workers default value is 4 + - name: NUMBER_OF_WORKERS + value: '4' + + ## Total number of vm workers + - name: VM_WORKERS + value: '1' + + ## enter the comma separated target nodes name + - name: TARGET_NODES + value: '' + + - name: NODE_LABEL + value: '' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # Provide the LIB here + # Only litmus supported + - name: LIB + value: 'litmus' + + # provide lib image + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + ## percentage of total nodes to target + - name: NODES_AFFECTED_PERC + value: '' + + ## it defines the sequence of chaos execution for multiple target nodes + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: node-io-stress + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest diff --git a/experiments/generic/node-io-stress/node-io-stress.chartserviceversion.yaml b/experiments/generic/node-io-stress/node-io-stress.chartserviceversion.yaml new file mode 100644 index 0000000..2f990bc --- /dev/null +++ b/experiments/generic/node-io-stress/node-io-stress.chartserviceversion.yaml @@ -0,0 +1,49 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2020-09-12T10:28:08Z + name: node-io-stress + version: 0.1.0 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: node-io-stress + categoryDescription: | + This experiment causes disk stress on the Kubernetes node. The experiment aims to verify the resiliency of applications that share this disk resource for ephemeral or persistent storage purposes.. + - Disk stress on a particular node filesystem where the application deployment is available. + - The amount of disk stress can be either specifed as the size in percentage of the total free space on the file system or simply in Gigabytes(GB) + keywords: + - Kubernetes + - K8S + - Disk + - IO + - Filesystem + - Node + platforms: + - GKE + - EKS + - AKS + maturity: alpha + chaosType: infra + maintainers: + - name: Udit Gaurav + email: udit.gaurav@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/node-io-stress + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/nodes/node-io-stress/ + - name: Video + url: + icon: + - url: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/node-io-stress/experiment.yaml diff --git a/experiments/generic/node-io-stress/rbac-psp.yaml b/experiments/generic/node-io-stress/rbac-psp.yaml new file mode 100644 index 0000000..ab12913 --- /dev/null +++ b/experiments/generic/node-io-stress/rbac-psp.yaml @@ -0,0 +1,71 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: node-io-stress-sa + namespace: default + labels: + name: node-io-stress-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: node-io-stress-sa + labels: + name: node-io-stress-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: node-io-stress-sa + labels: + name: node-io-stress-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: node-io-stress-sa +subjects: +- kind: ServiceAccount + name: node-io-stress-sa + namespace: default diff --git a/experiments/generic/node-io-stress/rbac.yaml b/experiments/generic/node-io-stress/rbac.yaml new file mode 100644 index 0000000..a6858e7 --- /dev/null +++ b/experiments/generic/node-io-stress/rbac.yaml @@ -0,0 +1,66 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: node-io-stress-sa + namespace: default + labels: + name: node-io-stress-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: node-io-stress-sa + labels: + name: node-io-stress-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: node-io-stress-sa + labels: + name: node-io-stress-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: node-io-stress-sa +subjects: +- kind: ServiceAccount + name: node-io-stress-sa + namespace: default diff --git a/experiments/generic/node-memory-hog/engine.yaml b/experiments/generic/node-memory-hog/engine.yaml new file mode 100644 index 0000000..8e6b01c --- /dev/null +++ b/experiments/generic/node-memory-hog/engine.yaml @@ -0,0 +1,37 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + #ex. values: ns1:name=percona,ns2:run=nginx + auxiliaryAppInfo: '' + chaosServiceAccount: node-memory-hog-sa + experiments: + - name: node-memory-hog + spec: + components: + env: + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '120' + + ## percentage of total nodes to target + - name: NODES_AFFECTED_PERC + value: '' + + # provide the comma separated target node names + - name: TARGET_NODES + value: '' + + ## Specify the size as percent of total node capacity Ex: '30' + ## NOTE: for selecting this option keep MEMORY_CONSUMPTION_MEBIBYTES empty + - name: MEMORY_CONSUMPTION_PERCENTAGE + value: '0' + + ## Specify the amount of memory to be consumed in mebibytes + ## NOTE: for selecting this option keep MEMORY_CONSUMPTION_PERCENTAGE empty + - name: MEMORY_CONSUMPTION_MEBIBYTES + value: '0' diff --git a/experiments/generic/node-memory-hog/experiment.yaml b/experiments/generic/node-memory-hog/experiment.yaml new file mode 100644 index 0000000..f5f7b59 --- /dev/null +++ b/experiments/generic/node-memory-hog/experiment.yaml @@ -0,0 +1,107 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Give a memory hog on a node belonging to a deployment +kind: ChaosExperiment +metadata: + name: node-memory-hog + labels: + name: node-memory-hog + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name node-memory-hog + command: + - /bin/bash + env: + + - name: TOTAL_CHAOS_DURATION + value: '120' + + ## Specify the size as percent of total node capacity Ex: '30' + ## NOTE: for selecting this option keep MEMORY_CONSUMPTION_MEBIBYTES empty + - name: MEMORY_CONSUMPTION_PERCENTAGE + value: '' + + ## Specify the amount of memory to be consumed in mebibytes + ## NOTE: for selecting this option keep MEMORY_CONSUMPTION_PERCENTAGE empty + - name: MEMORY_CONSUMPTION_MEBIBYTES + value: '' + + - name: NUMBER_OF_WORKERS + value: '1' + + # ENTER THE COMMA SEPARATED TARGET NODES NAME + - name: TARGET_NODES + value: '' + + - name: NODE_LABEL + value: '' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # Provide the LIB here + # Only litmus supported + - name: LIB + value: 'litmus' + + # provide lib image + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + ## percentage of total nodes to target + - name: NODES_AFFECTED_PERC + value: '' + + ## it defines the sequence of chaos execution for multiple target nodes + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: node-memory-hog + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest diff --git a/experiments/generic/node-memory-hog/node-memory-hog.chartserviceversion.yaml b/experiments/generic/node-memory-hog/node-memory-hog.chartserviceversion.yaml new file mode 100644 index 0000000..f6d7cf1 --- /dev/null +++ b/experiments/generic/node-memory-hog/node-memory-hog.chartserviceversion.yaml @@ -0,0 +1,50 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2020-03-28T10:28:08Z + name: node-memory-hog + version: 0.1.5 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: node-memory-hog + categoryDescription: | + Kubernetes Node memory hog contains chaos to disrupt the state of Kubernetes resources. Experiments can inject a memory spike on a node where the application pod is scheduled. + - Memory hog on a particular node where the application deployment is available. + - After the test, the recovery should be manual for the application pod and node in case they are not in an appropriate state. + keywords: + - Kubernetes + - K8S + - Memory + - Node + platforms: + - GKE + - EKS + - AKS + - Kind + - Rancher + - OpenShift(OKD) + maturity: alpha + chaosType: infra + maintainers: + - name: Udit Gaurav + email: udit.gaurav@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/node-memory-hog + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/nodes/node-memory-hog/ + - name: Video + url: https://www.youtube.com/watch?v=ECxlWgQ8F5w + icon: + - url: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/node-memory-hog/experiment.yaml diff --git a/experiments/generic/node-memory-hog/rbac-psp.yaml b/experiments/generic/node-memory-hog/rbac-psp.yaml new file mode 100644 index 0000000..a6002c5 --- /dev/null +++ b/experiments/generic/node-memory-hog/rbac-psp.yaml @@ -0,0 +1,71 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: node-memory-hog-sa + namespace: default + labels: + name: node-memory-hog-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: node-memory-hog-sa + labels: + name: node-memory-hog-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: node-memory-hog-sa + labels: + name: node-memory-hog-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: node-memory-hog-sa +subjects: +- kind: ServiceAccount + name: node-memory-hog-sa + namespace: default diff --git a/experiments/generic/node-memory-hog/rbac.yaml b/experiments/generic/node-memory-hog/rbac.yaml new file mode 100644 index 0000000..74cd3eb --- /dev/null +++ b/experiments/generic/node-memory-hog/rbac.yaml @@ -0,0 +1,66 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: node-memory-hog-sa + namespace: default + labels: + name: node-memory-hog-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: node-memory-hog-sa + labels: + name: node-memory-hog-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: node-memory-hog-sa + labels: + name: node-memory-hog-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: node-memory-hog-sa +subjects: +- kind: ServiceAccount + name: node-memory-hog-sa + namespace: default diff --git a/experiments/generic/node-poweroff/engine.yaml b/experiments/generic/node-poweroff/engine.yaml new file mode 100644 index 0000000..68ac3a7 --- /dev/null +++ b/experiments/generic/node-poweroff/engine.yaml @@ -0,0 +1,33 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + #ex. values: ns1:name=percona,ns2:run=nginx + auxiliaryAppInfo: '' + chaosServiceAccount: node-poweroff-sa + experiments: + - name: node-poweroff + spec: + components: + # nodeSelector: + # # provide the node labels + # kubernetes.io/hostname: 'node02' + env: + - name: TOTAL_CHAOS_DURATION + value: '60' + + # ENTER THE TARGET NODE NAME + - name: TARGET_NODE + value: '' + + # ENTER THE TARGET NODE IP + - name: TARGET_NODE_IP + value: '' + + # ENTER THE USER TO BE USED FOR SSH AUTH + - name: SSH_USER + value: 'root' diff --git a/experiments/generic/node-poweroff/experiment.yaml b/experiments/generic/node-poweroff/experiment.yaml new file mode 100644 index 0000000..d598147 --- /dev/null +++ b/experiments/generic/node-poweroff/experiment.yaml @@ -0,0 +1,97 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + poweroff node +kind: ChaosExperiment +metadata: + name: node-poweroff + labels: + name: node-poweroff + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps","secrets"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name node-restart + command: + - /bin/bash + env: + - name: SSH_USER + value: 'root' + + - name: TOTAL_CHAOS_DURATION + value: '60' + + - name: REBOOT_COMMAND + value: '-o ServerAliveInterval=1 -o ServerAliveCountMax=1 "sudo systemctl poweroff --force --force" ; true' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # PROVIDE THE LIB HERE + # ONLY LITMUS SUPPORTED + - name: LIB + value: 'litmus' + + # provide lib image + - name: LIB_IMAGE + value: "litmuschaos/go-runner:latest" + + # ENTER THE TARGET NODE NAME + - name: TARGET_NODE + value: '' + + - name: NODE_LABEL + value: '' + + # ENTER THE TARGET NODE IP + - name: TARGET_NODE_IP + value: '' + + labels: + name: node-poweroff + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: id-rsa + mountPath: /mnt/ diff --git a/experiments/generic/node-poweroff/node-poweroff.chartserviceversion.yaml b/experiments/generic/node-poweroff/node-poweroff.chartserviceversion.yaml new file mode 100644 index 0000000..566ca14 --- /dev/null +++ b/experiments/generic/node-poweroff/node-poweroff.chartserviceversion.yaml @@ -0,0 +1,39 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2019-01-28T10:28:08Z + name: node-poweroff + version: 0.1.0 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: node-poweroff + categoryDescription: | + Node poweroff contains chaos experiment to poweroff a node via SSH. + keywords: + - Kubernetes + - K8S + - Poweroff + - Node + platforms: + - KVM/LibVirt based K8s + - EKS + maturity: alpha + chaosType: infra + maintainers: + - name: jordigilh + email: jordi.gil@gmail.com + minKubeVersion: 1.12.0 + provider: + name: Mayadata + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/node-restart + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/nodes/node-restart + icon: + - url: + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/node-poweroff/experiment.yaml diff --git a/experiments/generic/node-poweroff/rbac-psp.yaml b/experiments/generic/node-poweroff/rbac-psp.yaml new file mode 100644 index 0000000..93abac3 --- /dev/null +++ b/experiments/generic/node-poweroff/rbac-psp.yaml @@ -0,0 +1,71 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: node-poweroff-sa + namespace: default + labels: + name: node-poweroff-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: node-poweroff-sa + labels: + name: node-poweroff-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps","secrets"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: node-poweroff-sa + labels: + name: node-poweroff-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: node-poweroff-sa +subjects: +- kind: ServiceAccount + name: node-poweroff-sa + namespace: default diff --git a/experiments/generic/node-poweroff/rbac.yaml b/experiments/generic/node-poweroff/rbac.yaml new file mode 100644 index 0000000..16898df --- /dev/null +++ b/experiments/generic/node-poweroff/rbac.yaml @@ -0,0 +1,66 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: node-poweroff-sa + namespace: default + labels: + name: node-poweroff-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: node-poweroff-sa + labels: + name: node-poweroff-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps","secrets"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: node-poweroff-sa + labels: + name: node-poweroff-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: node-poweroff-sa +subjects: +- kind: ServiceAccount + name: node-poweroff-sa + namespace: default diff --git a/experiments/generic/node-restart/engine.yaml b/experiments/generic/node-restart/engine.yaml new file mode 100644 index 0000000..71e3d70 --- /dev/null +++ b/experiments/generic/node-restart/engine.yaml @@ -0,0 +1,33 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + #ex. values: ns1:name=percona,ns2:run=nginx + auxiliaryAppInfo: '' + chaosServiceAccount: node-restart-sa + experiments: + - name: node-restart + spec: + components: + # nodeSelector: + # # provide the node labels + # kubernetes.io/hostname: 'node02' + env: + - name: TOTAL_CHAOS_DURATION + value: '60' + + # ENTER THE TARGET NODE NAME + - name: TARGET_NODE + value: '' + + # ENTER THE TARGET NODE IP + - name: TARGET_NODE_IP + value: '' + + # ENTER THE USER TO BE USED FOR SSH AUTH + - name: SSH_USER + value: 'root' diff --git a/experiments/generic/node-restart/experiment.yaml b/experiments/generic/node-restart/experiment.yaml new file mode 100644 index 0000000..f36bf82 --- /dev/null +++ b/experiments/generic/node-restart/experiment.yaml @@ -0,0 +1,94 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Restart node +kind: ChaosExperiment +metadata: + name: node-restart + labels: + name: node-restart + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps","secrets"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name node-restart + command: + - /bin/bash + env: + - name: SSH_USER + value: 'root' + + - name: TOTAL_CHAOS_DURATION + value: '60' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # PROVIDE THE LIB HERE + # ONLY LITMUS SUPPORTED + - name: LIB + value: 'litmus' + + # provide lib image + - name: LIB_IMAGE + value: "litmuschaos/go-runner:latest" + + # ENTER THE TARGET NODE NAME + - name: TARGET_NODE + value: '' + + - name: NODE_LABEL + value: '' + + # ENTER THE TARGET NODE IP + - name: TARGET_NODE_IP + value: '' + + labels: + name: node-restart + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: id-rsa + mountPath: /mnt/ diff --git a/experiments/generic/node-restart/node-restart.chartserviceversion.yaml b/experiments/generic/node-restart/node-restart.chartserviceversion.yaml new file mode 100644 index 0000000..4eceec8 --- /dev/null +++ b/experiments/generic/node-restart/node-restart.chartserviceversion.yaml @@ -0,0 +1,39 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2019-01-28T10:28:08Z + name: node-restart + version: 0.1.0 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: node-restart + categoryDescription: | + Node restart contains chaos to restart the node via SSH. + keywords: + - Kubernetes + - K8S + - Restart + - Node + platforms: + - KVM/LibVirt based K8s + - EKS + maturity: alpha + chaosType: infra + maintainers: + - name: machacekondra + email: machacek.ondra@gmail.com + minKubeVersion: 1.12.0 + provider: + name: Mayadata + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/node-restart + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/nodes/node-restart + icon: + - url: + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/node-restart/experiment.yaml diff --git a/experiments/generic/node-restart/rbac-psp.yaml b/experiments/generic/node-restart/rbac-psp.yaml new file mode 100644 index 0000000..b21b60b --- /dev/null +++ b/experiments/generic/node-restart/rbac-psp.yaml @@ -0,0 +1,71 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: node-restart-sa + namespace: default + labels: + name: node-restart-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: node-restart-sa + labels: + name: node-restart-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps","secrets"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: node-restart-sa + labels: + name: node-restart-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: node-restart-sa +subjects: +- kind: ServiceAccount + name: node-restart-sa + namespace: default diff --git a/experiments/generic/node-restart/rbac.yaml b/experiments/generic/node-restart/rbac.yaml new file mode 100644 index 0000000..9b48dd1 --- /dev/null +++ b/experiments/generic/node-restart/rbac.yaml @@ -0,0 +1,66 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: node-restart-sa + namespace: default + labels: + name: node-restart-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: node-restart-sa + labels: + name: node-restart-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps","secrets"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: node-restart-sa + labels: + name: node-restart-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: node-restart-sa +subjects: +- kind: ServiceAccount + name: node-restart-sa + namespace: default diff --git a/experiments/generic/node-taint/engine.yaml b/experiments/generic/node-taint/engine.yaml new file mode 100644 index 0000000..44cfc24 --- /dev/null +++ b/experiments/generic/node-taint/engine.yaml @@ -0,0 +1,31 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + #ex. values: ns1:name=percona,ns2:run=nginx + auxiliaryAppInfo: '' + chaosServiceAccount: node-taint-sa + experiments: + - name: node-taint + spec: + components: + # nodeSelector: + # # provide the node labels + # kubernetes.io/hostname: 'node02' + env: + - name: TOTAL_CHAOS_DURATION + value: '60' + + # set target node name + - name: TARGET_NODE + value: '' + + # set taint label & effect + # key=value:effect or key:effect + - name: TAINTS + value: 'node.kubernetes.io/unreachable:NoExecute' + \ No newline at end of file diff --git a/experiments/generic/node-taint/experiment.yaml b/experiments/generic/node-taint/experiment.yaml new file mode 100644 index 0000000..6845d02 --- /dev/null +++ b/experiments/generic/node-taint/experiment.yaml @@ -0,0 +1,90 @@ +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Taint the node where application pod is scheduled +kind: ChaosExperiment +metadata: + name: node-taint + labels: + name: node-taint + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec","pods/eviction"] + verbs: ["get","list","create"] + # ignore daemonsets while draining the node + - apiGroups: ["apps"] + resources: ["daemonsets"] + verbs: ["list","get","delete"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list","patch","update"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name node-taint + command: + - /bin/bash + env: + + - name: TARGET_NODE + value: '' + + - name: NODE_LABEL + value: '' + + - name: TOTAL_CHAOS_DURATION + value: '60' + + # Provide the LIB here + # Only litmus supported + - name: LIB + value: 'litmus' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # set taint label & effect + # key=value:effect or key:effect + - name: TAINTS + value: '' + + labels: + name: node-taint + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest diff --git a/experiments/generic/node-taint/node-taint.chartserviceversion.yaml b/experiments/generic/node-taint/node-taint.chartserviceversion.yaml new file mode 100644 index 0000000..6e19973 --- /dev/null +++ b/experiments/generic/node-taint/node-taint.chartserviceversion.yaml @@ -0,0 +1,49 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2019-01-13T10:28:08Z + name: node-taint + version: 0.1.2 + annotations: + categories: Kubernetes + vendor: Mayadata + repository: https://github.com/litmuschaos/chaos-charts + support: https://app.slack.com/client/T09NY5SBT/CNXNB0ZTN +spec: + displayName: node-taint + categoryDescription: > + Taint the node where application pod is scheduled + keywords: + - Kubernetes + - K8S + - Node + - Taint + platforms: + - GKE + - AWS(KOPS) + - Packet(Kubeadm) + - Konvoy + - EKS + - AKS + maturity: alpha + chaosType: infra + maintainers: + - name: shubham chaudhary + email: shubham.chaudhary@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/node-taint + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/nodes/node-taint/ + - name: Video + url: + icon: + - url: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/node-taint/experiment.yaml diff --git a/experiments/generic/node-taint/rbac-psp.yaml b/experiments/generic/node-taint/rbac-psp.yaml new file mode 100644 index 0000000..1188ec7 --- /dev/null +++ b/experiments/generic/node-taint/rbac-psp.yaml @@ -0,0 +1,75 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: node-taint-sa + namespace: default + labels: + name: node-taint-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: node-taint-sa + labels: + name: node-taint-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec","pods/eviction"] + verbs: ["get","list","create"] + # ignore daemonsets while draining the node + - apiGroups: ["apps"] + resources: ["daemonsets"] + verbs: ["list","get","delete"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list","patch","update"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: node-taint-sa + labels: + name: node-taint-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: node-taint-sa +subjects: +- kind: ServiceAccount + name: node-taint-sa + namespace: default diff --git a/experiments/generic/node-taint/rbac.yaml b/experiments/generic/node-taint/rbac.yaml new file mode 100644 index 0000000..8981a55 --- /dev/null +++ b/experiments/generic/node-taint/rbac.yaml @@ -0,0 +1,70 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: node-taint-sa + namespace: default + labels: + name: node-taint-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: node-taint-sa + labels: + name: node-taint-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec","pods/eviction"] + verbs: ["get","list","create"] + # ignore daemonsets while draining the node + - apiGroups: ["apps"] + resources: ["daemonsets"] + verbs: ["list","get","delete"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list","patch","update"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: node-taint-sa + labels: + name: node-taint-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: node-taint-sa +subjects: +- kind: ServiceAccount + name: node-taint-sa + namespace: default diff --git a/experiments/generic/pod-autoscaler/engine.yaml b/experiments/generic/pod-autoscaler/engine.yaml new file mode 100644 index 0000000..65dfbf1 --- /dev/null +++ b/experiments/generic/pod-autoscaler/engine.yaml @@ -0,0 +1,28 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + #ex. values: ns1:name=percona,ns2:run=nginx + auxiliaryAppInfo: '' + appinfo: + appns: 'default' + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: pod-autoscaler-sa + experiments: + - name: pod-autoscaler + spec: + components: + env: + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '60' + + # number of replicas to scale + - name: REPLICA_COUNT + value: '5' + \ No newline at end of file diff --git a/experiments/generic/pod-autoscaler/experiment.yaml b/experiments/generic/pod-autoscaler/experiment.yaml new file mode 100644 index 0000000..3950980 --- /dev/null +++ b/experiments/generic/pod-autoscaler/experiment.yaml @@ -0,0 +1,78 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Scale the application replicas and test the node autoscaling on cluster +kind: ChaosExperiment +metadata: + name: pod-autoscaler + labels: + name: pod-autoscaler + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # performs CRUD operations on the deployments and statefulsets + - apiGroups: ["apps"] + resources: ["deployments","statefulsets"] + verbs: ["list","get","patch","update"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-autoscaler + command: + - /bin/bash + env: + + - name: TOTAL_CHAOS_DURATION + value: '60' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # Number of replicas to scale + - name: REPLICA_COUNT + value: '5' + + # PROVIDE THE LIB HERE + # ONLY LITMUS SUPPORTED + - name: LIB + value: 'litmus' + + labels: + name: pod-autoscaler + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest diff --git a/experiments/generic/pod-autoscaler/pod-autoscaler.chartserviceversion.yaml b/experiments/generic/pod-autoscaler/pod-autoscaler.chartserviceversion.yaml new file mode 100644 index 0000000..a22bc4c --- /dev/null +++ b/experiments/generic/pod-autoscaler/pod-autoscaler.chartserviceversion.yaml @@ -0,0 +1,47 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2020-08-08T10:28:08Z + name: pod-autoscaler + version: 0.1.0 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: pod-autoscaler + categoryDescription: | + The experiment aims to check the ability of nodes to accommodate the number of replicas a given application pod. + This experiment can be used for other scenarios as well, such as for checking the Node auto-scaling feature. For example, check if the pods are successfully rescheduled within a specified period in cases where the existing nodes are already running at the specified limits. + keywords: + - Kubernetes + - K8S + - Scale + - Pod + platforms: + - GKE + - EKS + - Minikube + - AKS + maturity: alpha + chaosType: infra + maintainers: + - name: Udit Gaurav + email: udit.gaurav@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/pod-autoscaler + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/pods/pod-autoscaler/ + - name: Video + url: + icon: + - url: + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/pod-autoscaler/experiment.yaml diff --git a/experiments/generic/pod-autoscaler/rbac-psp.yaml b/experiments/generic/pod-autoscaler/rbac-psp.yaml new file mode 100644 index 0000000..49a03ac --- /dev/null +++ b/experiments/generic/pod-autoscaler/rbac-psp.yaml @@ -0,0 +1,71 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-autoscaler-sa + namespace: default + labels: + name: pod-autoscaler-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: pod-autoscaler-sa + labels: + name: pod-autoscaler-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # performs CRUD operations on the deployments and statefulsets + - apiGroups: ["apps"] + resources: ["deployments","statefulsets"] + verbs: ["list","get","patch","update"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: pod-autoscaler-sa + labels: + name: pod-autoscaler-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: pod-autoscaler-sa +subjects: +- kind: ServiceAccount + name: pod-autoscaler-sa + namespace: default diff --git a/experiments/generic/pod-autoscaler/rbac.yaml b/experiments/generic/pod-autoscaler/rbac.yaml new file mode 100644 index 0000000..19114f1 --- /dev/null +++ b/experiments/generic/pod-autoscaler/rbac.yaml @@ -0,0 +1,66 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-autoscaler-sa + namespace: default + labels: + name: pod-autoscaler-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: pod-autoscaler-sa + labels: + name: pod-autoscaler-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # performs CRUD operations on the deployments and statefulsets + - apiGroups: ["apps"] + resources: ["deployments","statefulsets"] + verbs: ["list","get","patch","update"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: pod-autoscaler-sa + labels: + name: pod-autoscaler-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: pod-autoscaler-sa +subjects: +- kind: ServiceAccount + name: pod-autoscaler-sa + namespace: default diff --git a/experiments/generic/pod-cpu-hog-exec/engine.yaml b/experiments/generic/pod-cpu-hog-exec/engine.yaml new file mode 100644 index 0000000..c793410 --- /dev/null +++ b/experiments/generic/pod-cpu-hog-exec/engine.yaml @@ -0,0 +1,30 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + appinfo: + appns: 'default' + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: pod-cpu-hog-exec-sa + experiments: + - name: pod-cpu-hog-exec + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + #number of cpu cores to be consumed + #verify the resources the app has been launched with + - name: CPU_CORES + value: '1' + + ## Percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + \ No newline at end of file diff --git a/experiments/generic/pod-cpu-hog-exec/experiment.yaml b/experiments/generic/pod-cpu-hog-exec/experiment.yaml new file mode 100644 index 0000000..a04eda9 --- /dev/null +++ b/experiments/generic/pod-cpu-hog-exec/experiment.yaml @@ -0,0 +1,105 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects cpu consumption on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-cpu-hog-exec + labels: + name: pod-cpu-hog-exec + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-cpu-hog-exec + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '60' + + ## Number of CPU cores to stress + - name: CPU_CORES + value: '1' + + ## Percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + ## Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + ## env var that describes the library used to execute the chaos + ## default: litmus. Supported values: litmus + - name: LIB + value: 'litmus' + + # The command to kill the chaos process + - name: CHAOS_KILL_COMMAND + value: "kill $(find /proc -name exe -lname '*/md5sum' 2>&1 | grep -v 'Permission denied' | awk -F/ '{print $(NF-1)}')" + + - name: TARGET_PODS + value: '' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: pod-cpu-hog-exec + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest diff --git a/experiments/generic/pod-cpu-hog-exec/pod-cpu-hog-exec.chartserviceversion.yaml b/experiments/generic/pod-cpu-hog-exec/pod-cpu-hog-exec.chartserviceversion.yaml new file mode 100644 index 0000000..65ef4e8 --- /dev/null +++ b/experiments/generic/pod-cpu-hog-exec/pod-cpu-hog-exec.chartserviceversion.yaml @@ -0,0 +1,51 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2021-06-16T10:28:08Z + name: pod-cpu-hog-exec + version: 0.1.0 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: pod-cpu-hog-exec + categoryDescription: | + pod-cpu-hog-exec contains chaos to consume CPU resouces of specified containers in Kubernetes pods. + - Causes high CPU resource consumption utilizing one or more cores by triggering md5sum commands + - The application pod should be healthy once chaos is stopped. Expectation is that service-requests should be served despite chaos. + keywords: + - Kubernetes + - K8S + - CPU + - Pod + - Exec + - Stress + platforms: + - GKE + - Packet(Kubeadm) + - Minikube + - EKS + - AKS + - Kind + maturity: alpha + maintainers: + - name: ksatchit + email: karthik@chaosnative.com + minKubeVersion: 1.12.0 + provider: + name: ChaosNative + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/pod-cpu-hog-exec + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/pods/pod-cpu-hog-exec/ + - name: Video + url: https://www.youtube.com/watch?v=MBGSPmZKb2I + icon: + - base64data: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/pod-cpu-hog-exec/experiment.yaml diff --git a/experiments/generic/pod-cpu-hog-exec/rbac-psp.yaml b/experiments/generic/pod-cpu-hog-exec/rbac-psp.yaml new file mode 100644 index 0000000..f1733be --- /dev/null +++ b/experiments/generic/pod-cpu-hog-exec/rbac-psp.yaml @@ -0,0 +1,85 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-cpu-hog-exec-sa + namespace: default + labels: + name: pod-cpu-hog-exec-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-cpu-hog-exec-sa + namespace: default + labels: + name: pod-cpu-hog-exec-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-cpu-hog-exec-sa + namespace: default + labels: + name: pod-cpu-hog-exec-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-cpu-hog-exec-sa +subjects: +- kind: ServiceAccount + name: pod-cpu-hog-exec-sa + namespace: default diff --git a/experiments/generic/pod-cpu-hog-exec/rbac.yaml b/experiments/generic/pod-cpu-hog-exec/rbac.yaml new file mode 100644 index 0000000..9e80151 --- /dev/null +++ b/experiments/generic/pod-cpu-hog-exec/rbac.yaml @@ -0,0 +1,80 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-cpu-hog-exec-sa + namespace: default + labels: + name: pod-cpu-hog-exec-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-cpu-hog-exec-sa + namespace: default + labels: + name: pod-cpu-hog-exec-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-cpu-hog-exec-sa + namespace: default + labels: + name: pod-cpu-hog-exec-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-cpu-hog-exec-sa +subjects: +- kind: ServiceAccount + name: pod-cpu-hog-exec-sa + namespace: default diff --git a/experiments/generic/pod-cpu-hog/engine.yaml b/experiments/generic/pod-cpu-hog/engine.yaml new file mode 100644 index 0000000..d8875e7 --- /dev/null +++ b/experiments/generic/pod-cpu-hog/engine.yaml @@ -0,0 +1,36 @@ + +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + appinfo: + appns: 'default' + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: pod-cpu-hog-sa + experiments: + - name: pod-cpu-hog + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + - name: CPU_CORES + value: '1' + + ## Percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + ## provide the cluster runtime + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' diff --git a/experiments/generic/pod-cpu-hog/experiment.yaml b/experiments/generic/pod-cpu-hog/experiment.yaml new file mode 100644 index 0000000..45634a5 --- /dev/null +++ b/experiments/generic/pod-cpu-hog/experiment.yaml @@ -0,0 +1,127 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects cpu consumption on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-cpu-hog + labels: + name: pod-cpu-hog + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-cpu-hog + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '60' + + ## Number of CPU cores to stress + - name: CPU_CORES + value: '1' + + ## LOAD CPU WITH GIVEN PERCENT LOADING FOR THE CPU STRESS WORKERS. + ## 0 IS EFFECTIVELY A SLEEP (NO LOAD) AND 100 IS FULL LOADING + - name: CPU_LOAD + value: '100' + + ## Percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + ## Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + ## env var that describes the library used to execute the chaos + ## default: litmus. Supported values: litmus, pumba + - name: LIB + value: 'litmus' + + ## It is used in pumba lib only + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + ## It is used in pumba lib only + - name: STRESS_IMAGE + value: 'alexeiled/stress-ng:latest-ubuntu' + + ## provide the cluster runtime + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + - name: TARGET_PODS + value: '' + + # To select pods on specific node(s) + - name: NODE_LABEL + value: '' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: pod-cpu-hog + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: latest diff --git a/experiments/generic/pod-cpu-hog/pod-cpu-hog.chartserviceversion.yaml b/experiments/generic/pod-cpu-hog/pod-cpu-hog.chartserviceversion.yaml new file mode 100644 index 0000000..5206115 --- /dev/null +++ b/experiments/generic/pod-cpu-hog/pod-cpu-hog.chartserviceversion.yaml @@ -0,0 +1,53 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2021-06-16T10:28:08Z + name: pod-cpu-hog + version: 0.1.0 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: pod-cpu-hog + categoryDescription: | + Pod-CPU-Hog contains chaos to consume CPU resouces of specified containers in Kubernetes pods. + - Causes CPU resource consumption on specified application containers using cgroups and litmus nsutil which consume CPU resources of the given target containers. + - It Can test the application's resilience to potential slowness/unavailability of some replicas due to high CPU load + - The application pod should be healthy once chaos is stopped. Expectation is that service-requests should be served despite chaos. + keywords: + - Kubernetes + - K8S + - CPU + - Pod + - Stress + platforms: + - GKE + - Packet(Kubeadm) + - Minikube + - EKS + - AKS + - Kind + maturity: alpha + maintainers: + - name: ksatchit + email: karthik@chaosnative.com + - name: Udit Gaurav + email: udit@chaosnative.com + minKubeVersion: 1.12.0 + provider: + name: ChaosNative + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/pod-cpu-hog + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/pods/pod-cpu-hog/ + - name: Video + url: https://www.youtube.com/watch?v=MBGSPmZKb2I + icon: + - base64data: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/pod-cpu-hog/experiment.yaml diff --git a/experiments/generic/pod-cpu-hog/rbac-psp.yaml b/experiments/generic/pod-cpu-hog/rbac-psp.yaml new file mode 100644 index 0000000..8952968 --- /dev/null +++ b/experiments/generic/pod-cpu-hog/rbac-psp.yaml @@ -0,0 +1,85 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-cpu-hog-sa + namespace: default + labels: + name: pod-cpu-hog-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-cpu-hog-sa + namespace: default + labels: + name: pod-cpu-hog-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-cpu-hog-sa + namespace: default + labels: + name: pod-cpu-hog-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-cpu-hog-sa +subjects: +- kind: ServiceAccount + name: pod-cpu-hog-sa + namespace: default diff --git a/experiments/generic/pod-cpu-hog/rbac.yaml b/experiments/generic/pod-cpu-hog/rbac.yaml new file mode 100644 index 0000000..f045de3 --- /dev/null +++ b/experiments/generic/pod-cpu-hog/rbac.yaml @@ -0,0 +1,80 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-cpu-hog-sa + namespace: default + labels: + name: pod-cpu-hog-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-cpu-hog-sa + namespace: default + labels: + name: pod-cpu-hog-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-cpu-hog-sa + namespace: default + labels: + name: pod-cpu-hog-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-cpu-hog-sa +subjects: +- kind: ServiceAccount + name: pod-cpu-hog-sa + namespace: default diff --git a/experiments/generic/pod-delete/ansible/engine.yaml b/experiments/generic/pod-delete/ansible/engine.yaml new file mode 100644 index 0000000..871f8f2 --- /dev/null +++ b/experiments/generic/pod-delete/ansible/engine.yaml @@ -0,0 +1,31 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + appinfo: + appns: 'default' + applabel: 'app=nginx' + appkind: 'deployment' + # It can be active/stop + engineState: 'active' + #ex. values: ns1:name=percona,ns2:run=nginx + auxiliaryAppInfo: '' + chaosServiceAccount: pod-delete-sa + experiments: + - name: pod-delete + spec: + components: + env: + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '30' + + # set chaos interval (in sec) as desired + - name: CHAOS_INTERVAL + value: '10' + + # pod failures without '--force' & default terminationGracePeriodSeconds + - name: FORCE + value: 'false' diff --git a/experiments/generic/pod-delete/ansible/experiment.yaml b/experiments/generic/pod-delete/ansible/experiment.yaml new file mode 100644 index 0000000..86a289a --- /dev/null +++ b/experiments/generic/pod-delete/ansible/experiment.yaml @@ -0,0 +1,84 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Deletes a pod belonging to a deployment/statefulset/daemonset +kind: ChaosExperiment +metadata: + name: pod-delete + labels: + name: pod-delete + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + - apiGroups: + - "" + - "apps" + - "batch" + - "litmuschaos.io" + resources: + - "deployments" + - "jobs" + - "pods" + - "pods/log" + - "events" + - "configmaps" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "create" + - "list" + - "get" + - "patch" + - "update" + - "delete" + - apiGroups: + - "" + resources: + - "nodes" + verbs: + - "get" + - "list" + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/generic/pod_delete/pod_delete_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + - name: TOTAL_CHAOS_DURATION + value: '15' + + # Period to wait before injection of chaos in sec + - name: RAMP_TIME + value: '' + + # provide the kill count + - name: KILL_COUNT + value: '' + + - name: FORCE + value: 'true' + + - name: CHAOS_INTERVAL + value: '5' + + - name: LIB_IMAGE + value: 'litmuschaos/pod-delete-helper:latest' + + - name: LIB + value: 'litmus' + labels: + name: pod-delete + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest diff --git a/experiments/generic/pod-delete/ansible/powerfulseal_rbac.yaml b/experiments/generic/pod-delete/ansible/powerfulseal_rbac.yaml new file mode 100644 index 0000000..f53e37b --- /dev/null +++ b/experiments/generic/pod-delete/ansible/powerfulseal_rbac.yaml @@ -0,0 +1,38 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-delete-sa + namespace: default + labels: + name: pod-delete-sa +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: pod-delete-sa + labels: + name: pod-delete-sa +rules: +- apiGroups: ["","litmuschaos.io","batch","apps"] + resources: ["pods","deployments","pods/log","events","jobs","configmaps","chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +- apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: pod-delete-sa + labels: + name: pod-delete-sa +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: pod-delete-sa +subjects: +- kind: ServiceAccount + name: pod-delete-sa + namespace: default + diff --git a/experiments/generic/pod-delete/ansible/rbac.yaml b/experiments/generic/pod-delete/ansible/rbac.yaml new file mode 100644 index 0000000..6a1535b --- /dev/null +++ b/experiments/generic/pod-delete/ansible/rbac.yaml @@ -0,0 +1,40 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-delete-sa + namespace: default + labels: + name: pod-delete-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-delete-sa + namespace: default + labels: + name: pod-delete-sa + app.kubernetes.io/part-of: litmus +rules: +- apiGroups: ["","litmuschaos.io","batch","apps"] + resources: ["pods","deployments","pods/log","events","jobs","chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-delete-sa + namespace: default + labels: + name: pod-delete-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-delete-sa +subjects: +- kind: ServiceAccount + name: pod-delete-sa + namespace: default + diff --git a/experiments/generic/pod-delete/engine.yaml b/experiments/generic/pod-delete/engine.yaml new file mode 100644 index 0000000..c211c73 --- /dev/null +++ b/experiments/generic/pod-delete/engine.yaml @@ -0,0 +1,33 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + appinfo: + appns: 'default' + applabel: 'app=nginx' + appkind: 'deployment' + # It can be active/stop + engineState: 'active' + chaosServiceAccount: pod-delete-sa + experiments: + - name: pod-delete + spec: + components: + env: + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '30' + + # set chaos interval (in sec) as desired + - name: CHAOS_INTERVAL + value: '10' + + # pod failures without '--force' & default terminationGracePeriodSeconds + - name: FORCE + value: 'false' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' diff --git a/experiments/generic/pod-delete/engine_nginx_getstarted.yaml b/experiments/generic/pod-delete/engine_nginx_getstarted.yaml new file mode 100644 index 0000000..043113f --- /dev/null +++ b/experiments/generic/pod-delete/engine_nginx_getstarted.yaml @@ -0,0 +1,37 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: nginx +spec: + appinfo: + appns: 'nginx' + applabel: 'app=nginx' + appkind: 'deployment' + # It can be active/stop + engineState: 'active' + #ex. values: ns1:name=percona,ns2:run=nginx + auxiliaryAppInfo: '' + chaosServiceAccount: pod-delete-sa + # It can be delete/retain + jobCleanUpPolicy: 'delete' + experiments: + - name: pod-delete + spec: + components: + env: + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '30' + + # set chaos interval (in sec) as desired + - name: CHAOS_INTERVAL + value: '10' + + # pod failures without '--force' & default terminationGracePeriodSeconds + - name: FORCE + value: 'false' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' diff --git a/experiments/generic/pod-delete/experiment.yaml b/experiments/generic/pod-delete/experiment.yaml new file mode 100644 index 0000000..46b9162 --- /dev/null +++ b/experiments/generic/pod-delete/experiment.yaml @@ -0,0 +1,106 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Deletes a pod belonging to a deployment/statefulset/daemonset +kind: ChaosExperiment +metadata: + name: pod-delete + labels: + name: pod-delete + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-delete + command: + - /bin/bash + env: + + - name: TOTAL_CHAOS_DURATION + value: '15' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + - name: FORCE + value: 'true' + + - name: CHAOS_INTERVAL + value: '5' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + - name: LIB + value: 'litmus' + + - name: TARGET_PODS + value: '' + + # To select pods on specific node(s) + - name: NODE_LABEL + value: '' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: pod-delete + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest diff --git a/experiments/generic/pod-delete/pod-delete.chartserviceversion.yaml b/experiments/generic/pod-delete/pod-delete.chartserviceversion.yaml new file mode 100644 index 0000000..b5e42b6 --- /dev/null +++ b/experiments/generic/pod-delete/pod-delete.chartserviceversion.yaml @@ -0,0 +1,52 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2019-10-15T10:28:08Z + name: pod-delete + version: 0.1.13 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: pod-delete + categoryDescription: | + Pod delete contains chaos to disrupt state of kubernetes resources. Experiments can inject random pod delete failures against specified application. + - Causes (forced/graceful) pod failure of random replicas of an application deployment. + - Tests deployment sanity (replica availability & uninterrupted service) and recovery workflows of the application pod. + + keywords: + - Kubernetes + - K8S + - Pod + platforms: + - GKE + - Konvoy + - Packet(Kubeadm) + - Minikube + - EKS + - AKS + - Kind + - Rancher + - OpenShift(OKD) + maturity: alpha + maintainers: + - name: ksatchit + email: karthik.s@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/pod-delete + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/pods/pod-delete/ + - name: Video + url: https://www.youtube.com/watch?v=X3JvY_58V9A + icon: + - url: + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/pod-delete/experiment.yaml diff --git a/experiments/generic/pod-delete/python/engine.yaml b/experiments/generic/pod-delete/python/engine.yaml new file mode 100644 index 0000000..c211c73 --- /dev/null +++ b/experiments/generic/pod-delete/python/engine.yaml @@ -0,0 +1,33 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + appinfo: + appns: 'default' + applabel: 'app=nginx' + appkind: 'deployment' + # It can be active/stop + engineState: 'active' + chaosServiceAccount: pod-delete-sa + experiments: + - name: pod-delete + spec: + components: + env: + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '30' + + # set chaos interval (in sec) as desired + - name: CHAOS_INTERVAL + value: '10' + + # pod failures without '--force' & default terminationGracePeriodSeconds + - name: FORCE + value: 'false' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' diff --git a/experiments/generic/pod-delete/python/experiment.yaml b/experiments/generic/pod-delete/python/experiment.yaml new file mode 100644 index 0000000..d80a29d --- /dev/null +++ b/experiments/generic/pod-delete/python/experiment.yaml @@ -0,0 +1,90 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Deletes a pod belonging to a deployment/statefulset/daemonset +kind: ChaosExperiment +metadata: + name: pod-delete + labels: + name: pod-delete + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + - apiGroups: + - "" + - "apps" + - "apps.openshift.io" + - "argoproj.io" + - "batch" + - "litmuschaos.io" + resources: + - "deployments" + - "jobs" + - "pods" + - "pods/log" + - "replicationcontrollers" + - "deployments" + - "statefulsets" + - "daemonsets" + - "replicasets" + - "deploymentconfigs" + - "rollouts" + - "pods/exec" + - "events" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "create" + - "list" + - "get" + - "patch" + - "update" + - "delete" + - "deletecollection" + image: "litmuschaos/py-runner:latest" + imagePullPolicy: Always + args: + - -c + - python3 -u experiment + command: + - /bin/bash + env: + + - name: TOTAL_CHAOS_DURATION + value: '15' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + - name: FORCE + value: 'true' + + - name: CHAOS_INTERVAL + value: '5' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + - name: LIB + value: 'litmus' + + - name: TARGET_PODS + value: '' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: pod-delete + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest diff --git a/experiments/generic/pod-delete/python/rbac.yaml b/experiments/generic/pod-delete/python/rbac.yaml new file mode 100644 index 0000000..350173d --- /dev/null +++ b/experiments/generic/pod-delete/python/rbac.yaml @@ -0,0 +1,58 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-delete-sa + namespace: default + labels: + name: pod-delete-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-delete-sa + namespace: default + labels: + name: pod-delete-sa + app.kubernetes.io/part-of: litmus +rules: +- apiGroups: [""] + resources: ["pods","events"] + verbs: ["create","list","get","patch","update","delete","deletecollection"] +- apiGroups: [""] + resources: ["pods/exec","pods/log","replicationcontrollers"] + verbs: ["create","list","get"] +- apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] +- apiGroups: ["apps"] + resources: ["deployments","statefulsets","daemonsets","replicasets"] + verbs: ["list","get"] +- apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] +- apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] +- apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-delete-sa + namespace: default + labels: + name: pod-delete-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-delete-sa +subjects: +- kind: ServiceAccount + name: pod-delete-sa + namespace: default + diff --git a/experiments/generic/pod-delete/rbac-psp.yaml b/experiments/generic/pod-delete/rbac-psp.yaml new file mode 100644 index 0000000..e494e6b --- /dev/null +++ b/experiments/generic/pod-delete/rbac-psp.yaml @@ -0,0 +1,86 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-delete-sa + namespace: default + labels: + name: pod-delete-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-delete-sa + namespace: default + labels: + name: pod-delete-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-delete-sa + namespace: default + labels: + name: pod-delete-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-delete-sa +subjects: +- kind: ServiceAccount + name: pod-delete-sa + namespace: default + diff --git a/experiments/generic/pod-delete/rbac.yaml b/experiments/generic/pod-delete/rbac.yaml new file mode 100644 index 0000000..a3f4f5c --- /dev/null +++ b/experiments/generic/pod-delete/rbac.yaml @@ -0,0 +1,81 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-delete-sa + namespace: default + labels: + name: pod-delete-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-delete-sa + namespace: default + labels: + name: pod-delete-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-delete-sa + namespace: default + labels: + name: pod-delete-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-delete-sa +subjects: +- kind: ServiceAccount + name: pod-delete-sa + namespace: default + diff --git a/experiments/generic/pod-delete/rbac_nginx_getstarted.yaml b/experiments/generic/pod-delete/rbac_nginx_getstarted.yaml new file mode 100644 index 0000000..5ff2c83 --- /dev/null +++ b/experiments/generic/pod-delete/rbac_nginx_getstarted.yaml @@ -0,0 +1,77 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-delete-sa + namespace: nginx + labels: + name: pod-delete-sa +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-delete-sa + namespace: nginx + labels: + name: pod-delete-sa +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-delete-sa + namespace: nginx + labels: + name: pod-delete-sa +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-delete-sa +subjects: +- kind: ServiceAccount + name: pod-delete-sa + namespace: nginx \ No newline at end of file diff --git a/experiments/generic/pod-dns-error/engine.yaml b/experiments/generic/pod-dns-error/engine.yaml new file mode 100644 index 0000000..63f4a16 --- /dev/null +++ b/experiments/generic/pod-dns-error/engine.yaml @@ -0,0 +1,41 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos +spec: + appinfo: + appns: "default" + applabel: "app=nginx" + appkind: "deployment" + # It can be active/stop + engineState: "active" + #ex. values: ns1:name=percona,ns2:run=nginx + auxiliaryAppInfo: "" + chaosServiceAccount: pod-dns-error-sa + experiments: + - name: pod-dns-error + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: "60" # in seconds + + # list of the target hostnames or kewywords eg. '["litmuschaos","chaosnative.io"]' . If empty all hostnames are targets + - name: TARGET_HOSTNAMES + value: "" + + # can be either exact or substring, determines whether the dns query has to match exactly with one of the targets or can have any of the targets as substring + - name: MATCH_SCHEME + value: "exact" + + # provide the name of container runtime, it supports docker, containerd, crio + - name: CONTAINER_RUNTIME + value: "docker" + + # provide the socket file path + - name: SOCKET_PATH + value: "/var/run/docker.sock" + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: "" diff --git a/experiments/generic/pod-dns-error/experiment.yaml b/experiments/generic/pod-dns-error/experiment.yaml new file mode 100644 index 0000000..078c5c1 --- /dev/null +++ b/experiments/generic/pod-dns-error/experiment.yaml @@ -0,0 +1,115 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Pod DNS Error injects dns failure/error in target pod containers +kind: ChaosExperiment +metadata: + name: pod-dns-error + labels: + name: pod-dns-error + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + args: + - -c + - ./experiments -name pod-dns-error + command: + - /bin/bash + env: + - name: TARGET_CONTAINER + value: "" + + # provide lib image + - name: LIB_IMAGE + value: "litmuschaos/go-runner:latest" + + - name: TOTAL_CHAOS_DURATION + value: "60" # in seconds + + # Time period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: "" + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: "" + + - name: TARGET_PODS + value: "" + + # provide the name of container runtime, it supports docker, containerd, crio + - name: CONTAINER_RUNTIME + value: "docker" + + # provide the socket file path + - name: SOCKET_PATH + value: "/var/run/docker.sock" + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: "parallel" + + # list of the target hostnames or kewywords eg. '["litmuschaos","chaosnative.io"]' . If empty all hostnames are targets + - name: TARGET_HOSTNAMES + value: "" + + # can be either exact or substring, determines whether the dns query has to match exactly with one of the targets or can have any of the targets as substring + - name: MATCH_SCHEME + value: "exact" + + labels: + experiment: pod-dns-error + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: latest diff --git a/experiments/generic/pod-dns-error/pod-dns-error.chartserviceversion.yaml b/experiments/generic/pod-dns-error/pod-dns-error.chartserviceversion.yaml new file mode 100644 index 0000000..4ece88e --- /dev/null +++ b/experiments/generic/pod-dns-error/pod-dns-error.chartserviceversion.yaml @@ -0,0 +1,37 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + name: pod-dns-error + version: 0.1.0 + annotations: + categories: generic +spec: + displayName: pod-dns-error + categoryDescription: > + Pod DNS Error injects dns failure/error in target pod containers + keywords: + - "Pod" + - K8S + - "Kubernetes" + - "DNS" + maturity: alpha + minKubeVersion: 1.12.0 + provider: + name: ChaosNative + maintainers: + - name: gdsoumya + email: gdsoumya@chaosnative.com + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/pod-dns-error + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/pods/getstarted/ + - name: Video + url: + icon: + - base64data: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/pod-dns-error/experiment.yaml diff --git a/experiments/generic/pod-dns-error/rbac-psp.yaml b/experiments/generic/pod-dns-error/rbac-psp.yaml new file mode 100644 index 0000000..1e8bbfd --- /dev/null +++ b/experiments/generic/pod-dns-error/rbac-psp.yaml @@ -0,0 +1,85 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-dns-error-sa + namespace: default + labels: + name: pod-dns-error-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-dns-error-sa + namespace: default + labels: + name: pod-dns-error-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-dns-error-sa + namespace: default + labels: + name: pod-dns-error-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-dns-error-sa +subjects: + - kind: ServiceAccount + name: pod-dns-error-sa + namespace: default diff --git a/experiments/generic/pod-dns-error/rbac.yaml b/experiments/generic/pod-dns-error/rbac.yaml new file mode 100644 index 0000000..84dc894 --- /dev/null +++ b/experiments/generic/pod-dns-error/rbac.yaml @@ -0,0 +1,80 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-dns-error-sa + namespace: default + labels: + name: pod-dns-error-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-dns-error-sa + namespace: default + labels: + name: pod-dns-error-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-dns-error-sa + namespace: default + labels: + name: pod-dns-error-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-dns-error-sa +subjects: + - kind: ServiceAccount + name: pod-dns-error-sa + namespace: default diff --git a/experiments/generic/pod-dns-spoof/engine.yaml b/experiments/generic/pod-dns-spoof/engine.yaml new file mode 100644 index 0000000..88f3a24 --- /dev/null +++ b/experiments/generic/pod-dns-spoof/engine.yaml @@ -0,0 +1,37 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos +spec: + appinfo: + appns: "default" + applabel: "app=nginx" + appkind: "deployment" + # It can be active/stop + engineState: "active" + #ex. values: ns1:name=percona,ns2:run=nginx + auxiliaryAppInfo: "" + chaosServiceAccount: pod-dns-spoof-sa + experiments: + - name: pod-dns-spoof + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: "60" # in seconds + + # map of the target hostnames eg. '{"abc.com":"spoofabc.com"}' . If empty no queries will be spoofed + - name: SPOOF_MAP + value: '{"google.com":"fakegoogle.com"}' + + # provide the name of container runtime, it supports docker, containerd, crio + - name: CONTAINER_RUNTIME + value: "docker" + + # provide the socket file path + - name: SOCKET_PATH + value: "/var/run/docker.sock" + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: "" diff --git a/experiments/generic/pod-dns-spoof/experiment.yaml b/experiments/generic/pod-dns-spoof/experiment.yaml new file mode 100644 index 0000000..f860599 --- /dev/null +++ b/experiments/generic/pod-dns-spoof/experiment.yaml @@ -0,0 +1,111 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Pod DNS Spoof can spoof particular dns requests in target pod container to desired target hostnames +kind: ChaosExperiment +metadata: + name: pod-dns-spoof + labels: + name: pod-dns-spoof + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + args: + - -c + - ./experiments -name pod-dns-spoof + command: + - /bin/bash + env: + - name: TARGET_CONTAINER + value: "" + + # provide lib image + - name: LIB_IMAGE + value: "litmuschaos/go-runner:latest" + + - name: TOTAL_CHAOS_DURATION + value: "60" # in seconds + + # Time period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: "" + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: "" + + - name: TARGET_PODS + value: "" + + # provide the name of container runtime, it supports docker, containerd, crio + - name: CONTAINER_RUNTIME + value: "docker" + + # provide the socket file path + - name: SOCKET_PATH + value: "/var/run/docker.sock" + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: "parallel" + + # map of the target hostnames eg. '{"abc.com":"spoofabc.com"}' . If empty no queries will be spoofed + - name: SPOOF_MAP + value: "" + + labels: + experiment: pod-dns-spoof + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: latest diff --git a/experiments/generic/pod-dns-spoof/pod-dns-spoof.chartserviceversion.yaml b/experiments/generic/pod-dns-spoof/pod-dns-spoof.chartserviceversion.yaml new file mode 100644 index 0000000..b179d30 --- /dev/null +++ b/experiments/generic/pod-dns-spoof/pod-dns-spoof.chartserviceversion.yaml @@ -0,0 +1,37 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + name: pod-dns-spoof + version: 0.1.0 + annotations: + categories: generic +spec: + displayName: pod-dns-spoof + categoryDescription: > + Pod DNS Spoof can spoof particular dns requests in target pod container to desired target hostnames + keywords: + - "Pod" + - K8S + - "Kubernetes" + - "DNS" + maturity: alpha + minKubeVersion: 1.12.0 + provider: + name: ChaosNative + maintainers: + - name: gdsoumya + email: gdsoumya@chaosnative.com + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/pod-dns-spoof + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/pods/getstarted/ + - name: Video + url: + icon: + - base64data: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/pod-dns-spoof/experiment.yaml diff --git a/experiments/generic/pod-dns-spoof/rbac-psp.yaml b/experiments/generic/pod-dns-spoof/rbac-psp.yaml new file mode 100644 index 0000000..106c044 --- /dev/null +++ b/experiments/generic/pod-dns-spoof/rbac-psp.yaml @@ -0,0 +1,85 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-dns-spoof-sa + namespace: default + labels: + name: pod-dns-spoof-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-dns-spoof-sa + namespace: default + labels: + name: pod-dns-spoof-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-dns-spoof-sa + namespace: default + labels: + name: pod-dns-spoof-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-dns-spoof-sa +subjects: + - kind: ServiceAccount + name: pod-dns-spoof-sa + namespace: default diff --git a/experiments/generic/pod-dns-spoof/rbac.yaml b/experiments/generic/pod-dns-spoof/rbac.yaml new file mode 100644 index 0000000..6d2c76d --- /dev/null +++ b/experiments/generic/pod-dns-spoof/rbac.yaml @@ -0,0 +1,80 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-dns-spoof-sa + namespace: default + labels: + name: pod-dns-spoof-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-dns-spoof-sa + namespace: default + labels: + name: pod-dns-spoof-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-dns-spoof-sa + namespace: default + labels: + name: pod-dns-spoof-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-dns-spoof-sa +subjects: + - kind: ServiceAccount + name: pod-dns-spoof-sa + namespace: default diff --git a/experiments/generic/pod-http-latency/engine.yaml b/experiments/generic/pod-http-latency/engine.yaml new file mode 100644 index 0000000..bc226d8 --- /dev/null +++ b/experiments/generic/pod-http-latency/engine.yaml @@ -0,0 +1,41 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-http-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + appinfo: + appns: 'default' + # FYI, To see app label, apply kubectl get pods --show-labels + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: pod-http-latency-sa + experiments: + - name: pod-http-latency + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + - name: LATENCY + value: '2000' #in ms + + # port of the target service + - name: TARGET_SERVICE_PORT + value: "80" + + # provide the name of container runtime + # it supports docker, containerd, crio + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' diff --git a/experiments/generic/pod-http-latency/experiment.yaml b/experiments/generic/pod-http-latency/experiment.yaml new file mode 100644 index 0000000..79ab473 --- /dev/null +++ b/experiments/generic/pod-http-latency/experiment.yaml @@ -0,0 +1,134 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects http request latency on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-http-latency + labels: + name: pod-http-latency + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-http-latency + command: + - /bin/bash + env: + + - name: TARGET_CONTAINER + value: '' + + # provide lib image + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + - name: LATENCY + value: '2000' #in ms + + # port of the target service + - name: TARGET_SERVICE_PORT + value: "80" + + # port on which the proxy will listen + - name: PROXY_PORT + value: "20000" + + # network interface on which the proxy will listen + - name: NETWORK_INTERFACE + value: "eth0" + + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + # Time period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # lib can be litmus or pumba + - name: LIB + value: 'litmus' + + # percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + - name: TARGET_PODS + value: '' + + # provide the name of container runtime + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + # To select pods on specific node(s) + - name: NODE_LABEL + value: '' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: pod-http-latency + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: latest diff --git a/experiments/generic/pod-http-latency/pod-http-latency.chartserviceversion.yaml b/experiments/generic/pod-http-latency/pod-http-latency.chartserviceversion.yaml new file mode 100644 index 0000000..d39adc4 --- /dev/null +++ b/experiments/generic/pod-http-latency/pod-http-latency.chartserviceversion.yaml @@ -0,0 +1,45 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2022-05-21T10:28:08Z + name: pod-http-latency + version: 0.1.0 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: pod-http-latency + categoryDescription: | + Pod-http-latency contains chaos to disrupt http requests of kubernetes pods. This experiment can inject random http response delays on the app replica pods. + - Causes flaky access to application replica by injecting http response delay using toxiproxy. + - The application pod should be healthy once chaos is stopped. Service-requests should be served despite chaos. + keywords: + - Kubernetes + - K8S + - HTTP + - Pod + - Latency + platforms: + - GKE + - Minikube + - EKS + maturity: alpha + maintainers: + - name: Akash Shrivastava + email: akash.shrivastava@harness.io + minKubeVersion: 1.12.0 + provider: + name: Harness + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/pod-http-latency + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/pods/pod-http-latency/ + icon: + - base64data: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/pod-http-latency/experiment.yaml diff --git a/experiments/generic/pod-http-latency/rbac-psp.yaml b/experiments/generic/pod-http-latency/rbac-psp.yaml new file mode 100644 index 0000000..3b472ee --- /dev/null +++ b/experiments/generic/pod-http-latency/rbac-psp.yaml @@ -0,0 +1,85 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-http-latency-sa + namespace: default + labels: + name: pod-http-latency-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-http-latency-sa + namespace: default + labels: + name: pod-http-latency-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-http-latency-sa + namespace: default + labels: + name: pod-http-latency-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-http-latency-sa +subjects: +- kind: ServiceAccount + name: pod-http-latency-sa + namespace: default diff --git a/experiments/generic/pod-http-latency/rbac.yaml b/experiments/generic/pod-http-latency/rbac.yaml new file mode 100644 index 0000000..6c46d88 --- /dev/null +++ b/experiments/generic/pod-http-latency/rbac.yaml @@ -0,0 +1,80 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-http-latency-sa + namespace: default + labels: + name: pod-http-latency-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-http-latency-sa + namespace: default + labels: + name: pod-http-latency-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-http-latency-sa + namespace: default + labels: + name: pod-http-latency-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-http-latency-sa +subjects: +- kind: ServiceAccount + name: pod-http-latency-sa + namespace: default diff --git a/experiments/generic/pod-io-stress/engine.yaml b/experiments/generic/pod-io-stress/engine.yaml new file mode 100644 index 0000000..7a53571 --- /dev/null +++ b/experiments/generic/pod-io-stress/engine.yaml @@ -0,0 +1,37 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + appinfo: + appns: 'default' + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: pod-io-stress-sa + experiments: + - name: pod-io-stress + spec: + components: + env: + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '120' + + ## specify the size as percentage of free space on the file system + - name: FILESYSTEM_UTILIZATION_PERCENTAGE + value: '10' + + ## Percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + ## provide the cluster runtime + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' diff --git a/experiments/generic/pod-io-stress/experiment.yaml b/experiments/generic/pod-io-stress/experiment.yaml new file mode 100644 index 0000000..40a4c74 --- /dev/null +++ b/experiments/generic/pod-io-stress/experiment.yaml @@ -0,0 +1,134 @@ +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + IO stress on a app pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-io-stress + labels: + name: pod-io-stress + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-io-stress + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '120' + + ## specify the size as percentage of free space on the file system + ## default value 90 (in percentage) + - name: FILESYSTEM_UTILIZATION_PERCENTAGE + value: '10' + + ## we can specify the size in Gigabyte (Gb) also in place of percentage of free space + ## NOTE: for selecting this option FILESYSTEM_UTILIZATION_PERCENTAGE should be empty + - name: FILESYSTEM_UTILIZATION_BYTES + value: '' + + ## Total number of workers default value is 4 + - name: NUMBER_OF_WORKERS + value: '4' + + ## Percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + # provide volume mount path + - name: VOLUME_MOUNT_PATH + value: '' + + ## specify the comma separated target pods + - name: TARGET_PODS + value: '' + + # To select pods on specific node(s) + - name: NODE_LABEL + value: '' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # Provide the LIB here + # support litmus and pumba + - name: LIB + value: 'litmus' + + # provide lib image + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + ## provide the cluster runtime + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: pod-io-stress + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: latest diff --git a/experiments/generic/pod-io-stress/pod-io-stress.chartserviceversion.yaml b/experiments/generic/pod-io-stress/pod-io-stress.chartserviceversion.yaml new file mode 100644 index 0000000..8f7a010 --- /dev/null +++ b/experiments/generic/pod-io-stress/pod-io-stress.chartserviceversion.yaml @@ -0,0 +1,50 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2020-09-13T10:28:08Z + name: pod-io-stress + version: 0.1.0 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: pod-io-stress + categoryDescription: | + This experiment causes disk stress on the application pod. The experiment aims to verify the resiliency of applications that share this disk resource for ephemeral or persistent storage purposes. + - Consumes the disk available by executing filesystem IO stress as available memory or by providing the value in GB + - The application pod should be healthy once chaos is stopped. Expectation is that service-requests should be served despite chaos. + keywords: + - Kubernetes + - K8S + - Memory + - Pod + - IO + - Stress + platforms: + - GKE + - Packet(Kubeadm) + - Minikube + - EKS + - AKS + maturity: alpha + maintainers: + - name: Udit Gaurav + email: udit.gaurav@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/pod-io-stress + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/pods/pod-io-stress/ + - name: Video + url: + icon: + - base64data: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/pod-io-stress/experiment.yaml diff --git a/experiments/generic/pod-io-stress/rbac-psp.yaml b/experiments/generic/pod-io-stress/rbac-psp.yaml new file mode 100644 index 0000000..755512a --- /dev/null +++ b/experiments/generic/pod-io-stress/rbac-psp.yaml @@ -0,0 +1,85 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-io-stress-sa + namespace: default + labels: + name: pod-io-stress-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-io-stress-sa + namespace: default + labels: + name: pod-io-stress-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-io-stress-sa + namespace: default + labels: + name: pod-io-stress-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-io-stress-sa +subjects: +- kind: ServiceAccount + name: pod-io-stress-sa + namespace: default diff --git a/experiments/generic/pod-io-stress/rbac.yaml b/experiments/generic/pod-io-stress/rbac.yaml new file mode 100644 index 0000000..e80025d --- /dev/null +++ b/experiments/generic/pod-io-stress/rbac.yaml @@ -0,0 +1,80 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-io-stress-sa + namespace: default + labels: + name: pod-io-stress-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-io-stress-sa + namespace: default + labels: + name: pod-io-stress-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-io-stress-sa + namespace: default + labels: + name: pod-io-stress-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-io-stress-sa +subjects: +- kind: ServiceAccount + name: pod-io-stress-sa + namespace: default diff --git a/experiments/generic/pod-memory-hog-exec/engine.yaml b/experiments/generic/pod-memory-hog-exec/engine.yaml new file mode 100644 index 0000000..5bc6b0d --- /dev/null +++ b/experiments/generic/pod-memory-hog-exec/engine.yaml @@ -0,0 +1,29 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + appinfo: + appns: 'default' + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: pod-memory-hog-exec-sa + experiments: + - name: pod-memory-hog-exec + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + # Enter the amount of memory in megabytes to be consumed by the application pod + - name: MEMORY_CONSUMPTION + value: '500' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + \ No newline at end of file diff --git a/experiments/generic/pod-memory-hog-exec/experiment.yaml b/experiments/generic/pod-memory-hog-exec/experiment.yaml new file mode 100644 index 0000000..3f29e61 --- /dev/null +++ b/experiments/generic/pod-memory-hog-exec/experiment.yaml @@ -0,0 +1,106 @@ +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects memory consumption on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-memory-hog-exec + labels: + name: pod-memory-hog-exec + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-memory-hog-exec + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '60' + + ## enter the amount of memory in megabytes to be consumed by the application pod + - name: MEMORY_CONSUMPTION + value: '500' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + ## Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + ## env var that describes the library used to execute the chaos + ## default: litmus. Supported values: litmus + - name: LIB + value: 'litmus' + + # The command to kill the chaos process + - name: CHAOS_KILL_COMMAND + value: "kill $(find /proc -name exe -lname '*/dd' 2>&1 | grep -v 'Permission denied' | awk -F/ '{print $(NF-1)}' | head -n 1)" + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + - name: TARGET_PODS + value: '' + + labels: + name: pod-memory-hog-exec + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest diff --git a/experiments/generic/pod-memory-hog-exec/pod-memory-hog-exec.chartserviceversion.yaml b/experiments/generic/pod-memory-hog-exec/pod-memory-hog-exec.chartserviceversion.yaml new file mode 100644 index 0000000..2e37699 --- /dev/null +++ b/experiments/generic/pod-memory-hog-exec/pod-memory-hog-exec.chartserviceversion.yaml @@ -0,0 +1,51 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2020-04-10T10:28:08Z + name: pod-memory-hog-exec + version: 0.1.4 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: pod-memory-hog-exec + categoryDescription: | + pod-memory-hog-exec contains chaos to consume Memory resouces of specified containers in Kubernetes pods. + - Consumes the memory specified by executing a dd command against special files /dev/zero(input) and /dev/null(output) + - The application pod should be healthy once chaos is stopped. Expectation is that service-requests should be served despite chaos. + keywords: + - Kubernetes + - K8S + - Memory + - Pod + - Exec + - Stress + platforms: + - GKE + - Packet(Kubeadm) + - Minikube + - EKS + - AKS + - OpenShift(OKD) + maturity: alpha + maintainers: + - name: Udit Gaurav + email: udit@chaosnative.com + minKubeVersion: 1.12.0 + provider: + name: ChaosNative + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/pod-memory-hog-exec + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/pods/pod-memory-hog-exec/ + - name: Video + url: https://www.youtube.com/watch?v=HuAXg8W5Tzo + icon: + - base64data: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/pod-memory-hog-exec/experiment.yaml diff --git a/experiments/generic/pod-memory-hog-exec/rbac-psp.yaml b/experiments/generic/pod-memory-hog-exec/rbac-psp.yaml new file mode 100644 index 0000000..eb39cec --- /dev/null +++ b/experiments/generic/pod-memory-hog-exec/rbac-psp.yaml @@ -0,0 +1,85 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-memory-hog-exec-sa + namespace: default + labels: + name: pod-memory-hog-exec-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-memory-hog-exec-sa + namespace: default + labels: + name: pod-memory-hog-exec-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-memory-hog-exec-sa + namespace: default + labels: + name: pod-memory-hog-exec-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-memory-hog-exec-sa +subjects: +- kind: ServiceAccount + name: pod-memory-hog-exec-sa + namespace: default diff --git a/experiments/generic/pod-memory-hog-exec/rbac.yaml b/experiments/generic/pod-memory-hog-exec/rbac.yaml new file mode 100644 index 0000000..d4da0ca --- /dev/null +++ b/experiments/generic/pod-memory-hog-exec/rbac.yaml @@ -0,0 +1,80 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-memory-hog-exec-sa + namespace: default + labels: + name: pod-memory-hog-exec-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-memory-hog-exec-sa + namespace: default + labels: + name: pod-memory-hog-exec-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-memory-hog-exec-sa + namespace: default + labels: + name: pod-memory-hog-exec-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-memory-hog-exec-sa +subjects: +- kind: ServiceAccount + name: pod-memory-hog-exec-sa + namespace: default diff --git a/experiments/generic/pod-memory-hog/engine.yaml b/experiments/generic/pod-memory-hog/engine.yaml new file mode 100644 index 0000000..e5b9c52 --- /dev/null +++ b/experiments/generic/pod-memory-hog/engine.yaml @@ -0,0 +1,36 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + appinfo: + appns: 'default' + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: pod-memory-hog-sa + experiments: + - name: pod-memory-hog + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + # Enter the amount of memory in megabytes to be consumed by the application pod + - name: MEMORY_CONSUMPTION + value: '500' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + ## provide the cluster runtime + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' diff --git a/experiments/generic/pod-memory-hog/experiment.yaml b/experiments/generic/pod-memory-hog/experiment.yaml new file mode 100644 index 0000000..562182f --- /dev/null +++ b/experiments/generic/pod-memory-hog/experiment.yaml @@ -0,0 +1,127 @@ +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects memory consumption on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-memory-hog + labels: + name: pod-memory-hog + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-memory-hog + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '60' + + ## enter the amount of memory in megabytes to be consumed by the application pod + - name: MEMORY_CONSUMPTION + value: '500' + + ## Number of workers to perform stress + - name: NUMBER_OF_WORKERS + value: '1' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + ## Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + ## env var that describes the library used to execute the chaos + ## default: litmus. Supported values: litmus, pumba + - name: LIB + value: 'litmus' + + ## It is used in pumba lib only + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + ## It is used in pumba lib only + - name: STRESS_IMAGE + value: 'alexeiled/stress-ng:latest-ubuntu' + + ## provide the cluster runtime + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + - name: TARGET_PODS + value: '' + + # To select pods on specific node(s) + - name: NODE_LABEL + value: '' + + labels: + name: pod-memory-hog + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: latest diff --git a/experiments/generic/pod-memory-hog/pod-memory-hog.chartserviceversion.yaml b/experiments/generic/pod-memory-hog/pod-memory-hog.chartserviceversion.yaml new file mode 100644 index 0000000..958f9e4 --- /dev/null +++ b/experiments/generic/pod-memory-hog/pod-memory-hog.chartserviceversion.yaml @@ -0,0 +1,51 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2021-06-16T10:28:08Z + name: pod-memory-hog + version: 0.1.0 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: pod-memory-hog + categoryDescription: | + Pod-Memory-Hog contains chaos to consume memory resouces of specified containers in Kubernetes pods. + - Causes memory resource consumption on specified application containers using cgroups and litmus nsutil that consume memory resources of the given target containers. + - It Can test the application's resilience to potential slowness/unavailability of some replicas due to high memory load + - The application pod should be healthy once chaos is stopped. Expectation is that service-requests should be served despite chaos. + keywords: + - Kubernetes + - K8S + - Memory + - Pod + - Stress + platforms: + - GKE + - Packet(Kubeadm) + - Minikube + - EKS + - AKS + - OpenShift(OKD) + maturity: alpha + maintainers: + - name: Udit Gaurav + email: udit@chaosnative.com + minKubeVersion: 1.12.0 + provider: + name: ChaosNative + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/pod-memory-hog + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/pods/pod-memory-hog/ + - name: Video + url: https://www.youtube.com/watch?v=HuAXg8W5Tzo + icon: + - base64data: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/pod-memory-hog/experiment.yaml diff --git a/experiments/generic/pod-memory-hog/rbac-psp.yaml b/experiments/generic/pod-memory-hog/rbac-psp.yaml new file mode 100644 index 0000000..3ad222d --- /dev/null +++ b/experiments/generic/pod-memory-hog/rbac-psp.yaml @@ -0,0 +1,85 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-memory-hog-sa + namespace: default + labels: + name: pod-memory-hog-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-memory-hog-sa + namespace: default + labels: + name: pod-memory-hog-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-memory-hog-sa + namespace: default + labels: + name: pod-memory-hog-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-memory-hog-sa +subjects: +- kind: ServiceAccount + name: pod-memory-hog-sa + namespace: default diff --git a/experiments/generic/pod-memory-hog/rbac.yaml b/experiments/generic/pod-memory-hog/rbac.yaml new file mode 100644 index 0000000..61445c9 --- /dev/null +++ b/experiments/generic/pod-memory-hog/rbac.yaml @@ -0,0 +1,80 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-memory-hog-sa + namespace: default + labels: + name: pod-memory-hog-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-memory-hog-sa + namespace: default + labels: + name: pod-memory-hog-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-memory-hog-sa + namespace: default + labels: + name: pod-memory-hog-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-memory-hog-sa +subjects: +- kind: ServiceAccount + name: pod-memory-hog-sa + namespace: default diff --git a/experiments/generic/pod-network-corruption/engine.yaml b/experiments/generic/pod-network-corruption/engine.yaml new file mode 100644 index 0000000..c8cebb5 --- /dev/null +++ b/experiments/generic/pod-network-corruption/engine.yaml @@ -0,0 +1,38 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-network-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + appinfo: + appns: 'default' + # FYI, To see app label, apply kubectl get pods --show-labels + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: pod-network-corruption-sa + experiments: + - name: pod-network-corruption + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + # provide the name of container runtime + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + - name: NETWORK_PACKET_CORRUPTION_PERCENTAGE + value: '100' #in PERCENTAGE + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' diff --git a/experiments/generic/pod-network-corruption/experiment.yaml b/experiments/generic/pod-network-corruption/experiment.yaml new file mode 100644 index 0000000..7d7859a --- /dev/null +++ b/experiments/generic/pod-network-corruption/experiment.yaml @@ -0,0 +1,138 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Inject network packet corruption into application pod +kind: ChaosExperiment +metadata: + name: pod-network-corruption + labels: + name: pod-network-corruption + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-network-corruption + command: + - /bin/bash + env: + + - name: TARGET_CONTAINER + value: '' + + # provide lib image + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + - name: NETWORK_INTERFACE + value: 'eth0' + + - name: TC_IMAGE + value: 'gaiadocker/iproute2' + + - name: NETWORK_PACKET_CORRUPTION_PERCENTAGE + value: '100' #in PERCENTAGE + + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + # Time period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # lib can be litmus or pumba + - name: LIB + value: 'litmus' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + - name: TARGET_PODS + value: '' + + # To select pods on specific node(s) + - name: NODE_LABEL + value: '' + + # provide the name of container runtime + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the destination ips + # chaos injection will be triggered for these destination ips + - name: DESTINATION_IPS + value: '' + + # provide the destination hosts + # chaos injection will be triggered for these destination hosts + - name: DESTINATION_HOSTS + value: '' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: pod-network-corruption + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: latest diff --git a/experiments/generic/pod-network-corruption/pod-network-corruption.chartserviceversion.yaml b/experiments/generic/pod-network-corruption/pod-network-corruption.chartserviceversion.yaml new file mode 100644 index 0000000..c4991a9 --- /dev/null +++ b/experiments/generic/pod-network-corruption/pod-network-corruption.chartserviceversion.yaml @@ -0,0 +1,49 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2020-01-07T10:28:08Z + name: pod-network-corruption + version: 0.1.10 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: pod-network-corruption + categoryDescription: | + Pod-network-corruption contains chaos to disrupt network connectivity to kubernetes pods. Experiments can inject percentage packet corruption on the app replica pods. + - Causes packet corruption of application replica by injecting packet corruption using pumba. + - The application pod should be healthy once chaos is stopped. Service-requests should be served (say, via alternate replicas) despite chaos. + keywords: + - Kubernetes + - K8S + - Network + - Pod + - Corruption + platforms: + - GKE + - Packet(Kubeadm) + - Minikube + - EKS + - AKS + maturity: alpha + maintainers: + - name: LaumiH + email: laura-marie.henning@stud.h-da.de + minKubeVersion: 1.12.0 + provider: + name: Laura-Marie Henning + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/pod-network-corruption + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/pods/pod-network-corruption/ + - name: Video + url: https://www.youtube.com/watch?v=kSiLrIaILvs + icon: + - base64data: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/pod-network-corruption/experiment.yaml diff --git a/experiments/generic/pod-network-corruption/rbac-psp.yaml b/experiments/generic/pod-network-corruption/rbac-psp.yaml new file mode 100644 index 0000000..685855b --- /dev/null +++ b/experiments/generic/pod-network-corruption/rbac-psp.yaml @@ -0,0 +1,85 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-network-corruption-sa + namespace: default + labels: + name: pod-network-corruption-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-network-corruption-sa + namespace: default + labels: + name: pod-network-corruption-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-network-corruption-sa + namespace: default + labels: + name: pod-network-corruption-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-network-corruption-sa +subjects: +- kind: ServiceAccount + name: pod-network-corruption-sa + namespace: default diff --git a/experiments/generic/pod-network-corruption/rbac.yaml b/experiments/generic/pod-network-corruption/rbac.yaml new file mode 100644 index 0000000..f0319df --- /dev/null +++ b/experiments/generic/pod-network-corruption/rbac.yaml @@ -0,0 +1,80 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-network-corruption-sa + namespace: default + labels: + name: pod-network-corruption-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-network-corruption-sa + namespace: default + labels: + name: pod-network-corruption-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-network-corruption-sa + namespace: default + labels: + name: pod-network-corruption-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-network-corruption-sa +subjects: +- kind: ServiceAccount + name: pod-network-corruption-sa + namespace: default diff --git a/experiments/generic/pod-network-duplication/engine.yaml b/experiments/generic/pod-network-duplication/engine.yaml new file mode 100644 index 0000000..d726f75 --- /dev/null +++ b/experiments/generic/pod-network-duplication/engine.yaml @@ -0,0 +1,39 @@ +# chaosengine.yaml +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-network-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + appinfo: + appns: 'default' + # FYI, To see app label, apply kubectl get pods --show-labels + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: pod-network-duplication-sa + experiments: + - name: pod-network-duplication + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + - name: NETWORK_PACKET_DUPLICATION_PERCENTAGE + value: '100' + + # provide the name of container runtime + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' diff --git a/experiments/generic/pod-network-duplication/experiment.yaml b/experiments/generic/pod-network-duplication/experiment.yaml new file mode 100644 index 0000000..d286b2f --- /dev/null +++ b/experiments/generic/pod-network-duplication/experiment.yaml @@ -0,0 +1,135 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects network packet duplication on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-network-duplication + labels: + name: pod-network-duplication + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-network-duplication + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '60' + + - name: RAMP_TIME + value: '' + + - name: TARGET_CONTAINER + value: '' + + - name: TC_IMAGE + value: 'gaiadocker/iproute2' + + - name: NETWORK_INTERFACE + value: 'eth0' + + - name: NETWORK_PACKET_DUPLICATION_PERCENTAGE + value: '100' # in percentage + + # lib can be litmus or pumba + - name: LIB + value: 'litmus' + + - name: TARGET_PODS + value: '' + + # To select pods on specific node(s) + - name: NODE_LABEL + value: '' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + # provide the name of container runtime + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the destination ips + # chaos injection will be triggered for these destination ips + - name: DESTINATION_IPS + value: '' + + # provide the destination hosts + # chaos injection will be triggered for these destination hosts + - name: DESTINATION_HOSTS + value: '' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: pod-network-duplication + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: latest diff --git a/experiments/generic/pod-network-duplication/pod-network-duplication.chartserviceversion.yaml b/experiments/generic/pod-network-duplication/pod-network-duplication.chartserviceversion.yaml new file mode 100644 index 0000000..cec3785 --- /dev/null +++ b/experiments/generic/pod-network-duplication/pod-network-duplication.chartserviceversion.yaml @@ -0,0 +1,49 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2020-07-01T10:28:08Z + name: pod-network-duplication + version: 0.1.2 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: pod-network-duplication + categoryDescription: | + Pod-network-duplication contains chaos to disrupt network connectivity to kubernetes pods. Experiments can inject percentage packet duplication on the app replica pods. + - Causes lossy access to application replica by injecting packet duplication using pumba. + - The application pod should be healthy once chaos is stopped. Service-requests should be served (say, via alternate replicas) despite chaos. + keywords: + - Kubernetes + - K8S + - Network + - Pod + - Duplication + platforms: + - GKE + - Minikube + - Packet(Kubeadm) + - EKS + - AKS + maturity: alpha + maintainers: + - name: Udit Gaurav + email: udit.gaurav@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/pod-network-duplication + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/pods/pod-network-duplication/ + - name: Video + url: + icon: + - base64data: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/pod-network-duplication/experiment.yaml diff --git a/experiments/generic/pod-network-duplication/rbac-psp.yaml b/experiments/generic/pod-network-duplication/rbac-psp.yaml new file mode 100644 index 0000000..01acf1a --- /dev/null +++ b/experiments/generic/pod-network-duplication/rbac-psp.yaml @@ -0,0 +1,84 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-network-duplication-sa + namespace: default + labels: + name: pod-network-duplication-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-network-duplication-sa + namespace: default + labels: + name: pod-network-duplication-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-network-duplication-sa + namespace: default + labels: + name: pod-network-duplication-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-network-duplication-sa +subjects: +- kind: ServiceAccount + name: pod-network-duplication-sa + namespace: default diff --git a/experiments/generic/pod-network-duplication/rbac.yaml b/experiments/generic/pod-network-duplication/rbac.yaml new file mode 100644 index 0000000..d225750 --- /dev/null +++ b/experiments/generic/pod-network-duplication/rbac.yaml @@ -0,0 +1,79 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-network-duplication-sa + namespace: default + labels: + name: pod-network-duplication-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-network-duplication-sa + namespace: default + labels: + name: pod-network-duplication-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-network-duplication-sa + namespace: default + labels: + name: pod-network-duplication-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-network-duplication-sa +subjects: +- kind: ServiceAccount + name: pod-network-duplication-sa + namespace: default diff --git a/experiments/generic/pod-network-latency/engine.yaml b/experiments/generic/pod-network-latency/engine.yaml new file mode 100644 index 0000000..07aa28d --- /dev/null +++ b/experiments/generic/pod-network-latency/engine.yaml @@ -0,0 +1,41 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-network-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + appinfo: + appns: 'default' + # FYI, To see app label, apply kubectl get pods --show-labels + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: pod-network-latency-sa + experiments: + - name: pod-network-latency + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + - name: NETWORK_LATENCY + value: '2000' + + - name: JITTER + value: '0' + + # provide the name of container runtime + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' diff --git a/experiments/generic/pod-network-latency/experiment.yaml b/experiments/generic/pod-network-latency/experiment.yaml new file mode 100644 index 0000000..89f92f1 --- /dev/null +++ b/experiments/generic/pod-network-latency/experiment.yaml @@ -0,0 +1,141 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects network latency on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-network-latency + labels: + name: pod-network-latency + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-network-latency + command: + - /bin/bash + env: + + - name: TARGET_CONTAINER + value: '' + + - name: NETWORK_INTERFACE + value: 'eth0' + + # provide lib image + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + - name: TC_IMAGE + value: 'gaiadocker/iproute2' + + - name: NETWORK_LATENCY + value: '2000' #in ms + + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + # Time period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + - name: JITTER + value: '0' + + # lib can be litmus or pumba + - name: LIB + value: 'litmus' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + - name: TARGET_PODS + value: '' + + # provide the name of container runtime + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the destination ips + # chaos injection will be triggered for these destination ips + - name: DESTINATION_IPS + value: '' + + # provide the destination hosts + # chaos injection will be triggered for these destination hosts + - name: DESTINATION_HOSTS + value: '' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + # To select pods on specific node(s) + - name: NODE_LABEL + value: '' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: pod-network-latency + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: latest diff --git a/experiments/generic/pod-network-latency/pod-network-latency.chartserviceversion.yaml b/experiments/generic/pod-network-latency/pod-network-latency.chartserviceversion.yaml new file mode 100644 index 0000000..8e40c7a --- /dev/null +++ b/experiments/generic/pod-network-latency/pod-network-latency.chartserviceversion.yaml @@ -0,0 +1,49 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2019-10-11T10:28:08Z + name: pod-network-latency + version: 0.1.13 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: pod-network-latency + categoryDescription: | + Pod-network-latency contains chaos to disrupt network connectivity of kubernetes pods. Experiments can inject random network delays on the app replica pods. + - Causes flaky access to application replica by injecting network delay using pumba. + - The application pod should be healthy once chaos is stopped. Service-requests should be served despite chaos. + keywords: + - Kubernetes + - K8S + - Network + - Pod + - Latency + platforms: + - GKE + - Minikube + - Packet(Kubeadm) + - EKS + - AKS + maturity: alpha + maintainers: + - name: ksatchit + email: karthik.s@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/pod-network-latency + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/pods/pod-network-latency/ + - name: Video + url: https://www.youtube.com/watch?v=QsQZyXVCcCw + icon: + - base64data: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/pod-network-latency/experiment.yaml diff --git a/experiments/generic/pod-network-latency/rbac-psp.yaml b/experiments/generic/pod-network-latency/rbac-psp.yaml new file mode 100644 index 0000000..ee147c7 --- /dev/null +++ b/experiments/generic/pod-network-latency/rbac-psp.yaml @@ -0,0 +1,85 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-network-latency-sa + namespace: default + labels: + name: pod-network-latency-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-network-latency-sa + namespace: default + labels: + name: pod-network-latency-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-network-latency-sa + namespace: default + labels: + name: pod-network-latency-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-network-latency-sa +subjects: +- kind: ServiceAccount + name: pod-network-latency-sa + namespace: default diff --git a/experiments/generic/pod-network-latency/rbac.yaml b/experiments/generic/pod-network-latency/rbac.yaml new file mode 100644 index 0000000..4b65e6b --- /dev/null +++ b/experiments/generic/pod-network-latency/rbac.yaml @@ -0,0 +1,80 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-network-latency-sa + namespace: default + labels: + name: pod-network-latency-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-network-latency-sa + namespace: default + labels: + name: pod-network-latency-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-network-latency-sa + namespace: default + labels: + name: pod-network-latency-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-network-latency-sa +subjects: +- kind: ServiceAccount + name: pod-network-latency-sa + namespace: default diff --git a/experiments/generic/pod-network-loss/engine.yaml b/experiments/generic/pod-network-loss/engine.yaml new file mode 100644 index 0000000..36718dc --- /dev/null +++ b/experiments/generic/pod-network-loss/engine.yaml @@ -0,0 +1,40 @@ +# chaosengine.yaml +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-network-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + appinfo: + appns: 'default' + # FYI, To see app label, apply kubectl get pods --show-labels + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: pod-network-loss-sa + experiments: + - name: pod-network-loss + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + - name: NETWORK_PACKET_LOSS_PERCENTAGE + value: '100' + + # provide the name of container runtime + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + \ No newline at end of file diff --git a/experiments/generic/pod-network-loss/experiment.yaml b/experiments/generic/pod-network-loss/experiment.yaml new file mode 100644 index 0000000..069080b --- /dev/null +++ b/experiments/generic/pod-network-loss/experiment.yaml @@ -0,0 +1,138 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects network packet loss on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-network-loss + labels: + name: pod-network-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-network-loss + command: + - /bin/bash + env: + + - name: TARGET_CONTAINER + value: '' + + # provide lib image + - name: LIB_IMAGE + value: 'litmuschaos/go-runner:latest' + + - name: NETWORK_INTERFACE + value: 'eth0' + + - name: TC_IMAGE + value: 'gaiadocker/iproute2' + + - name: NETWORK_PACKET_LOSS_PERCENTAGE + value: '100' #in PERCENTAGE + + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + # ime period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # it can be litmus or pumba + - name: LIB + value: 'litmus' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + - name: TARGET_PODS + value: '' + + # To select pods on specific node(s) + - name: NODE_LABEL + value: '' + + # provide the name of container runtime + # for litmus LIB, it supports docker, containerd, crio + # for pumba LIB, it supports docker only + - name: CONTAINER_RUNTIME + value: 'docker' + + # provide the destination ips + # chaos injection will be triggered for these destination ips + - name: DESTINATION_IPS + value: '' + + # provide the destination hosts + # chaos injection will be triggered for these destination hosts + - name: DESTINATION_HOSTS + value: '' + + # provide the socket file path + - name: SOCKET_PATH + value: '/var/run/docker.sock' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + labels: + name: pod-network-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/runtime-api-usage: "true" + app.kubernetes.io/version: latest diff --git a/experiments/generic/pod-network-loss/pod-network-loss.chartserviceversion.yaml b/experiments/generic/pod-network-loss/pod-network-loss.chartserviceversion.yaml new file mode 100644 index 0000000..71ae971 --- /dev/null +++ b/experiments/generic/pod-network-loss/pod-network-loss.chartserviceversion.yaml @@ -0,0 +1,48 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2019-10-11T10:28:08Z + name: pod-network-loss + version: 0.1.12 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: pod-network-loss + categoryDescription: | + Pod-network-loss contains chaos to disrupt network connectivity to kubernetes pods. Experiments can inject percentage packet loss on the app replica pods. + - Causes loss of access to application replica by injecting packet loss using pumba. + - The application pod should be healthy once chaos is stopped. Service-requests should be served (say, via alternate replicas) despite chaos. + keywords: + - Kubernetes + - K8S + - Network + - Pod + - Loss + platforms: + - GKE + - Minikube + - Packet(Kubeadm) + - EKS + maturity: alpha + maintainers: + - name: ksatchit + email: karthik.s@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/pod-network-loss + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/pods/pod-network-loss/ + - name: Video + url: https://www.youtube.com/watch?v=jqvYy-nWc_I + icon: + - base64data: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/pod-network-loss/experiment.yaml diff --git a/experiments/generic/pod-network-loss/rbac-psp.yaml b/experiments/generic/pod-network-loss/rbac-psp.yaml new file mode 100644 index 0000000..d3af1b8 --- /dev/null +++ b/experiments/generic/pod-network-loss/rbac-psp.yaml @@ -0,0 +1,84 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-network-loss-sa + namespace: default + labels: + name: pod-network-loss-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-network-loss-sa + namespace: default + labels: + name: pod-network-loss-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-network-loss-sa + namespace: default + labels: + name: pod-network-loss-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-network-loss-sa +subjects: +- kind: ServiceAccount + name: pod-network-loss-sa + namespace: default diff --git a/experiments/generic/pod-network-loss/rbac.yaml b/experiments/generic/pod-network-loss/rbac.yaml new file mode 100644 index 0000000..caa0918 --- /dev/null +++ b/experiments/generic/pod-network-loss/rbac.yaml @@ -0,0 +1,79 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-network-loss-sa + namespace: default + labels: + name: pod-network-loss-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-network-loss-sa + namespace: default + labels: + name: pod-network-loss-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # deriving the parent/owner details of the pod(if parent is anyof {deployment, statefulset, daemonsets}) + - apiGroups: ["apps"] + resources: ["deployments","statefulsets","replicasets", "daemonsets"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: ["apps.openshift.io"] + resources: ["deploymentconfigs"] + verbs: ["list","get"] + # deriving the parent/owner details of the pod(if parent is deploymentConfig) + - apiGroups: [""] + resources: ["replicationcontrollers"] + verbs: ["get","list"] + # deriving the parent/owner details of the pod(if parent is argo-rollouts) + - apiGroups: ["argoproj.io"] + resources: ["rollouts"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-network-loss-sa + namespace: default + labels: + name: pod-network-loss-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-network-loss-sa +subjects: +- kind: ServiceAccount + name: pod-network-loss-sa + namespace: default diff --git a/experiments/generic/pod-network-partition/engine.yaml b/experiments/generic/pod-network-partition/engine.yaml new file mode 100644 index 0000000..ef656e1 --- /dev/null +++ b/experiments/generic/pod-network-partition/engine.yaml @@ -0,0 +1,21 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-network-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + appinfo: + appns: 'default' + # FYI, To see app label, apply kubectl get pods --show-labels + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: pod-network-partition-sa + experiments: + - name: pod-network-partition + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds diff --git a/experiments/generic/pod-network-partition/experiment.yaml b/experiments/generic/pod-network-partition/experiment.yaml new file mode 100644 index 0000000..7c2cde2 --- /dev/null +++ b/experiments/generic/pod-network-partition/experiment.yaml @@ -0,0 +1,100 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Injects 100% network packet loss on pods belonging to an app deployment +kind: ChaosExperiment +metadata: + name: pod-network-partition + labels: + name: pod-network-partition + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # performs CRUD operations on the network policies + - apiGroups: ["networking.k8s.io"] + resources: ["networkpolicies"] + verbs: ["create","delete","list","get"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-network-partition + command: + - /bin/bash + env: + + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + # ime period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # it should be litmus + - name: LIB + value: 'litmus' + + # provide the destination ips + # chaos injection will be triggered for these destination ips + - name: DESTINATION_IPS + value: '' + + # provide the destination hosts + # chaos injection will be triggered for these destination hosts + - name: DESTINATION_HOSTS + value: '' + + # provide network policy type + # support ingress, egress, all values + - name: POLICY_TYPES + value: 'all' + + # provide labels of the destination pods + - name: POD_SELECTOR + value: '' + + # provide labels the destination namespaces + - name: NAMESPACE_SELECTOR + value: '' + + # provide comma separated ports + - name: PORTS + value: '' + + labels: + name: pod-network-partition + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest diff --git a/experiments/generic/pod-network-partition/pod-network-partition.chartserviceversion.yaml b/experiments/generic/pod-network-partition/pod-network-partition.chartserviceversion.yaml new file mode 100644 index 0000000..89b3957 --- /dev/null +++ b/experiments/generic/pod-network-partition/pod-network-partition.chartserviceversion.yaml @@ -0,0 +1,43 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2021-08-25T10:28:08Z + name: pod-network-partition + version: 0.1.0 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: pod-network-partition + categoryDescription: | + pod-network-partition contains chaos to disrupt network connectivity to kubernetes pods. Experiments can inject complete egress/ingress network loss based on label and namespace selectors. + - The application pod should be healthy once chaos is stopped. Service-requests should be served (say, via alternate replicas) despite chaos. + keywords: + - Kubernetes + - K8S + - Pod + - Network + - Partition + platforms: + - Minikube + - Packet(Kubeadm) + maturity: alpha + maintainers: + - name: ispeakc0de + email: shubham@chaosnative.com + minKubeVersion: 1.12.0 + provider: + name: ChaosNative + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/generic/pod-network-partition + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/pods/pod-network-partition/ + icon: + - base64data: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/pod-network-partition/experiment.yaml diff --git a/experiments/generic/pod-network-partition/rbac-psp.yaml b/experiments/generic/pod-network-partition/rbac-psp.yaml new file mode 100644 index 0000000..9335123 --- /dev/null +++ b/experiments/generic/pod-network-partition/rbac-psp.yaml @@ -0,0 +1,72 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-network-partition-sa + namespace: default + labels: + name: pod-network-partition-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-network-partition-sa + namespace: default + labels: + name: pod-network-partition-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # performs CRUD operations on the network policies + - apiGroups: ["networking.k8s.io"] + resources: ["networkpolicies"] + verbs: ["create","delete","list","get"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # use litmus psp + - apiGroups: ["policy"] + resources: ["podsecuritypolicies"] + verbs: ["use"] + resourceNames: ["litmus"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-network-partition-sa + namespace: default + labels: + name: pod-network-partition-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-network-partition-sa +subjects: +- kind: ServiceAccount + name: pod-network-partition-sa + namespace: default diff --git a/experiments/generic/pod-network-partition/rbac.yaml b/experiments/generic/pod-network-partition/rbac.yaml new file mode 100644 index 0000000..e2a0ae7 --- /dev/null +++ b/experiments/generic/pod-network-partition/rbac.yaml @@ -0,0 +1,67 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pod-network-partition-sa + namespace: default + labels: + name: pod-network-partition-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: pod-network-partition-sa + namespace: default + labels: + name: pod-network-partition-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # performs CRUD operations on the network policies + - apiGroups: ["networking.k8s.io"] + resources: ["networkpolicies"] + verbs: ["create","delete","list","get"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: pod-network-partition-sa + namespace: default + labels: + name: pod-network-partition-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: pod-network-partition-sa +subjects: +- kind: ServiceAccount + name: pod-network-partition-sa + namespace: default diff --git a/experiments/kafka/experiments.yaml b/experiments/kafka/experiments.yaml new file mode 100644 index 0000000..893dc2b --- /dev/null +++ b/experiments/kafka/experiments.yaml @@ -0,0 +1,249 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Detaching a persistent disk from a node/instance for kafka. +kind: ChaosExperiment +metadata: + name: kafka-broker-disk-failure + labels: + name: kafka-broker-disk-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + - apiGroups: + - "" + - "apps" + - "batch" + - "litmuschaos.io" + resources: + - "statefulsets" + - "secrets" + - "jobs" + - "pods/log" + - "events" + - "pods" + - "pods/exec" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "create" + - "delete" + - "get" + - "list" + - "patch" + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/kafka/kafka-broker-disk-failure/kafka-broker-disk-failure-ansible-logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + - name: KAFKA_KIND + value: 'statefulset' + + - name: KAFKA_LIVENESS_STREAM + value: 'enabled' + + - name: KAFKA_LIVENESS_IMAGE + value: 'litmuschaos/kafka-client:ci' + + - name: KAFKA_CONSUMER_TIMEOUT + value: '30000' + + - name: TOTAL_CHAOS_DURATION + value: '15' + + - name: PROJECT_ID + value: '' + + - name: DISK_NAME + value: '' + + - name: ZONE_NAME + value: '' + + # GKE and AWS supported + - name: CLOUD_PLATFORM + value: 'GKE' + + - name: KAFKA_NAMESPACE + value: '' + + - name: KAFKA_LABEL + value: '' + + - name: KAFKA_BROKER + value: '' + + - name: KAFKA_INSTANCE_NAME + value: '' + + - name: KAFKA_REPLICATION_FACTOR + value: '' + + - name: KAFKA_SERVICE + value: '' + + - name: KAFKA_PORT + value: '' + + - name: ZOOKEEPER_NAMESPACE + value: '' + + - name: ZOOKEEPER_LABEL + value: '' + + - name: ZOOKEEPER_SERVICE + value: '' + + - name: ZOOKEEPER_PORT + value: '' + labels: + name: kafka-broker-disk-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: kafka-broker-disk-failure + mountPath: /tmp/ + + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Deleting a kafka broker pod +kind: ChaosExperiment +metadata: + name: kafka-broker-pod-failure + labels: + name: kafka-broker-pod-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for deriving the parent/owner details of the pod + - apiGroups: ["apps"] + resources: ["deployments","statefulsets"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name kafka-broker-pod-failure + command: + - /bin/bash + env: + + - name: KAFKA_KIND + value: 'statefulset' + + - name: KAFKA_LIVENESS_STREAM + value: 'enable' + + - name: KAFKA_LIVENESS_IMAGE + value: 'litmuschaos/kafka-client:latest' + + # Recommended timeout for EKS platform: 60000 ms + - name: KAFKA_CONSUMER_TIMEOUT + value: '30000' #in ms + + - name: TOTAL_CHAOS_DURATION + value: '15' + + - name: CHAOS_INTERVAL + value: '5' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + - name: FORCE + value: 'true' + + - name: KAFKA_INSTANCE_NAME + value: '' + + - name: KAFKA_NAMESPACE + value: '' + + - name: KAFKA_LABEL + value: '' + + - name: KAFKA_BROKER + value: '' + + - name: KAFKA_REPLICATION_FACTOR + value: '' + + - name: KAFKA_SERVICE + value: '' + + - name: KAFKA_PORT + value: '' + + - name: ZOOKEEPER_NAMESPACE + value: '' + + - name: ZOOKEEPER_LABEL + value: '' + + - name: ZOOKEEPER_SERVICE + value: '' + + - name: ZOOKEEPER_PORT + value: '' + + ## env var that describes the library used to execute the chaos + ## default: litmus. Supported values: litmus + - name: LIB + value: 'litmus' + + labels: + name: kafka-broker-pod-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + +--- diff --git a/experiments/kafka/icons/kafka-broker-disk-failure.png b/experiments/kafka/icons/kafka-broker-disk-failure.png new file mode 100644 index 0000000000000000000000000000000000000000..08321df6a8b66ab39e8db5339662d0a46ce7adac GIT binary patch literal 5236 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 literal 0 HcmV?d00001 diff --git a/experiments/kafka/icons/kafka-broker-pod-failure.png b/experiments/kafka/icons/kafka-broker-pod-failure.png new file mode 100644 index 0000000000000000000000000000000000000000..08321df6a8b66ab39e8db5339662d0a46ce7adac GIT binary patch literal 5236 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 literal 0 HcmV?d00001 diff --git a/experiments/kafka/icons/kafka.png b/experiments/kafka/icons/kafka.png new file mode 100644 index 0000000000000000000000000000000000000000..08321df6a8b66ab39e8db5339662d0a46ce7adac GIT binary patch literal 5236 zcmZ`-cTkhvvkqMmq}N11dKE$wkRTlb5;{_(6Cj~Oq(xAAksb(LKu81)NQWqhQbVuO z1rbzGL7E6Cc;k2PeDk|^=AN0|J!hY1_ssjw`D1re%wPtL^t|){0Duu{sB1yCbz~u3 zpeF03YF0tAq4v@;(EQ?#clGUt9nH zwE_TuE3o8+xjGr3bTc;41^h|M9O)vT=ul7-J-YQvj2Cz~+atUh$S#V2V3-xf_~Wo5 z0Dx5ls;gxczPMeA4!7<27;dSWQh9U8d?|%@%JCW{z4trp(xx zBlZ?O$fL!B@ES8y8e=~ebgsJ$7l(?VJ~8pZM<@R^(fIh~fUK`8pEF6>ifGSKLd%hp z&tUZDu8~J}J}U$zpHIJ5z5|m5VlN2(AGJ$+@3`buLLie$bMnv0~IycyI~SD_kJDe^a*g6S{V1J=Qq~X zBsudnApd|>4A<;*XFoi_3AWmJow-l9F)yXl>?n}G0k-;LX|l*md={^)`GDRDpFZ98 z-LtB3!Uda`N4rv4Ijs{YwYYaVdU{3~`%~zUR)_LH#u6y-`iAfg2>Z`9DAKoFS@TL) zn)GPV2YuL*w%-GQ-mSn$6@P7dAKyxH&e5tH5Mi{-fYdQ_CeM+j!Nr7Jb7R6K;Kq{YUWk;3m1phI1x(~tdYY!>xUC1 z1JYL^9JiEwAzE%J;VWcLx-FJ|&`!I<^%wUFd+VP9>L*E`r576=HBC}J_&{`zU2hnA zJxTK7Fvr@5G4tAoX4lU2@U4Bf*nAI?IeN`Ytm(cT2IMe;ST*UHv6-SjdpFR{l1%Uk z<)4y+`Bf>o;FlKF^imz`_5IVzqhv&eqH--{s`omE-tZDB-mJREo1#LR1@z5AQZQ(k zz_;Yb4}rPP%>{8ThbO6;orsV3x9eDK(!3Y6uS3ZWhv zCF>2f|Mp4@P%FJ7TGk{vY>8E?LMuX==c#-)Y#JQQ*4JI@y*pT zmI<}`w9u(m=x?q0)<*~!(`W<=UY1o(%ZU;7EgYdtDLmW!sdbanz2Qtk358>=O#Mm)mW*upYFEy2^mfzgjid8{QZ(8mKyN6>8 z7^5vmSb|lkP~~EshDyh0&IPdaS;yven;p;gjn!{r`RVsG@ogHpbHU3t@3b|9TIyDd z2Jh8WAJ@3auz7DO!qtv>ekkYs%E1 zj=kl*%`;@~P|e6JVEm#qh=;ZCYQuGEDT9JqjzP?b(GnSOiD~O@js$1M8G%^`BCNfO znO$Fec)4~vZAx5zqPb9ib2hTGy>yR3P^5Zv-c$m85^oKfNju-}HH!OaFLGnh?WTxs zcE6_lrr7SZ<7;_7b~VDChqDZx%1??QQYXJlDn#Q>@y20sErgAu`(KD`O!d%H_WbxS z3yeyO^~432&?2m43%1{RL&0EI*7&oMq=*bxgjXLLY_TxqEB^9UQm%)Yc*T)H4mM~c zdjg#`yv_eYiQoPhY_zHNbZzxSbE*+b(;-r_`Vu^HUi^cT7?j35Tf1>3ZnmXEA6x&K z;a9+%!v=oR(#&$m!HTza9G*SFHMtty(9%ZQHWbq`X?@Ih98z)K_^jf-E^tM#jVdL! z$RsuLy@D^-Ow~O9)V548CL!nTSt?|v$<%CmDEf0|8_7?seU)}7@0U0mf&1Q3@mQx` z-IWWKA!3Ic$`f~3S>+@q#aYzvPIeR9RV}F9FV8JMH_BEufy2HXhSIz?&$rt zb}b1uEvDlYt&=U`CYviCZ5lSn@tEY2R~1EJDSX(!r}$Y|)LBUNAS+#KESJ@nTks8M)BX)1vOcmSZ!e1UUwcW|7;*=UmFYO%qxclB67hy|u9fQ(}(b zLDQ(NsMPtCDcFmIqfM@4+tRLV+n0(!_7+hIHCa2>B-axNw@Y~?tf_TjQVs*f>G zd7Bv9Po-MX?uqjU&u&bICYMD6l~~4QrAbEz;iOt%lHHVEguBFNM}KB@hdqyaLp08u z6f0`J1HJ|33CtPoQZcEx;5d&6|MjbVK)}yInoX(O>Z#qE0)gpy0gV}kJju1LWsseE z&o0qXYy>dH9+ewE65UwH*;_f8tc!1inm3^{#<`z2EM2;hbL<>dYDpt0}`Wc#7V4yCEil|FUG! z8`N5#ymfe~O?`F5;+yE!{jOYR31daxpjfX6XK|}o>i$NXin4=mE_7hw9DTI?Iu)f= zmci9LSQYhzfm9sy%?Rw>z`<1Q&aAPB^&Uq_*2HeQ)_E|?i%X7~6qF_K`sp5JsLy7E4&EZsUiL39+_Jk72vf0sQCIx2*59(u(JBZkrgXhgVcw_lY#~ zFNz1F&{-`LRR{kBLZu>)A zp*g3uo%>#GAoUB69vv=4*wq3$T-XaTzGlyTR9 zU7;M!H~HHfIsQ%`Ek_Y3jA)nM}KSqtNH>cS`jRkN$S5Btn@8tHZA z^h!U_8*iQ3Ti~v&smWw&&zt~5=mUTf;RCk(D1n>&6oeA1({Q|nuq&GC{M?rxW4q+F z_kW+ZXW;DZ3k6q@oQaE%{>ZWDpwbHcFK@kE(0n;z8+-z}PG@%_s*rkeuhPWmLFGuN zchh8krU`wOPxw;rQ++m1Dwtd0I0McZ+f*iflsz0#E>gNVAXg{vm#~W&{cfv8(^D{R zcFEm&5Y*-mJ4NDq2vxZjPkpmLl&uTl55k7e?s2C2x*fSZRrI|!gB!y-Y1H5Jn+U5H z`~%Sh%7cub`Hzo1<7d2wD|~9nV?*+L|NW4aj|k@|>@djB@?ni)a4DPl{!Jiq7jEcu z>UT(Y+GK{XcB}QBRZ-WvWK&6LG~W+cx_N2gcl^88cC(Ffp?B~Isy)lzpp2j*qsI(q z{f^=;m{Fm6#;B^8(^CImj<>U8+-m-n=zGxFN8#qxdKbsQ?ULM$p3z-$P;c_#^3%1kQ{6ady7Uy=N(M zKUtSwD?^7{IN=mm4QPjDKxyW~_Wj(_^==VPQ$3MX_xl7wjn8X!O7PA4sOiOpjyEcdY%u3FudU?A>h_?NTzKH@v*E06IleU+`Xa`vftYB(zTM&h*$!7n776}BDVNK#XB;-L7oE4R z4Mm|ivm64tGNv3hI4=Zm>nqsqMfi%O?MhpZ%srTzGtXSKZ=!5DJVAOKUx@(0~g`_5}{d6?Oh zbx;_yaU_T2p@mXbhA?LEb(l2vi?7i>N&2MjNiQTgF16XVlYj61CpC!T6P97ttE%^{ z<$9a5s!%7SvlKDyhppWzarAu*Cp{AEhr5{*26;)mvz*g4+6JS1tr9=#ANsnkZW%$^ zxyd~q8$O<7k!xGRcFy*p)0H8Y+|l{PD-(2vqCo5f4TtdQg(xr~8z|-NEH;BuGDwlD z&GS0?BWMeJ;61>GTT@G6-C->?Qg#6nvdOLAwN!juFn=kv@wG0u$I4tiyhOM*C9R}S zr`|phnO@U}tJmM*sYpj8Kjy6H3@mnluh~-PllxDcc8^QIj@cJi(Cv#znDZA?f84Gv z#@kao+~$UYj(5xA_w-(DMejS-Uw_INZJu5n;VO#aRmAv3%LWm3Ic&x$Q-Jj%UAgT^ zFytfJ<4#@n1KdjePwEh404Ed@VB8VDnRv#H$g19F9uNGXx3m#n=cbIt`APD8Kdk@u z;D@8xrIk<7ajPY+OuxhhG$n5bD{axvIre!-mg4)baBJ07SUNmmC;n92+7(KTXszn% zFmw9xVZp0Hr%0>yUTI@?9gJzfk6RpaX4MITS54~#3Hg7_g(JsHD127%Yd$=vs6AG0C zTp%B)0IU>L0E)juC9;4iC;@*d@?=3IQUBxnJCXXk;E`Sk&ui`hegH}UW%?+~?fvJpY)*`hpLQE)Z)U^v+THChjjmkWA`7N>vB15KdzHGSN_do8Q_Tua}9xr1G97TQUlO>cMpDv|VEV3uirsUH||9 literal 0 HcmV?d00001 diff --git a/experiments/kafka/kafka-broker-disk-failure/engine.yaml b/experiments/kafka/kafka-broker-disk-failure/engine.yaml new file mode 100644 index 0000000..56b1690 --- /dev/null +++ b/experiments/kafka/kafka-broker-disk-failure/engine.yaml @@ -0,0 +1,81 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: kafka-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + #ex. values: ns1:name=percona,ns2:run=nginx + auxiliaryAppInfo: '' + appinfo: + appns: 'default' + applabel: 'app=cp-kafka' + appkind: 'statefulset' + chaosServiceAccount: kafka-broker-disk-failure-sa + experiments: + - name: kafka-broker-disk-failure + spec: + components: + env: + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '60' + + # choose based on available kafka broker replicas + - name: KAFKA_REPLICATION_FACTOR + value: '3' + + # get via 'kubectl get pods --show-labels -n ' + - name: KAFKA_LABEL + value: 'app=cp-kafka' + + - name: KAFKA_NAMESPACE + value: 'default' + + # get via 'kubectl get svc -n ' + - name: KAFKA_SERVICE + value: 'kafka-cp-kafka-headless' + + # get via 'kubectl get svc -n ' + - name: KAFKA_PORT + value: '9092' + + # in milliseconds + - name: KAFKA_CONSUMER_TIMEOUT + value: '70000' + + # ensure to set the instance name if using KUDO operator + - name: KAFKA_INSTANCE_NAME + value: '' + + - name: ZOOKEEPER_NAMESPACE + value: 'default' + + # get via 'kubectl get pods --show-labels -n ' + - name: ZOOKEEPER_LABEL + value: 'app=cp-zookeeper' + + # get via 'kubectl get svc -n + - name: ZOOKEEPER_SERVICE + value: 'kafka-cp-zookeeper-headless' + + # get via 'kubectl get svc -n + - name: ZOOKEEPER_PORT + value: '2181' + + # get from google cloud console or 'gcloud projects list' + - name: PROJECT_ID + value: 'argon-tractor-237811' + + # attached to (in use by) node where 'kafka-0' is scheduled + - name: DISK_NAME + value: 'disk-1' + + - name: ZONE_NAME + value: 'us-central1-a' + + # Uses 'disk-1' attached to the node on which it is scheduled + - name: KAFKA_BROKER + value: 'kafka-0' + \ No newline at end of file diff --git a/experiments/kafka/kafka-broker-disk-failure/experiment.yaml b/experiments/kafka/kafka-broker-disk-failure/experiment.yaml new file mode 100644 index 0000000..b354d4e --- /dev/null +++ b/experiments/kafka/kafka-broker-disk-failure/experiment.yaml @@ -0,0 +1,118 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Detaching a persistent disk from a node/instance for kafka. +kind: ChaosExperiment +metadata: + name: kafka-broker-disk-failure + labels: + name: kafka-broker-disk-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + - apiGroups: + - "" + - "apps" + - "batch" + - "litmuschaos.io" + resources: + - "statefulsets" + - "secrets" + - "jobs" + - "pods/log" + - "events" + - "pods" + - "pods/exec" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "create" + - "delete" + - "get" + - "list" + - "patch" + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/kafka/kafka-broker-disk-failure/kafka-broker-disk-failure-ansible-logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + - name: KAFKA_KIND + value: 'statefulset' + + - name: KAFKA_LIVENESS_STREAM + value: 'enabled' + + - name: KAFKA_LIVENESS_IMAGE + value: 'litmuschaos/kafka-client:ci' + + - name: KAFKA_CONSUMER_TIMEOUT + value: '30000' + + - name: TOTAL_CHAOS_DURATION + value: '15' + + - name: PROJECT_ID + value: '' + + - name: DISK_NAME + value: '' + + - name: ZONE_NAME + value: '' + + # GKE and AWS supported + - name: CLOUD_PLATFORM + value: 'GKE' + + - name: KAFKA_NAMESPACE + value: '' + + - name: KAFKA_LABEL + value: '' + + - name: KAFKA_BROKER + value: '' + + - name: KAFKA_INSTANCE_NAME + value: '' + + - name: KAFKA_REPLICATION_FACTOR + value: '' + + - name: KAFKA_SERVICE + value: '' + + - name: KAFKA_PORT + value: '' + + - name: ZOOKEEPER_NAMESPACE + value: '' + + - name: ZOOKEEPER_LABEL + value: '' + + - name: ZOOKEEPER_SERVICE + value: '' + + - name: ZOOKEEPER_PORT + value: '' + labels: + name: kafka-broker-disk-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: kafka-broker-disk-failure + mountPath: /tmp/ + diff --git a/experiments/kafka/kafka-broker-disk-failure/kafka-broker-disk-failure.chartserviceversion.yaml b/experiments/kafka/kafka-broker-disk-failure/kafka-broker-disk-failure.chartserviceversion.yaml new file mode 100644 index 0000000..1984037 --- /dev/null +++ b/experiments/kafka/kafka-broker-disk-failure/kafka-broker-disk-failure.chartserviceversion.yaml @@ -0,0 +1,42 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2019-11-15T10:28:08Z + name: kafka-broker-disk-failure + annotations: + categories: Kafka + vendor: Mayadata + support: https://app.slack.com/client/T09NY5SBT/CNXNB0ZTN +spec: + displayName: kafka-broker-disk-failure + categoryDescription: | + Detaching a persistent disk from a node/instance for kafka + keywords: + - Kubernetes + - K8S + - Disk + - Kafka + platforms: + - GKE + - konvoy + maturity: alpha + maintainers: + - name: ksatchit + email: karthik.s@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-ansible/tree/master/experiments/kafka/kafka-broker-disk-failure + - name: Documentation + url: https://v1-docs.litmuschaos.io/docs/kafka-broker-disk-failure/ + - name: Video + url: + icon: + - url: + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/kafka/kafka-broker-disk-failure/experiment.yaml diff --git a/experiments/kafka/kafka-broker-disk-failure/rbac.yaml b/experiments/kafka/kafka-broker-disk-failure/rbac.yaml new file mode 100644 index 0000000..6d685b7 --- /dev/null +++ b/experiments/kafka/kafka-broker-disk-failure/rbac.yaml @@ -0,0 +1,38 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: kafka-broker-disk-failure-sa + namespace: default + labels: + name: kafka-broker-disk-failure-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: kafka-broker-disk-failure-sa + labels: + name: kafka-broker-disk-failure-sa + app.kubernetes.io/part-of: litmus +rules: +- apiGroups: ["","litmuschaos.io","batch","apps"] + resources: ["pods","jobs","pods/log","events","pods/exec","statefulsets","secrets","chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: kafka-broker-disk-failure-sa + labels: + name: kafka-broker-disk-failure-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: kafka-broker-disk-failure-sa +subjects: +- kind: ServiceAccount + name: kafka-broker-disk-failure-sa + namespace: default + diff --git a/experiments/kafka/kafka-broker-pod-failure/engine.yaml b/experiments/kafka/kafka-broker-pod-failure/engine.yaml new file mode 100644 index 0000000..5a8b305 --- /dev/null +++ b/experiments/kafka/kafka-broker-pod-failure/engine.yaml @@ -0,0 +1,74 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: kafka-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + #ex. values: ns1:name=percona,ns2:run=nginx + auxiliaryAppInfo: '' + appinfo: + appns: 'default' + applabel: 'app=cp-kafka' + appkind: 'statefulset' + chaosServiceAccount: kafka-broker-pod-failure-sa + experiments: + - name: kafka-broker-pod-failure + spec: + components: + env: + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '60' + + # choose based on available kafka broker replicas + - name: KAFKA_REPLICATION_FACTOR + value: '3' + + # get via 'kubectl get pods --show-labels -n ' + - name: KAFKA_LABEL + value: 'app=cp-kafka' + + - name: KAFKA_NAMESPACE + value: 'default' + + # get via 'kubectl get svc -n ' + - name: KAFKA_SERVICE + value: 'kafka-cp-kafka-headless' + + # get via 'kubectl get svc -n ' + - name: KAFKA_PORT + value: '9092' + + # Recommended timeout for EKS platform: 60000 ms + - name: KAFKA_CONSUMER_TIMEOUT + value: '30000' # in milliseconds + + # ensure to set the instance name if using KUDO operator + - name: KAFKA_INSTANCE_NAME + value: '' + + - name: ZOOKEEPER_NAMESPACE + value: 'default' + + # get via 'kubectl get pods --show-labels -n ' + - name: ZOOKEEPER_LABEL + value: 'app=cp-zookeeper' + + # get via 'kubectl get svc -n + - name: ZOOKEEPER_SERVICE + value: 'kafka-cp-zookeeper-headless' + + # get via 'kubectl get svc -n + - name: ZOOKEEPER_PORT + value: '2181' + + # set chaos interval (in sec) as desired + - name: CHAOS_INTERVAL + value: '20' + + # pod failures without '--force' & default terminationGracePeriodSeconds + - name: FORCE + value: 'false' + \ No newline at end of file diff --git a/experiments/kafka/kafka-broker-pod-failure/experiment.yaml b/experiments/kafka/kafka-broker-pod-failure/experiment.yaml new file mode 100644 index 0000000..5fae21d --- /dev/null +++ b/experiments/kafka/kafka-broker-pod-failure/experiment.yaml @@ -0,0 +1,127 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Deleting a kafka broker pod +kind: ChaosExperiment +metadata: + name: kafka-broker-pod-failure + labels: + name: kafka-broker-pod-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for deriving the parent/owner details of the pod + - apiGroups: ["apps"] + resources: ["deployments","statefulsets"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name kafka-broker-pod-failure + command: + - /bin/bash + env: + + - name: KAFKA_KIND + value: 'statefulset' + + - name: KAFKA_LIVENESS_STREAM + value: 'enable' + + - name: KAFKA_LIVENESS_IMAGE + value: 'litmuschaos/kafka-client:latest' + + # Recommended timeout for EKS platform: 60000 ms + - name: KAFKA_CONSUMER_TIMEOUT + value: '30000' #in ms + + - name: TOTAL_CHAOS_DURATION + value: '15' + + - name: CHAOS_INTERVAL + value: '5' + + ## it defines the sequence of chaos execution for multiple target pods + ## supported values: serial, parallel + - name: SEQUENCE + value: 'parallel' + + - name: FORCE + value: 'true' + + - name: KAFKA_INSTANCE_NAME + value: '' + + - name: KAFKA_NAMESPACE + value: '' + + - name: KAFKA_LABEL + value: '' + + - name: KAFKA_BROKER + value: '' + + - name: KAFKA_REPLICATION_FACTOR + value: '' + + - name: KAFKA_SERVICE + value: '' + + - name: KAFKA_PORT + value: '' + + - name: ZOOKEEPER_NAMESPACE + value: '' + + - name: ZOOKEEPER_LABEL + value: '' + + - name: ZOOKEEPER_SERVICE + value: '' + + - name: ZOOKEEPER_PORT + value: '' + + ## env var that describes the library used to execute the chaos + ## default: litmus. Supported values: litmus + - name: LIB + value: 'litmus' + + labels: + name: kafka-broker-pod-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest diff --git a/experiments/kafka/kafka-broker-pod-failure/kafka-broker-pod-failure.chartserviceversion.yaml b/experiments/kafka/kafka-broker-pod-failure/kafka-broker-pod-failure.chartserviceversion.yaml new file mode 100644 index 0000000..e3702e0 --- /dev/null +++ b/experiments/kafka/kafka-broker-pod-failure/kafka-broker-pod-failure.chartserviceversion.yaml @@ -0,0 +1,45 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2019-11-15T10:28:08Z + name: kafka-broker-pod-failure + version: 0.1.6 + annotations: + categories: Kafka + vendor: Mayadata + repository: https://github.com/litmuschaos/chaos-charts + support: https://app.slack.com/client/T09NY5SBT/CNXNB0ZTN +spec: + displayName: kafka-broker-pod-failure + categoryDescription: | + This chaos experiment kills (random or specified) kafka broker pods + keywords: + - Kubernetes + - K8S + - Pod + - Kafka + platforms: + - GKE + - EKS + - konvoy + maturity: alpha + maintainers: + - name: ksatchit + email: karthik.s@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/kafka/kafka-broker-pod-failure + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/kafka/kafka-broker-pod-failure/ + - name: Video + url: + icon: + - url: + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/kafka/kafka-broker-pod-failure/experiment.yaml diff --git a/experiments/kafka/kafka-broker-pod-failure/rbac.yaml b/experiments/kafka/kafka-broker-pod-failure/rbac.yaml new file mode 100644 index 0000000..64fd1db --- /dev/null +++ b/experiments/kafka/kafka-broker-pod-failure/rbac.yaml @@ -0,0 +1,67 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: kafka-broker-pod-failure-sa + namespace: default + labels: + name: kafka-broker-pod-failure-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: kafka-broker-pod-failure-sa + labels: + name: kafka-broker-pod-failure-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for deriving the parent/owner details of the pod + - apiGroups: ["apps"] + resources: ["deployments","statefulsets"] + verbs: ["list","get"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: kafka-broker-pod-failure-sa + labels: + name: kafka-broker-pod-failure-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: kafka-broker-pod-failure-sa +subjects: +- kind: ServiceAccount + name: kafka-broker-pod-failure-sa + namespace: default + diff --git a/experiments/kafka/kafka.chartserviceversion.yaml b/experiments/kafka/kafka.chartserviceversion.yaml new file mode 100644 index 0000000..8293a4a --- /dev/null +++ b/experiments/kafka/kafka.chartserviceversion.yaml @@ -0,0 +1,40 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2019-11-13T10:28:08Z + name: kafka + version: 0.1.4 + annotations: + categories: Kafka + chartDescription: Injects chaos on kafka components +spec: + displayName: Kafka Chaos + categoryDescription: > + Kafka is used for building real-time data pipelines and streaming apps. It is horizontally scalable, fault-tolerant, fast, + and runs in production in thousands of companies + experiments: + - name: kafka-broker-pod-failure + description: "" + keywords: + - Kubernetes + - K8S + - Kafka + - Disk + - Pod + maintainers: + - name: ksatchit + email: karthik.s@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + links: + - name: Kafka Website + url: http://kafka.apache.org/ + - name: Source Code + url: https://github.com/litmuschaos/litmus/tree/master/experiments/kafka + - name: Community Slack + url: https://app.slack.com/client/T09NY5SBT/CNXNB0ZTN + icon: + - url: + mediatype: + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/kafka/experiments.yaml diff --git a/experiments/kafka/kafka.package.yaml b/experiments/kafka/kafka.package.yaml new file mode 100644 index 0000000..e4c401d --- /dev/null +++ b/experiments/kafka/kafka.package.yaml @@ -0,0 +1,8 @@ +packageName: kafka +experiments: + - name: kafka-broker-pod-failure + CSV: kafka-broker-pod-failure.chartserviceversion.yaml + desc: "kafka-broker-pod-failure" + - name: kafka-broker-disk-failure + CSV: kafka-broker-disk-failure.chartserviceversion.yaml + desc: "kafka-broker-disk-failure" diff --git a/experiments/kube-aws/aws-az-chaos/aws-az-chaos.chartserviceversion.yaml b/experiments/kube-aws/aws-az-chaos/aws-az-chaos.chartserviceversion.yaml new file mode 100755 index 0000000..1632138 --- /dev/null +++ b/experiments/kube-aws/aws-az-chaos/aws-az-chaos.chartserviceversion.yaml @@ -0,0 +1,35 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + name: aws-az-chaos + version: 0.1.0 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: aws-az-chaos + categoryDescription: > + Execute aws-az chaos to detach the target zones from the load balancer + keywords: + - "zone" + - "load-balancer" + - "aws" + platforms: + - "AWS" + maturity: alpha + maintainers: + - name: oumkale + email: imkaleoum@gmail.com + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-python/tree/master/experiments/aws_az + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/aws/aws-az-chaos/ + icon: + - url: + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/kube-aws/aws-az-chaos/experiment.yaml diff --git a/experiments/kube-aws/aws-az-chaos/engine.yaml b/experiments/kube-aws/aws-az-chaos/engine.yaml new file mode 100755 index 0000000..a7afbbc --- /dev/null +++ b/experiments/kube-aws/aws-az-chaos/engine.yaml @@ -0,0 +1,27 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: aws-az-chaos +spec: + # It can be active/stop + engineState: 'active' + chaosServiceAccount: aws-az-chaos-sa + experiments: + - name: aws-az-chaos + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: '30' + - name: CHAOS_INTERVAL + value: '30' + #LOAD_BALANCER_NAME name of the load balancer + - name: LOAD_BALANCER_NAME + value: "" + #LOAD_BALANCER_ZONES can be multiple, provide it by comma separated + - name: LOAD_BALANCER_ZONES + value: "" + - name: LOAD_BALANCERNAME_ARN + value: "na" + - name: AWS_SHARED_CREDENTIALS_FILE + value: "/tmp/cloud_config.yml" diff --git a/experiments/kube-aws/aws-az-chaos/experiment.yaml b/experiments/kube-aws/aws-az-chaos/experiment.yaml new file mode 100755 index 0000000..921723b --- /dev/null +++ b/experiments/kube-aws/aws-az-chaos/experiment.yaml @@ -0,0 +1,76 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Execute aws-az chaos to detach the target zones from the load balancer +kind: ChaosExperiment +metadata: + name: aws-az-chaos + labels: + name: aws-az-chaos + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/py-runner:latest" + imagePullPolicy: Always + args: + - -c + - python3 -u experiment -name aws-az-chaos + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '30' + - name: CHAOS_INTERVAL + value: '30' + - name: LIB + value: 'litmus' + - name: LOAD_BALANCER_NAME + value: '' + - name: LOAD_BALANCER_ZONES + value: '' + - name: LOAD_BALANCERNAME_ARN + value: 'na' + - name: AWS_SHARED_CREDENTIALS_FILE + value: "/tmp/cloud_config.yml" + - name: RAMP_TIME + value: '' + labels: + name: aws-az-chaos + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: cloud-secret + mountPath: /tmp/ diff --git a/experiments/kube-aws/aws-az-chaos/rbac.yaml b/experiments/kube-aws/aws-az-chaos/rbac.yaml new file mode 100755 index 0000000..3d2284c --- /dev/null +++ b/experiments/kube-aws/aws-az-chaos/rbac.yaml @@ -0,0 +1,60 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: aws-az-chaos-sa + namespace: default + labels: + name: aws-az-chaos-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: Role +metadata: + name: aws-az-chaos-sa + namespace: default + labels: + name: aws-az-chaos-sa + app.kubernetes.io/part-of: litmus +rules: +# Create and monitor the experiment & helper pods +- apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] +# Performs CRUD operations on the events inside chaosengine and chaosresult +- apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] +# Fetch configmaps & secrets details and mount it to the experiment pod (if specified) +- apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] +# Track and get the runner, experiment, and helper pods log +- apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] +# for configuring and monitor the experiment job by the chaos-runner pod +- apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] +# for creation, status polling and deletion of litmus chaos resources used within a chaos workflow +- apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: RoleBinding +metadata: + name: aws-az-chaos-sa + namespace: default + labels: + name: aws-az-chaos-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: aws-az-chaos-sa +subjects: +- kind: ServiceAccount + name: aws-az-chaos-sa + namespace: default \ No newline at end of file diff --git a/experiments/kube-aws/ebs-loss-by-id/ebs-loss-by-id.chartserviceversion.yaml b/experiments/kube-aws/ebs-loss-by-id/ebs-loss-by-id.chartserviceversion.yaml new file mode 100644 index 0000000..9946442 --- /dev/null +++ b/experiments/kube-aws/ebs-loss-by-id/ebs-loss-by-id.chartserviceversion.yaml @@ -0,0 +1,43 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2020-10-28T10:28:08Z + name: ebs-loss-by-id + version: 0.1.0 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: ebs-loss-by-id + categoryDescription: | + EBS Loss By ID contains chaos to disrupt state of infra resources. The experiment can induce ebs volume loss against specified application for the give EBS Volume(s). + - Causes ebs volume loss from node or ec2 instance for a certain chaos interval from total chaos duration. + - Tests deployment sanity (replica availability & uninterrupted service) and recovery workflows of the application pod + keywords: + - EBS + - Volume + - AWS + platforms: + - AWS + maturity: alpha + chaosType: infra + maintainers: + - name: Udit Gaurav + email: uditgaurav@mayadata.io + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/kube-aws/ebs-loss-by-id + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/aws/ebs-loss-by-id/ + - name: Video + url: + icon: + - url: + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/kube-aws/ebs-loss-by-id/experiment.yaml diff --git a/experiments/kube-aws/ebs-loss-by-id/engine.yaml b/experiments/kube-aws/ebs-loss-by-id/engine.yaml new file mode 100644 index 0000000..cdb3010 --- /dev/null +++ b/experiments/kube-aws/ebs-loss-by-id/engine.yaml @@ -0,0 +1,28 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + engineState: 'active' + chaosServiceAccount: ebs-loss-by-id-sa + experiments: + - name: ebs-loss-by-id + spec: + components: + env: + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '30' + + # set chaos duration (in sec) as desired + - name: CHAOS_INTERVAL + value: '30' + + # set target ebs volume ID + - name: EBS_VOLUME_ID + value: '' + + # provide the region name of the instance + - name: REGION + value: '' diff --git a/experiments/kube-aws/ebs-loss-by-id/experiment.yaml b/experiments/kube-aws/ebs-loss-by-id/experiment.yaml new file mode 100644 index 0000000..143caf4 --- /dev/null +++ b/experiments/kube-aws/ebs-loss-by-id/experiment.yaml @@ -0,0 +1,88 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Detaching an ebs volume from ec2 instance. +kind: ChaosExperiment +metadata: + name: ebs-loss-by-id + labels: + name: ebs-loss-by-id + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name ebs-loss-by-id + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '30' + + - name: CHAOS_INTERVAL + value: '30' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + - name: EBS_VOLUME_ID + value: '' + + - name: REGION + value: '' + + - name: SEQUENCE + value: 'parallel' + + # Provide the path of aws credentials mounted from secret + - name: AWS_SHARED_CREDENTIALS_FILE + value: '/tmp/cloud_config.yml' + + # provide the LIB + # only litmus supported + - name: LIB + value: 'litmus' + + labels: + name: ebs-loss-by-id + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: cloud-secret + mountPath: /tmp/ diff --git a/experiments/kube-aws/ebs-loss-by-id/rbac.yaml b/experiments/kube-aws/ebs-loss-by-id/rbac.yaml new file mode 100644 index 0000000..52a1c57 --- /dev/null +++ b/experiments/kube-aws/ebs-loss-by-id/rbac.yaml @@ -0,0 +1,62 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ebs-loss-by-id-sa + namespace: default + labels: + name: ebs-loss-by-id-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: ebs-loss-by-id-sa + labels: + name: ebs-loss-by-id-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: ebs-loss-by-id-sa + labels: + name: ebs-loss-by-id-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: ebs-loss-by-id-sa +subjects: +- kind: ServiceAccount + name: ebs-loss-by-id-sa + namespace: default diff --git a/experiments/kube-aws/ebs-loss-by-tag/ebs-loss-by-tag.chartserviceversion.yaml b/experiments/kube-aws/ebs-loss-by-tag/ebs-loss-by-tag.chartserviceversion.yaml new file mode 100644 index 0000000..95eca97 --- /dev/null +++ b/experiments/kube-aws/ebs-loss-by-tag/ebs-loss-by-tag.chartserviceversion.yaml @@ -0,0 +1,43 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2021-05-15T10:28:08Z + name: ebs-loss-by-tag + version: 0.1.0 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: ebs-loss-by-tag + categoryDescription: | + EBS Loss By Tag contains chaos to disrupt state of infra resources. The experiment can induce ebs volume loss against specified application for given volume tag. + - Causes ebs volume loss by tag from node or ec2 instance for certain chaos interval from total chaos duration. + - Tests deployment sanity (replica availability & uninterrupted service) and recovery workflows of the application pod + keywords: + - EBS + - Volume + - AWS + platforms: + - AWS + maturity: alpha + chaosType: infra + maintainers: + - name: Udit Gaurav + email: uditgaurav@mayadata.io + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/kube-aws/ebs-loss-by-tag + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/aws/ebs-loss-by-tag/ + - name: Video + url: + icon: + - url: + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/kube-aws/ebs-loss-by-tag/experiment.yaml diff --git a/experiments/kube-aws/ebs-loss-by-tag/engine.yaml b/experiments/kube-aws/ebs-loss-by-tag/engine.yaml new file mode 100644 index 0000000..a9212ef --- /dev/null +++ b/experiments/kube-aws/ebs-loss-by-tag/engine.yaml @@ -0,0 +1,32 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + engineState: 'active' + chaosServiceAccount: ebs-loss-by-tag-sa + experiments: + - name: ebs-loss-by-tag + spec: + components: + env: + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '30' + + - name: CHAOS_INTERVAL + value: '30' + + # provide EBS volume tag attached to the given instance + # it'll be in form of key:value (ex: 'team:devops') + - name: EBS_VOLUME_TAG + value: '' + + # provide the region name of the instance + - name: REGION + value: '' + + - name: VOLUME_AFFECTED_PERC + value: '' + \ No newline at end of file diff --git a/experiments/kube-aws/ebs-loss-by-tag/experiment.yaml b/experiments/kube-aws/ebs-loss-by-tag/experiment.yaml new file mode 100644 index 0000000..54a4710 --- /dev/null +++ b/experiments/kube-aws/ebs-loss-by-tag/experiment.yaml @@ -0,0 +1,90 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Detaching an ebs volume from ec2 instance. +kind: ChaosExperiment +metadata: + name: ebs-loss-by-tag + labels: + name: ebs-loss-by-tag + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name ebs-loss-by-tag + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '30' + + - name: CHAOS_INTERVAL + value: '30' + + - name: RAMP_TIME + value: '' + + - name: EBS_VOLUME_TAG + value: '' + + - name: REGION + value: '' + + - name: SEQUENCE + value: 'parallel' + + - name: VOLUME_AFFECTED_PERC + value: '' + + # Provide the path of aws credentials mounted from secret + - name: AWS_SHARED_CREDENTIALS_FILE + value: '/tmp/cloud_config.yml' + + # provide the LIB + # only litmus supported + - name: LIB + value: 'litmus' + + labels: + name: ebs-loss-by-tag + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: cloud-secret + mountPath: /tmp/ diff --git a/experiments/kube-aws/ebs-loss-by-tag/rbac.yaml b/experiments/kube-aws/ebs-loss-by-tag/rbac.yaml new file mode 100644 index 0000000..52ad320 --- /dev/null +++ b/experiments/kube-aws/ebs-loss-by-tag/rbac.yaml @@ -0,0 +1,62 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ebs-loss-by-tag-sa + namespace: default + labels: + name: ebs-loss-by-tag-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: ebs-loss-by-tag-sa + labels: + name: ebs-loss-by-tag-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: ebs-loss-by-tag-sa + labels: + name: ebs-loss-by-tag-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: ebs-loss-by-tag-sa +subjects: +- kind: ServiceAccount + name: ebs-loss-by-tag-sa + namespace: default diff --git a/experiments/kube-aws/ec2-terminate-by-id/ec2-terminate-by-id.chartserviceversion.yaml b/experiments/kube-aws/ec2-terminate-by-id/ec2-terminate-by-id.chartserviceversion.yaml new file mode 100644 index 0000000..b8de45f --- /dev/null +++ b/experiments/kube-aws/ec2-terminate-by-id/ec2-terminate-by-id.chartserviceversion.yaml @@ -0,0 +1,42 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2020-10-28T10:28:08Z + name: ec2-terminate-by-id + version: 0.1.0 + annotations: + categories: Kubernetes + vendor: Mayadata + support: https://app.slack.com/client/T09NY5SBT/CNXNB0ZTN +spec: + displayName: ec2-terminate-by-id + categoryDescription: | + This experiment causes termination of an EC2 instance for a certain chaos duration. + - Causes termination of an EC2 instance provided by instance ID before bringing it back to running state after the specified chaos duration. + - It helps to check the performance of the application on the ec2 instance. + keywords: + - EC2 + - AWS + platforms: + - AWS + maturity: alpha + chaosType: infra + maintainers: + - name: Udit Gaurav + email: uditgaurav@mayadata.io + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/kube-aws/ec2-terminate-by-id + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/aws/ec2-terminate-by-id/ + - name: Video + url: + icon: + - url: + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/kube-aws/ec2-terminate-by-id/experiment.yaml diff --git a/experiments/kube-aws/ec2-terminate-by-id/engine.yaml b/experiments/kube-aws/ec2-terminate-by-id/engine.yaml new file mode 100644 index 0000000..efceae8 --- /dev/null +++ b/experiments/kube-aws/ec2-terminate-by-id/engine.yaml @@ -0,0 +1,33 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + engineState: 'active' + chaosServiceAccount: ec2-terminate-by-id-sa + experiments: + - name: ec2-terminate-by-id + spec: + components: + env: + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '30' + + # set interval duration (in sec) as desired + - name: CHAOS_INTERVAL + value: '30' + + # Instance ID of the target ec2 instance + # Multiple IDs can also be provided as comma separated values ex: id1,id2 + - name: EC2_INSTANCE_ID + value: '' + + # provide the region name of the instance + - name: REGION + value: '' + + # enable it if the target instance is a part of self-managed nodegroup. + - name: MANAGED_NODEGROUP + value: 'disable' \ No newline at end of file diff --git a/experiments/kube-aws/ec2-terminate-by-id/experiment.yaml b/experiments/kube-aws/ec2-terminate-by-id/experiment.yaml new file mode 100644 index 0000000..003f18d --- /dev/null +++ b/experiments/kube-aws/ec2-terminate-by-id/experiment.yaml @@ -0,0 +1,98 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Stopping an EC2 instance identified by ID. +kind: ChaosExperiment +metadata: + name: ec2-terminate-by-id + labels: + name: ec2-terminate-by-id + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name ec2-terminate-by-id + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '30' + + - name: CHAOS_INTERVAL + value: '30' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # enable it if the target instance is a part of self-managed nodegroup. + - name: MANAGED_NODEGROUP + value: 'disable' + + # Instance ID of the target ec2 instance + # Multiple IDs can also be provided as comma separated values ex: id1,id2 + - name: EC2_INSTANCE_ID + value: '' + + - name: REGION + value: '' + + - name: SEQUENCE + value: 'parallel' + + # Provide the path of aws credentials mounted from secret + - name: AWS_SHARED_CREDENTIALS_FILE + value: '/tmp/cloud_config.yml' + + # provide the LIB + # only litmus supported + - name: LIB + value: 'litmus' + + labels: + name: ec2-terminate-by-id + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: cloud-secret + mountPath: /tmp/ diff --git a/experiments/kube-aws/ec2-terminate-by-id/rbac.yaml b/experiments/kube-aws/ec2-terminate-by-id/rbac.yaml new file mode 100644 index 0000000..0f7fb1c --- /dev/null +++ b/experiments/kube-aws/ec2-terminate-by-id/rbac.yaml @@ -0,0 +1,66 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ec2-terminate-by-id-sa + namespace: default + labels: + name: ec2-terminate-by-id-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: ec2-terminate-by-id-sa + labels: + name: ec2-terminate-by-id-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: ec2-terminate-by-id-sa + labels: + name: ec2-terminate-by-id-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: ec2-terminate-by-id-sa +subjects: +- kind: ServiceAccount + name: ec2-terminate-by-id-sa + namespace: default \ No newline at end of file diff --git a/experiments/kube-aws/ec2-terminate-by-tag/ec2-terminate-by-tag.chartserviceversion.yaml b/experiments/kube-aws/ec2-terminate-by-tag/ec2-terminate-by-tag.chartserviceversion.yaml new file mode 100644 index 0000000..1caf610 --- /dev/null +++ b/experiments/kube-aws/ec2-terminate-by-tag/ec2-terminate-by-tag.chartserviceversion.yaml @@ -0,0 +1,42 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2021-04-15T10:28:08Z + name: ec2-terminate-by-tag + version: 0.1.0 + annotations: + categories: Kubernetes + vendor: Mayadata + support: https://app.slack.com/client/T09NY5SBT/CNXNB0ZTN +spec: + displayName: ec2-terminate-by-tag + categoryDescription: | + This experiment causes termination of an EC2 instance for a certain chaos duration. + - Causes termination of an EC2 instance using instance tags before bringing it back to running state after the specified chaos duration. + - It helps to check the performance of the application on the ec2 instance. + keywords: + - EC2 + - AWS + platforms: + - AWS + maturity: alpha + chaosType: infra + maintainers: + - name: Udit Gaurav + email: uditgaurav@mayadata.io + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/kube-aws/ec2-terminate-by-tag + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/aws/ec2-terminate-by-tag/ + - name: Video + url: + icon: + - url: + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/kube-aws/ec2-terminate-by-tag/experiment.yaml diff --git a/experiments/kube-aws/ec2-terminate-by-tag/engine.yaml b/experiments/kube-aws/ec2-terminate-by-tag/engine.yaml new file mode 100644 index 0000000..6ed309d --- /dev/null +++ b/experiments/kube-aws/ec2-terminate-by-tag/engine.yaml @@ -0,0 +1,37 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + engineState: 'active' + chaosServiceAccount: ec2-terminate-by-tag-sa + experiments: + - name: ec2-terminate-by-tag + spec: + components: + env: + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '30' + + # set interval duration (in sec) as desired + - name: CHAOS_INTERVAL + value: '30' + + # Instance Tag of the target ec2 instances + # ex: team:devops (key:value) + - name: INSTANCE_TAG + value: '' + + # provide the region name of the instance + - name: REGION + value: '' + + # enable it if the target instance is a part of self-managed nodegroup. + - name: MANAGED_NODEGROUP + value: 'disable' + + # Target the percentage of instance filtered from tag + - name: INSTANCE_AFFECTED_PERC + value: '' diff --git a/experiments/kube-aws/ec2-terminate-by-tag/experiment.yaml b/experiments/kube-aws/ec2-terminate-by-tag/experiment.yaml new file mode 100644 index 0000000..4356893 --- /dev/null +++ b/experiments/kube-aws/ec2-terminate-by-tag/experiment.yaml @@ -0,0 +1,100 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Stopping an EC2 instance identified by tag. +kind: ChaosExperiment +metadata: + name: ec2-terminate-by-tag + labels: + name: ec2-terminate-by-tag + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name ec2-terminate-by-tag + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '30' + + - name: CHAOS_INTERVAL + value: '30' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + - name: INSTANCE_TAG + value: '' + + # enable it if the target instance is a part of self-managed nodegroup. + - name: MANAGED_NODEGROUP + value: 'disable' + + - name: REGION + value: '' + + # Target the percentage of instance filtered from tag + - name: INSTANCE_AFFECTED_PERC + value: '' + + - name: SEQUENCE + value: 'parallel' + + # Provide the path of aws credentials mounted from secret + - name: AWS_SHARED_CREDENTIALS_FILE + value: '/tmp/cloud_config.yml' + + # provide the LIB + # only litmus supported + - name: LIB + value: 'litmus' + + labels: + name: ec2-terminate-by-tag + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: cloud-secret + mountPath: /tmp/ diff --git a/experiments/kube-aws/ec2-terminate-by-tag/rbac.yaml b/experiments/kube-aws/ec2-terminate-by-tag/rbac.yaml new file mode 100644 index 0000000..e03101d --- /dev/null +++ b/experiments/kube-aws/ec2-terminate-by-tag/rbac.yaml @@ -0,0 +1,66 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ec2-terminate-by-tag-sa + namespace: default + labels: + name: ec2-terminate-by-tag-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: ec2-terminate-by-tag-sa + labels: + name: ec2-terminate-by-tag-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: ec2-terminate-by-tag-sa + labels: + name: ec2-terminate-by-tag-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: ec2-terminate-by-tag-sa +subjects: +- kind: ServiceAccount + name: ec2-terminate-by-tag-sa + namespace: default \ No newline at end of file diff --git a/experiments/kube-aws/experiments.yaml b/experiments/kube-aws/experiments.yaml new file mode 100644 index 0000000..22918b0 --- /dev/null +++ b/experiments/kube-aws/experiments.yaml @@ -0,0 +1,462 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Stopping an EC2 instance identified by ID. +kind: ChaosExperiment +metadata: + name: ec2-terminate-by-id + labels: + name: ec2-terminate-by-id + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name ec2-terminate-by-id + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '30' + + - name: CHAOS_INTERVAL + value: '30' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # enable it if the target instance is a part of self-managed nodegroup. + - name: MANAGED_NODEGROUP + value: 'disable' + + # Instance ID of the target ec2 instance + # Multiple IDs can also be provided as comma separated values ex: id1,id2 + - name: EC2_INSTANCE_ID + value: '' + + - name: REGION + value: '' + + - name: SEQUENCE + value: 'parallel' + + # Provide the path of aws credentials mounted from secret + - name: AWS_SHARED_CREDENTIALS_FILE + value: '/tmp/cloud_config.yml' + + # provide the LIB + # only litmus supported + - name: LIB + value: 'litmus' + + labels: + name: ec2-terminate-by-id + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: cloud-secret + mountPath: /tmp/ + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Stopping an EC2 instance identified by tag. +kind: ChaosExperiment +metadata: + name: ec2-terminate-by-tag + labels: + name: ec2-terminate-by-tag + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + # for experiment to perform node status checks + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name ec2-terminate-by-tag + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '30' + + - name: CHAOS_INTERVAL + value: '30' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + - name: INSTANCE_TAG + value: '' + + # enable it if the target instance is a part of self-managed nodegroup. + - name: MANAGED_NODEGROUP + value: 'disable' + + - name: REGION + value: '' + + # Target the percentage of instance filtered from tag + - name: INSTANCE_AFFECTED_PERC + value: '' + + - name: SEQUENCE + value: 'parallel' + + # Provide the path of aws credentials mounted from secret + - name: AWS_SHARED_CREDENTIALS_FILE + value: '/tmp/cloud_config.yml' + + # provide the LIB + # only litmus supported + - name: LIB + value: 'litmus' + + labels: + name: ec2-terminate-by-tag + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: cloud-secret + mountPath: /tmp/ + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Execute aws-az chaos to detach the target zones from the load balancer +kind: ChaosExperiment +metadata: + name: aws-az-chaos + labels: + name: aws-az-chaos + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Namespaced + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/py-runner:latest" + imagePullPolicy: Always + args: + - -c + - python3 -u experiment -name aws-az-chaos + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '30' + - name: CHAOS_INTERVAL + value: '30' + - name: LIB + value: 'litmus' + - name: LOAD_BALANCER_NAME + value: '' + - name: LOAD_BALANCER_ZONES + value: '' + - name: LOAD_BALANCERNAME_ARN + value: 'na' + - name: AWS_SHARED_CREDENTIALS_FILE + value: "/tmp/cloud_config.yml" + - name: RAMP_TIME + value: '' + labels: + name: aws-az-chaos + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: cloud-secret + mountPath: /tmp/ + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Detaching an ebs volume from ec2 instance. +kind: ChaosExperiment +metadata: + name: ebs-loss-by-id + labels: + name: ebs-loss-by-id + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name ebs-loss-by-id + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '30' + + - name: CHAOS_INTERVAL + value: '30' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + - name: EBS_VOLUME_ID + value: '' + + - name: REGION + value: '' + + - name: SEQUENCE + value: 'parallel' + + # Provide the path of aws credentials mounted from secret + - name: AWS_SHARED_CREDENTIALS_FILE + value: '/tmp/cloud_config.yml' + + # provide the LIB + # only litmus supported + - name: LIB + value: 'litmus' + + labels: + name: ebs-loss-by-id + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: cloud-secret + mountPath: /tmp/ + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Detaching an ebs volume from ec2 instance. +kind: ChaosExperiment +metadata: + name: ebs-loss-by-tag + labels: + name: ebs-loss-by-tag + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name ebs-loss-by-tag + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '30' + + - name: CHAOS_INTERVAL + value: '30' + + - name: RAMP_TIME + value: '' + + - name: EBS_VOLUME_TAG + value: '' + + - name: REGION + value: '' + + - name: SEQUENCE + value: 'parallel' + + - name: VOLUME_AFFECTED_PERC + value: '' + + # Provide the path of aws credentials mounted from secret + - name: AWS_SHARED_CREDENTIALS_FILE + value: '/tmp/cloud_config.yml' + + # provide the LIB + # only litmus supported + - name: LIB + value: 'litmus' + + labels: + name: ebs-loss-by-tag + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + secrets: + - name: cloud-secret + mountPath: /tmp/ + +--- diff --git a/experiments/kube-aws/icons/aws-az-chaos.png b/experiments/kube-aws/icons/aws-az-chaos.png new file mode 100644 index 0000000000000000000000000000000000000000..fd09e34f6cd5c49336db1bb357ebf14d82201274 GIT binary patch literal 3152 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 LNkvXXu0mjf0VG17 literal 0 HcmV?d00001 diff --git a/experiments/kube-aws/icons/kube-aws.png b/experiments/kube-aws/icons/kube-aws.png new file mode 100644 index 0000000000000000000000000000000000000000..fd09e34f6cd5c49336db1bb357ebf14d82201274 GIT binary patch literal 3152 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 + kube-aws contains chaos to disrupt state of aws resources running part of kubernetes cluster + experiments: + - name: ec2-terminate-by-id + description: "" + - name: ec2-terminate-by-tag + description: "" + - name: ebs-loss-by-id + description: "" + - name: ebs-loss-by-tag + description: "" + - name: aws-az-chaos + description: "" + keywords: + - AWS + - EC2 + - EBS + - AZ + maintainers: + - name: ksatchit + email: karthik.s@mayadata.io + - name: oumkale + email: imkaleoum@gmail.com + links: + - name: Kubernetes Website + url: https://kubernetes.io + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/kube-aws + - name: Source Code + url: https://github.com/litmuschaos/litmus-python/tree/master/experiments/aws_az + - name: Kubernetes Slack + url: https://slack.kubernetes.io/ + icon: + - url: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/kube-aws/icons/kube-aws.png + mediatype: image/png + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/kube-aws/experiments.yaml diff --git a/experiments/kube-aws/kube-aws.package.yaml b/experiments/kube-aws/kube-aws.package.yaml new file mode 100644 index 0000000..db03f2e --- /dev/null +++ b/experiments/kube-aws/kube-aws.package.yaml @@ -0,0 +1,17 @@ +packageName: kube-aws +experiments: + - name: ec2-terminate-by-id + CSV: ec2-terminate-by-id.chartserviceversion.yaml + desc: "ec2-terminate-by-id" + - name: ec2-terminate-by-tag + CSV: ec2-terminate-by-tag.chartserviceversion.yaml + desc: "ec2-terminate-by-tag" + - name: ebs-loss-by-id + CSV: ebs-loss-by-id.chartserviceversion.yaml + desc: "ebs-loss-by-id" + - name: ebs-loss-by-tag + CSV: ebs-loss-by-tag.chartserviceversion.yaml + desc: "ebs-loss-by-tag" + - name: aws-az-chaos + CSV: aws-az-chaos.chartserviceversion.yaml + desc: "aws-az-chaos" diff --git a/experiments/kube-aws/rbac-admin.yaml b/experiments/kube-aws/rbac-admin.yaml new file mode 100644 index 0000000..f386c6c --- /dev/null +++ b/experiments/kube-aws/rbac-admin.yaml @@ -0,0 +1,35 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: chaos-admin + labels: + name: chaos-admin +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: chaos-admin + labels: + name: chaos-admin +rules: +- apiGroups: ["","apps","batch","extensions","litmuschaos.io","openebs.io","storage.k8s.io"] + resources: ["chaosengines","chaosexperiments","chaosresults","configmaps","cstorpools","cstorvolumereplicas","events","jobs","persistentvolumeclaims","persistentvolumes","pods","pods/exec","pods/log","secrets","storageclasses","chaosengines","chaosexperiments","chaosresults","configmaps","cstorpools","cstorvolumereplicas","daemonsets","deployments","events","jobs","persistentvolumeclaims","persistentvolumes","pods","pods/eviction","pods/exec","pods/log","replicasets","secrets","services","statefulsets","storageclasses"] + verbs: ["create","delete","get","list","patch","update"] +- apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list","patch"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: chaos-admin + labels: + name: chaos-admin +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: chaos-admin +subjects: +- kind: ServiceAccount + name: chaos-admin + namespace: default diff --git a/experiments/longhorn/experiments.yaml b/experiments/longhorn/experiments.yaml new file mode 100644 index 0000000..e69de29 diff --git a/experiments/longhorn/icons/longhorn.png b/experiments/longhorn/icons/longhorn.png new file mode 100644 index 0000000000000000000000000000000000000000..d4fd9c11ce8211dbf8d2e36b52379c31c8c4ed0c GIT binary patch literal 2263 zcmbW3Sv-^t8;2j&_%z0ru}0ZqWGQQfmpl<;YiJtTrFRfgF-*u3Gn9Q|giLzuWM4j6 zvc}jAQAv>{hDf}VHRkR29d-Pj{O|jBU-!{<^nZ-8GU0)X!vO%`L7N)c000N(_nyXe z_;)Zt2aGR}9w99^jG*IHc1j7Xd8QgVqYzrcE+`P#PG=h((L*o8*eVz7O++yv~f~ zxBAglH#1+C^-eNoz7c3Gx?wNTrghmX(cB*Vumkrzg45KkZ@k^!QTqf zM&Aska=rrem}drvca7}*CF9m7X>&OduXSDO#b0;~DA>|>o7f>*bqnUJLL|;qejQH@ zqt9~hn10NLuqVdygNIWDK*z#e3zYk1Q7N8{ z&ZLXS_jmTTB!o-vti?=mC)}wR*9(t-{-UanclAg8`mc}+giG|!Yis1?kyU}YnmRzz zfOo`-FKVk2kPNq|-PiktU)XYDen|M9n7;T9l<2}Epj!@uA;cVHu=50^@AWtldUl>J zsO_Wj=CI|78}=$eYlf`rF)g~hN%DcyWZ$`Yzut$-6AIu_^s*sc@{OH-x=H@>?k9i9 zD%d~17B{F+_a*;CRt|rN+o|kyY6i z^7L+6TV*IWob|_ssv}wlm2LCFKMd4VktXQS8dx~-+0NO)@Oh2YXXTzj`jEeb$JuzV zgD`H(Nm3bnu*A@9URG|374_u8U&dWltz=HS1oP5K0WCZ;gE0$4&Z&&57n(6|{QPT7 zx9eWOy>mTecj5&9UPxm_(bR^8p^tMvs7!#a#s%<1ov6`8Kl>SR*)k>5{D$Db&~SdU zqcl<{<5^^7b_{wHt9ebpz+KIH=iY^p?L|ZAKXBHE_NvkHrV9DU0e(?@Q2GK(4N9CI zWQonlUyFFj+=!=&$zAYB9lf_m(!_r*kF#o{zdoldiS6yubEUe9^7lSGEg zY(B$AcI9OY1N~IvL7Mgu+}qM#W})$hwF9$<=@-qXlpl)hH-O8ccRFpqy|n3WG$=M= zRyC;)M3J*JCDjcyZY6rCE2B)D8DDlBP7 zz~1J1CR+YfBxs(?M$!x+h!ykgLpMGP=)qt#5z*B?k8h2 z)9Q~944So8-gJ?KqRKtCE1x9M7li^-RY7v4fffnpm@6oEsp-zJ$nrD~ZHk)~*cgXQ zX?cLr`G_$`NfUEzh#*xzP-?WVj;f9|O+bnhT0ohdyaa8ppmlWCeZbS z7T**C6YQuAOFnfyX)!^OI& zZ^qd4NmW658;;6VLK>AOw$-9)`zsPET-|3l^>3dB8$X(n?N7Zwb-a8i2a|t^r}9-- zL)?&?l&ieArX-(AlkXC%(6ML~r+#+AXGPoxAE$PplF7adWJXt-HVXl}Xh-95pi3YJoEogg&W0QCl*9@65wP+HgK@ z@)!F=01YX1CiOkL-lxJg)Ed^q{k7RRXR(M91Ll*yuhpt$#;@dJ6rqDvYKPUMXz(j} zs^hvgf5LA%rKxSH+sY589@`DTkDYh!mcSIHGV0xwQiTotAN_t1?tZng%th8-R>UhE zx7Z7okRY4E#{;V_yloYOg&&1R=b96u*E$@BnVW%JzhESFZ$(f_iGp4Am=Jl2az}Y)0AcSh z$l-3i7q)i9uI%b6_=nd&oc=%OU1_YJPHKtxMU|k z<%?39$;e<-Yu;&Xn>|7e6j{VY@^Z)+q~z|)*wa&jH@nRYu|{A}$S>TiKEyR%OS3pe zQ|egC2>PEks`-1ePx3oh;JSyx_GoDFB!*V1CuF{;0t3V=4YGAajMBmV`2 CQb5`O literal 0 HcmV?d00001 diff --git a/experiments/longhorn/longhorn.chartserviceversion.yaml b/experiments/longhorn/longhorn.chartserviceversion.yaml new file mode 100644 index 0000000..c1ae23b --- /dev/null +++ b/experiments/longhorn/longhorn.chartserviceversion.yaml @@ -0,0 +1,32 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2020-03-17T10:28:08Z + name: longhorn + version: 0.0.2 + annotations: + categories: longhorn + chartDescription: Injects chaos on longhorn components +spec: + displayName: Longhorn Chaos + categoryDescription: > + Longhorn is a distributed block storage system for Kubernetes + experiments: + keywords: + - Kubernetes + - Longhorn + maintainers: + - name: ksatchit + email: karthik.s@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + links: + - name: Longhorn + url: https://rancher.com/project-longhorn-now-available-kubernetes/ + - name: Documentation + url: https://docs.rancher.cn/longhorn/#current-status + icon: + - url: + mediatype: + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/longhorn/experiments.yaml diff --git a/experiments/longhorn/longhorn.package.yaml b/experiments/longhorn/longhorn.package.yaml new file mode 100644 index 0000000..e37fbdb --- /dev/null +++ b/experiments/longhorn/longhorn.package.yaml @@ -0,0 +1,2 @@ +packageName: longhorn +experiments: \ No newline at end of file diff --git a/experiments/mongodb/experiments.yaml b/experiments/mongodb/experiments.yaml new file mode 100644 index 0000000..e69de29 diff --git a/experiments/mongodb/icons/mongodb.png b/experiments/mongodb/icons/mongodb.png new file mode 100644 index 0000000000000000000000000000000000000000..ab6378ff5096920216db042733a9f42976cb27e2 GIT binary patch literal 23291 zcmeGDRaD$Tvp0+m?j*rA5Zv7-1PCsJyE}vXKuGX}1lQp1u7g8xx53@r0|W^EO`dO` zcfU91Vqct#v(}!qSj>v zkPc125%H@z;nV6s6Uz82EV4E)znonY*LNi9=WSO$|ytcyIG|fWs zkUG)ehR3u@^mM1QgM}JJqa;b`JiF7$reRu{=Pz{ye zTll1OK}sSP&W;>rmd@r@9NvyD@YwS zL0ljgNh`3eoR6E8hL5tQg^#_3uqBPy2h8{0B5($dRvu>5-i{7V?jqizH2>i%0)PMS zYfc*K{|xc47p2h!sZvWiyIE25aqw|)u}gc~LU?FCU{b$#v$Pgbmy-D}7VuA^G++-8 z7ZFZQFE1|+FJ2C3HyciFVPRoTE*?%E9(MQ$cK1(C9%kO`PVTh-Sp2^{q^#U6+-zMu zY@MB`|M4_4clPuUrJ;e-ssD@lKLz|B?oRIiB?P!QIR8;NxjDEv|L@@*w$}e&hX14d z_wauYi>TUqTRG@T**aP|xx=R*O2f+~^dDybP1XCqsodQEq5k6}BJXHsW2Iwj=>h)l z$NrljXJu;xhOdP8|9(Wp&DIJogMX_PrQxRG{3l7y{}Lr!Go1fNHUH%E|NGbf{>cAG z#{Vm>{}tE&NCN+(!T-Cv{#RW8BMJPE2LJEw`u{I+Vg5I`vvPtXIxjeMlN$`6fWtmy z_mA?L=9pP6oqQ;T+!?T*z zRg0|Om7l#J-EX3vT*l|0Fc{7KyPh+iylDi?EpF3=GOI=FY~EXBIjOV`IM%b3c-ms* z%f0Ds=V+$tWFx{v$p%<%st@Yq0OFBL13vC)OgywD(Y;(}J+q<#l3KIBeq1QF=m7b! zc~<_N*rh6SFL9^0#%WqX38)O`ANP)%FLejK7(Rz)j~9&pOyC!vO)6z56G;-$QJ(|6 z;V9y<8ctwuQS-z|VAd!EfKuR}39{jDl~NG-;3Q^^0QlS5U9QO2xs^e1VjKcEy{sJP zA1MS*;jwbJQjmlX*SiF;ANWLxWbV`-8BU8O`IrCK@A=&=o3On3$2cs9c`lzMRV2wA zeC5Hx5`-B4VOS_cWd6^1L1lr64xU&RCMJ_cAsct0>v${7HLhmVqQu>dW&5p~R)%7R zec*h64Eo`vG$ZNA`$Q4qLY|v6_%h~ms}L@4UmkB+hMRX7&RnjH`Dxbj6i{{MCNvXx z&Gxs_W$(}ZBTY0j_FtZFMTYk?`frPJ)301PKtu(a1pY1im^@|G;7Klvh%QgghuZ0p zUnfc1)CUNwzNZE2dPu;RzY)1N%t zdt0bs?mF>FdWXNV0GTdv^>;VYiYyW6m2SflinU^X4h0vLeHLOXf@^AB% zwGU^s)gj$<;hOs>HTskTu~4CI1J>)leH(4E1XZr#7J!POM!)XCwRQtZVG!aKwdK@r z5Agw4Q(Fd89=9h@9??AOo)u2}!k4}~2e_#{2 z0m=wVQwYh&EnovjUH$J`^>RNO!IU6l$)1u=Y*+xcwNznK`qiNM`Avb;n{CD4Q$m1B z{AqVr4Zd(1)-F2IS0~9oLuB|>6>_*w73wqrMF93tz?_5N<^hhTTuN{*R$J*=31WpX z8u0rvWzuupYI_4!u*9|q_opN*#X7Foz#(_KQ7bKgAiX&L8|rJ4XA;6rrkrXAEPg)- z{jkPHM55~&2Yd~fO?b$VC&L8_qit#JBfv_*ha_9axP(|ldJj6(qPdNOXci_e2Bf^N zxsLUd=EQFU_%q1H(`y;WS#RoBAVWK7rPz(ebD2=>X;+`j+Mw26~st=}!ypTJ9c^MPMS^OlgEPu1`_<-hSYgANpC7ZwV#I zJA0*at=qK*QZ5q0`9cc~dYTOw@QY}e43x9oDF6XoN||}~OtpA`>}*H#*+u%WW>6KuOPV0~G)=rj1TD z=`<~bt$D{L#q86Yi?G7@D(uHO9+q%WpjHxhTmlRSFU>b`S<5=q+I6hGVv7VZ%xMgr z7^f9;_o$3FyeeL-xkyg7#s^r|BjZbWL$LeMr{~mmRAJdg-%;|mkSptEtX_fu<}^kZ zAbgU5S1V!VUlA9jD%+*8S4j>$*(kH=aeBKKlD!=a95o~7AJeI}M>+D2GJRT-5xK3d z&Jr>%Z}-!DtDyJ+iiNB;X z-to6i^(`qp!lsvk1h1^j9I(Bey}9dA*K;Mn#M<1y=8Tvc=T;o8_+vqe!-1atB)HSyhog) zm*XA=5F1gNqXotp)tT|L39*xFuZ9@ana(Z&0LQrxYROu47IzLl+QC|NIX125Rrg^C zzI{z!q7c~2y!^(&autvp0vKWy2BH};Z~kUyl4k$@{G#!4w5ZM>)MnXQrt#UOM9<1* zYw%O&D8!-7it{i2y{u-Mj%Z&TA89KQ@#!mF% zgNvI3FXzV70J8G)?P8e-*#&RH>cHdAC-2SA5!V(5 z=4!%G+cm5YcrnOe{wVU|j?&!c(x@f*cC2jF!1(1eEBgq$jitw1CTfAe?VDODFkK)G1i5Mq5YZ{jOV0TvImi z2WmK01hEE&?`t`!0v7qn#~N{>9rcJEU$vDtR;bQTI0CVHiix_qSIoo~3g)LWf#j(0 zoLA!yHmBDHX$;jMACCXbb|gDO;?#b|B2;karPYNyOT^@I{>Gvf9YECIxil+4#)zY` zZkJ$R+)=)DIvs{)xP7EOyk+I}OfLKS;PRXxW^r6% zC(4ipcFdL>*QU()t-%#!l}qEt?5O^q9ZXeAr`R;ixG8WZPGx0Fy2&}EtkfXZhEYsPmstJn7{So+spL}-ilG@ zrdzp8$4=Lb93{I({*$BNE4+BkoiaRGGQ1E8^QwgrY;H z-wHejcj9L!Wr9KvM>xunEDP)RYN^*HQ5jQx5ZFKHHdqgP)CuunUaL%c``F3{Gpvo%Zrifl^M6 z_mn4N!~;#<>T0aoi(n@;NM5 zK~vWI&?O4AyEL9|AFYnlQcg1ol)#QUB0;}k-7NmXve#Bx&9TGzfy=|jZ@=Yf?YzR2 zt0>$@U7;9|&>p!$x_Vo=DPWe+<(lyez(+jqZoKwmTZD<+Z+~o z`xgPRc~b#FIBJv_6YWXS$Sif5o87s%jPkyBc5eGRH(jMN`N0-4nA$~<%p5K|*_5tx z>V{O6sUv|CB8WC%tUtIHj2H1(Fe11chBDx)+Q&THKmY#NPn;lI+R}zleQ&xHfR3ow zI%Q_zXQV`D$nsi40LumVaz#4+@&(m`_S@C>A|{H8ca4of-4b0ED$@Xgev&2SaCije zoa8N!@r?fJ^1**-RsVM+i0AEoJwVlc;&;ZicZ+xkYvbkEepNeq0U{4Z!~>6@;$cKQ zQkqfC?;|SXt-s+GI}kVBj*d^eQTKap>7D%~lCz@H@JLseFGpe}YARq)@n$=P7iwEw z$3+c%Zi|SY7-{l0mUzfN1W}_{#-}VpObsztZA{wLh^6qFE*iqG#IiQG{N_-vEFxyYcJaGR`TDxP~#pUr6>HaGfQD3DR?z==| zMT>0-4B`paYSzRSYVPK|pB?G6FUknV>+4dRb9Uuv&s_bmEq*w<+OLs#d^?xl#LXP_ zcYxPb_{q7=u5E9B>@NTWNO55&jOpt*fScUTjdlPCUp0V;wOY$WTkUQ{c<$Ue_m63- zh9Vh$@$3nvu!Yqx>F8|x7QU63Gq?LmrzzKjeN0t*1IM;46?4U0&va#hmvEC0r^8!1 z;zYE&6UYBFQU43oR}AYxP0J`D*=RDHkxxS%iRzB>JFX1>-PR!zXrZQgnd(V4L4yU^{ zs-XaEb^2T>(*3W9s-7=UqB?|b;>-w>`<&T|{>f0-9fiFWr9C<5SJtH4?z-kFF1BCDaY^?BVRf; z(QDh&WN&*M!=msvPHdPWwJ2UBbaSHel9yA&0C(^2rRPbPshh33io}kF@0ULG&2%}? zej^tHcFt{rEY)QuZik)rx^8%n%*Q%WJWGkj;U3h;R#6lZJP&JFx+=;6UEzct6mE+M zc}4BEq$Qmw?TUit)jtcb{9Q!A^>eAh8dVxQF}FQi)hZ|$L!W_5RAv*5(<-(YuYIuQ zVGlkcOkPN5Rh=$8d?zpchg4M3>7d`>7BjHP>11~N+nOo)nhh~h!oLyF2JZG*)NIuTE&j(<>JfhP z!c^By-4+t68)*s=;48egJfDb&RW@>WHPV#RtMr?5`Mt*@EvYxkww%rMbWQZ@w!^mr zYZO2o&*R;`cw=4P|EIE}sL{>T>qV>(jKj6u))5-q(faM9YtjCBFiC3l%qsuEIico^yNpv& z`9?tTsly~oQG$>CdnXD~fx`5wNVz(Wz&w#>&&iJe~i8zxBwC5&kf$K&DT+=0UJ+Q~@ z!VZG~2yYR`Wx{BsE;zwn{gw&*o9t*zgel_{M&Nyk`MlIy*Y_vQ3F-?`>{?>(6llbp zzn*c>6=S>RX4ZKxjuf3MajkGaJR!vX}k#winLv)dxUmQE#I5=ne< z0XD8|aYu;L{&Eo^-?~8lAvhP?&e*{Y+V5!u`$9fi)6}=?IbY4Oq#zdF73MYX`rE7V zW0z7jp9ZgFJ=8BSP$D}dn#0+r^oQu0=K|Dh*744=uYP~)3iLCF-;TXxz?}@YJhkEv z?~v2bu*6$5v5wH0VG%aQ_oJNRfVI8z3#}Y8a_Er^-KCVpWf;^yi+`WTsA4KM51(Lb$t9FiuNL0SZkG^E+uik z=IR3X^0xANZIYI&p35G%ZB@Xk8a^-eA(gLxz#t~5AkkGZOYFEny0_*7N9;MPn(IL=;n7S=5edNBq4lm)%F7g|UDakkZl>L~Jo$usf-Sjdo66H}OmzBiQKRP2*&vIZ<4ezo%27`)F zM{2Aq^K9d3wzxb9I~mF(D`2qlkZ;;X&1v|nE=#zW=R`Fxi#V`ZiY4V%PRV05aIo%@ z5SjkGR|WS$qt0e}qgH5wgLo^r$5zNxSoq#Ocz&ZP!_OWO$+~N*7(j91ALshpdCLm` z+w#kF7%Alh@`vm*ywFb?v?n+n3)@l^5x~77BQnPYU7MJp|LCJD$1;kNH z0NJ^FVJE{-W&FJY-hLR|x6bGfk|c{thWBM$1g6Nf#Ow8xupl$==A;Q1l7?!13rwM! zK{g1F1XUJkMWssF&sHd7B$RJoEE#^OTmZ2D$i^9>YI-iMq)Fdi0dq8_FF$(_dwB8* zj+1SD#8uc#o=NUEJ*z4nEMiN#a#Xa#NRV5VW6Qpih;)xCG>A_Oo)fX{(nbip2zXay zakYl}hkUaor7NPQzDkHB)dILiJDt3QrxJJ3uq?kCv$HdJA}*Q~ut$8twj8G*UlD>> zCvP}58hx*W_$S;0F*q+njWiWdT-;$pcI=~M1=6}=wx^t30_*HTcg}WF<~Fw!@>SAD zn1N^@-K+8vb%B1aO}j!~N(QUz!x%0(S#o4+HIh_7VR6SRB%p;T4n(lZa6%s8^yArH z52$DlVX^#jvd~R?@mIZ3ohHuy4;k#RvCrhxpBIOSyT7tIS_&?rLAtLA7J@ z@nJ>VJ}Xt&P5w$DH*KD5$)xN2Io<$KT`Xha6&KS#5PPqjfs9&QQz(7mHqundx5{Kj>y!S1ct_<_{ zT@kj}QK#MoYAi>>{YwtR?7p?$SQWz#8k6Q|P@!DPIcWp>Ss5r?D%FBjM4we9$!B*7 zP8?oKhVypKP0aLK_^=k`W^S*Lq~fM0?o{%Z)u+(txAAt$j$6{t4m-SV#y*MgtwvaF zyH9l-2s?q`miAF3#51H7+{N4XyhSMfYG9Q?4l#VEP3$y~lz8GA7O9qiBVeuy7Bl>A z>k&M~B$8@sYt|`H+@MjYcsM^6G&=gys5$rbvlpR|Q~J{TZHeFDr>L~+$PMp8Q~P4yII<*G#zN(4{q!e-#JN{93^>?-kT|*qgDjkR z&MnQ>N4qME*KE}))Xoy%V#q4<_rn} zCuf>I4_&9fTU7MEc~pvZ{cPs9!E@9`4ixxSYM7%mc*sM$DqZa;g^uk2ks)tPQ#Sp~ zVvOaijNNr+@sa9ZrgOJTQM${*F6L-78BwPmPtmihzf!)#11Qbr8w8N{orX@QGDB1Z zSK-s+s@j04oIJD84pv=ml!jhbUt3n-=VT<>88prKI;bBJJr%nX085|6{^R;Y(5@y* zm#TO?i7CEFdWX6x9t9~{eDQG$pna6Mb@YVFX5~r{fQ;-^$Z?0I>X{z=A88z}f>934 zgl)GyHqhNg+c_FS-YoB1ksTjSZKB|5lF9M~y_OYatQ2ulilC*90zSC4Bz1UjX7Tkm z?K=a6gvjdWR-pT!mcudz%z~dB5CIpS=$Lo`FD0l->$}aVqeA#Op)Ag^=q`h6ul_X+ zwT|c;#;({m0|@~hIjc?Em02hj0gtI1S_8tSA6LgDIScO(ER^X&<|Y^pErHB(-=5gx z-g+gUHf<;<9@|&65E|?OP%_YE`@87K=F#3!Q{u2YmS7JsC#xw~TS@@(`vK*B;l&e!QIF5Ktg$;ysOl~q?s2SND3 zAPn0&j|Uo9ey1)Q9@jtls%a}M0FxawmU5^YJl~>T&(Ia?+Mha*|HavK1s)!z1WbQ0 z#|tydU}HLRV*PCceQy=jPu&%PF&~?O8!V&|8_nu7dc+;bn8`)YM`mE-$ELzY@`Tft z3JKltQ~ClIW>f@Ep&tR^iQUQt^{NA&I9`?3w?p5`2|v`79xbrPAN%*p`Mje~6uq#1 zgjxyDG__UDS2Jtu;wJorifMgg5JU=6o0HY z^<<*@(x<5LgH^RrQFy_(0%s{u?diZ&h@-1uSk&CBWK?db!~|(CVtqTCZdl;xz)ftZ zfS|@LB2xUupipvtD5RO9t<3YRcw2QRfk0A=Og}4h8Y1pY6uUO;$z3NQvXnnprE3Jx zBS_q{(R{+3M!WgY`elvjI%`Rp=oEzCmU|RXRG8D1LLw{Em#i%_yqG^Tua-}&TH2L;fL)1-vAUB)i@cN#Ddq+#OKrdvkTL}e0o#-@fU}eQ zVoJVo^R=t|Hl68@ruC1G6S0dBT~xG%B@{A@Cya6~jdaE`ZGS7qQp09nS?zVgEIHYb z3CrVxs$EVkDFX=>Q0w=ihF3zQ*#}VhA`x4ewQvbczQFj%k~ z^qWMx$0{{mttGANPvjszw|QTucy>f{fKf;Z2gL=vM%MLlFHaR zT)zdAr2PTDEP9Z5VaqIHxoM}aS#>j3g^FFsY1BBl2N7x8qc%gw)FL9tso>`_^PD=i z1l~tE6A00*#R)b$QIh@8c_mv>aQT6eIMK{xZZ+S?&+YD8EZot$WqId4g48~gxOctQ z?@09*zRTHwlIehxD3|s&_hB_N@qLa!VHpEpE%QAy zF+Ocy2v?nrT*0Xjp4^bJ4bG=)!q8EYoFG#?=Qw!KBVlcy?|h2{?bcmlaw_T~I!Emx zK^gKetgzzzHpO#^ABiF7fY62g5tSDsodyuj-y^l?4!j$Ev-r{ptRx&P( zc`X@vLHZPI?C7Ry609r>YLP)4uD3YmFy$C_cG(s)*k5WQ{-5N2CqHaQ*fnQsM~>ZU z36NG5Zb8ZQ%|K|Sd(86UtA*T!CeuA3r}dYJ$;y{)9%%J`==SkBQKE>iX_A*A;u>T>sv`f;u{j#fyQh~TAgIEZfm|U0AR@Fd zIlTJ+^a4P0gUDP6PYv~xc=P&X>``~~B7!>G?e&N%gEX2Bm;rtIB;39TJZ^ z^3mWk8!^f;h>gJlr#Kz%9DfOGYq?X=$rt5}WUf_;*hsi~EL6%PgCR$({py7dur}OZ zcsRwD^ot>4RWEzcJOTd*ENE_Kyd6P#b=xfCXu|QS?(8B1%fN>;5-YiQwgk{$X`>r4 z-jC{B-9gBybddK)XGh@)rmTj>wYi)HQADz4Et%V#!L#S*Ls__H`aS63T;0+r-GN+nR9<-8hsd}Wuu0{m3U;M z=04RAkFzSB42C0q2J+4c|4&_SCb4VY!@Uq>#yw0)UNgC#DTr1>0b-JHD|cm zfrFFhvK0cUe>0PAQvdEz zHHM%LuFLx_4rl3xNl$s_Y9lSg;)B0?)lt^RpEBJin(Sl#k`chC6ZSo1L4~JbZBvRx zxLezJQ-pYila(#`Dw z2%%fZ)iB^goEG*$S>X%|LcC>bkiYAOTmm=FbXz~^s|SOyp)w-Vh<9}v24U?e>58aQ zZazEcMdd9Z){uLZ#q8axH#iTz3+wlkHYqe2i;)pCV`}dqgiM|Zp>TuJ&^WVXoafLu zl1ZR|s_{e3vgbLwAPG2{-2o1lX?jhWMDHP7F;>!4_PMlIr#y{lZ7sSER6Dkri({oEujUAYD$n{nN-UH z8{Sd&Y=oFh!?GgJ!+P))c*a!Jyq^1O;1DM6*XH#2e5XI|Sb4RTYF#RersDBGYd3v~ z6UOpOw*Qcl6>#a_g$h!fDH%cz-8h{0^}EJVYoJZ)g7+w>xh)yni1XDJ!{$z|9@)t% zNz*Y)23&o$u!WPV)fp%ImO{l2$V9u9bnClxsNWK2 z3o87AQ m!In4kPIkPbimNf+I)e^2cv&s);_M!3po61!qsk4zG#Nbs?8P}CRusv_ z*KRd-3bWbn9yn!(p5|AJXa|L8;IFyajtV2v77_3K>(CR;6}9r;T7sVf*v}G|uUckT z|6bXC;%kDJT=E5{)M?VAw!Pnsf2uC|68@3N5LAWlFLROKP+J%DN8g9}ycTf~wK;S9 zL=ZM{3Z*%vu;M(q_MjkkvKAI+uZxc-dkyzaN?ulb2!VcA_xd~qu^|>IcK)t7U}Hg9~*1pU1QAr z^Zwwqr(N3bZmkS|2xY*Zk+FR&c2Fh(E5t9URF^rbBD0}K1xLr5zrIFNCiWz^SUGpD zJnr^1N)8F7VI7)9YH)`odYJSv#f}#{?bA(;_f`|9eksga9i*;jQSnlaWfKHVTj;rN z$@N}Xl4HM`8Vjk4c9j%SEtFKsg7Bbxrdb&EQS5jhlOZz)13782J&`-agSiz-h-A?k7N;S!M>zA?x%-l0 z*RGK@XViqTrXfCIr_PETWMr2VlH-~2yB1lYu;Qegu0avexz%O-`z;}Pftdcx{x?VG z`H9nXD^g7{7$%|)$q)8;D~KDH+vQZc)KI*lx60aKxzg2s7)l;NUPKRx9tmMV0?qsy z&F>qX#NY2~$!f_-p(ByKpl+s0sEH)Gv|{*{TkQ{oueS4$mWE@51jGvTOeN*-nfxLI zGI+5H@oZCVu%9I4f>GGy_O;ywX3h)_O3cy>KP4(_LfjkK_D2+W38J(wZqj&ve|01v z-@TGLjGmh~r6?@8MymJQRb8E^DFA3MOt>Ntx65TZY&KAquN%oaIZMA4=LsPg={6OS zN{XzmEo^ehKldgg)`bMITVVGsABWCNt~Bs!&cBIpm{D#}i*t}gfS)+@#ol}f>nCJH zGDzGIw+05U_$eDdld@lYDMe5E-F%;}L7Ztg-ws!^?Mfhf0e@rW9R8|fg5jStRxZU5 zB9WAS7vXIHYu8q8fY!`Dd&?nf63QW-p!6Gz`YTIbGjIY#02CWGnk1r+cQtwNE!aAb zFr^?8(Sb)$6=M!^#J5Hs0ic|D|W28TA}Y%~*zZZk9d5*dKa0_dha0j%gA!Ox#JR+Ta>Yv6g( zt;y7x?Lv8?kPrTm@2nf{`GLVf4wR>0c2^Oyd7<<|BtP!=Vs?g!L@1B_R<^ae^VEQ2 zGjts*R_+eGv{si9-!K)7a)=50;$&0GP($Ci>7fkm|pA z7?SYOvtv1>W3d_5%MhBH?9_+Y{Nv`4=>aFAXNqCbxiih>&2@!sYq&i7X9efN*kz;G zJtwl!9p=Q0aQ5T-*9C{ylE*$AjB+W=%{WxHMc6Ej@ksODTMR|BWE{1!vy=Uc&Zbl8 zPzg3xI7q}CLh_K5h#`X3T3PwKy^N@*Q{!W8lY_IT`E~8Yz%bqSRj%ciCpWv1GsVL?@b)J41 zKkmnxJ%o!^MRW|&Be~#*$sx5*@2ub}B-keVe%*j_>j~ALE&hpQ0Xiau5@7CymmKUm ztbqDS!t^n0d2v#j-qoWB0;=kx{d26H_> zM~ss_ttc;hwge&NNdc__6UFXHlYnIO?ADV?CfsdjWIPQ~O0jIWt!cF`7KRiU}Hbb;Dn|GFO$%2Gn{akX$G%)fEd zefd{SN}XBdllN+#Ug3eJ74E<;_v%AKviKsYR{||AqNT^AveN_F zt*bhXsR@1GD4k!|9e-XymJt#>cg%LN*E-_XfYwR+#DK;!LIkD-J25aFf*rsQ>S8}L z=VFZ&8Lfk&O7k$R8S?C?74Bt{mzfcf)Vl1GwTVzwyY^87*)bKjJ;}%GeB7M;gxfVD z#&=d>b^4jk$7rzRxt>CT?5_F5G#5+xH_P{dGvK1cSv=xX?CHsn-9jAqfB3m4IhDxt zlbWH*a!tU@j?+HVz5eTk+-fM@p$$!nHpF9^PA`F{RVrZNeQjL|Vrqv~l?%{{sEk|~ z30{y_f*)W#Jop}VSg0ba2Hk~a&1}__EJR=wzx6@@+5|3S{jd;@xvz&dGp2(b8b4N7 z)0Zd2;2y;TXr+x4fY`iBSiWj3sUAUw4bOl^F4%op!KEO}k-Ua7O^!>HkgMe;Z*xI6 z&c7Q^!+F3nzmH?)Nv*=RU#CqOIPK`GTKn5t(lT!QF_;+NR!0Ee-qr)&H(qsqQK9+y zrlNTsZx^yeIN~0goA@!ZrL_f6A2`YoG(uV+=c^vV(1)k~j=G`LVDYf#?PsnuEYGINubKR<#}ErI3!dWMw++ahcJIa%~pNsM;Y z$|ci&%BhgOXeV4ijPBb3Uv?aJ`P2>9m3j0=ch));bvo86tq`ny?P)kW!0P00v{wEe2!6-Ek~1-7*I<;ob$ zU9mq}-ldn-HDg^fRMCE-|V0GuF1#_|FiA*K<(b4E8g+BS5ao(y;Ld zS0|epIUCs1$-V+=JzwPL06}PX+rsN?&o5b#a1;?;8k&ryZ!EhB9%GeC>KX@h(&?37 z9a|b}@S)m)B|1FQYa%S($ke17Got8kP3bOKWkKmqG5d;9+rYU`h1^reAvI9yhp?$3 zfl-;$PHyz-5N=MJukNAyjLa=5#)^vTvqPo~9o7_(dd#?Q_^w;%Kfi`ek)&>mEb!g9 zjtM19z3WUH^s&(?o;4Uc_{m@g{3Mzh#n9;hkA3t*5R&3M1RIJ@GE{vBY+@niNf3LL z1$>j}l!jn?Y3yWvdcw;13ltyed^2Vew1Z)95z&W6^`MK3MuI?rD?{4A^ROd-JQC_Q zg-k6Hg@lUg-XpaMCWQCv$RigEYhj&Mtpz1c!308_kB;Z3P*Knx*&Jh*ng2l5AUZY{ zN6ro(S2+%x7~ZAKIRfRXcGY~UDHXY>6~m~T6#U>y4p#Y!@4AhC9k(kL48`cjr&NUg zu|kfrQpCai!I^yc50dB#4>FpcE8B4iO&qzrHKNCnHM84xka_RqlD(FhRZG+Lr(7(H zv3u3B*?WOBxLK%_ z*#xhJjG{JuiKeL*KjtX6;a|WwsD#6ug`RQCWMw6|BkrwA8Zun|Cvhx$qhr5bc$?^T zf1n&@9`?f`ZEc~+Hjf^eh0dD^x@tav3zb&;&59arW?oaqwv>qDd?-%mec)2|SAFBg z!0owi=Z_%lut>B5-G#-|nOD`_bGuci%$w+hYS@90?SF1h(0X;1%V=I&Vm%?Q`wanz zcb+HI%vQXpBIbJEy~%l1PGm`F7HJzk>um*uTBc5Vsh8>(0POk5vFK?k$oXSC9H5P% z(I1|$$GE51| zEJk?K5zSFVe!51=il1K>SFM)(aD5U_v4FWCg(2*yhK_N z-2hBOQ*0m@y3Bh-%C&EirQ6b9hFd6M$Lkk{f0si@(DYJgeiUI5I8~VMZ&Om&{S80` z%u!9y!cW~dA6a!imy=}RP?_=X{y5}A5A2Ry7#vAG-E#)UiM6ZJN4ef!r6ggXw z4=IyP7AXUl9r6I(c}T%oHAg@!cL=;kpcfh4d-)VB%?P1`2rzx49h|!N+#osHGkNR( z+NFjB=#75r5DTK4gmb>zzsNs1=^v)dwHGm*zn(Krw+C`iq#P?azK~ldY{Ch)Z&W(6 zSup1#BQWK?z@O4YK(~OQP((A#zgldce$i@4%7F>`2>?kr)1(#hFWy2C-FX zYgT+L;PUXvcRL$Qn7KJvB9TE+@rtTvkaXeMl9&~3=peXkKqPuaTeuvFvQHu%5%ExG~V@>WvI}an(FknuCWP ze{6hZTG8*je**C-lVepi|8BrKj@}2KTA8gFh4xO-9NK>QWlxO~zpaH;fvkyAzQ$sH zJ1}p7flL4nb#9jJR^W8I0@6$eD!7CZ**d{Ho*e!4*QddssAMZ~DmC za?+8cj?yjL2F!_v-0!=?Jyv+T(3KAxA%b`j%SNi}kLyRDSGKyA22D2=3F-s~sJNrI zo!LX625Fm@K)4q&OPC7%;jJFQLF;An{GOoVYKmNhLXm-B(?g}l3wPiUay@cxr4P6zo z*p>0XGwTiE+LZ}c@iLPcO=QF+#<6eDP4mmL)x7I|_c*87Hcv*RXJy=s&GEH&r2aU8PtWJofUEMg zMN<1fqp|i0TvZ{aUbjczC)|dq@cO$U^tXoZ$-nj2T!3NMZJGCP7w2|}D|!3dii^|~ z7`MWmlE}d?&z7b$?&%@XPr77vq&y)X@Vr68mxJ=;<2r;wvwb+o*kN`G?+}yZp~5X> z!{bCKukJte*Q*tu3{Y2x7LTeu2R?RRE5h3WqB5er@ai-Yt_R%tIz%Yba-?k^54=Ei z`%wgQgnfT^pD|C}EX)>Dn4FiME<8y-(I&e8;KOO0hy<(s&gN8Ri-QnB1odVW)sc`T zmhU_`xhsq0nof&~BI{^ps2PfEpe4QybW;2ppM_6+Au##uNQosD7~cBC+gNCdayq2p zH(6?yUH=>E-@1z9oo6b}bPSsfMo!t+oQ%FeHz_mQuBCCVX%MEhG6wAJJkf_zdF(Lw zjH@r6W!MI6V1G{^(R61Ot0~Fl`PnhLO~dwG7+>BAi?OOePcuvuuUfO3pT;w;Hec?X zL&57O@5}P;mU(KaoNxJp9ik6#Z^}+bn+b@vR6f6BbX+jef_<>%@Sy&uJvR3GzAqo- zR*#Vpc~`Pj*A?A!3_!zs@_(a<69%7O*PQ2-n!n;k{xp%|y{<&4nhdn8+@TRbTT+mdY7} zor5QZSkQyA8y>cg;q75qCeoe!xKQEp^{k-sgPa1jCl<6vVOtux*Zosr^^pr=vT+`D z-4gGJxZry+@b0Zbzh~3R=@LvZH1UTD{h5IMo`BQ7*bjE`jVcgYccmYrJ!T2`z*Rjag|Bvz;12GUycW! z=Cot@nL!_vgMxqT0UGeTk<)k5Pd?Ur&tiUFG>;#jWi3|PeXrGA7H68EUTg}DU(^YA z`#Fr_=Qb7cq~Z+Y5G1-!t)kcgw&-OKq$ufJ!F>YAqGKdno+p`peD_al<|}RgkLq;f zSjD8mNCjxip-bGuewvi}@?52-_Gxm2yPgOPjEA`VTzaG#j3E&wwaW zZ!P4T2)iAf#O4=ix!*}3u0bXr2P~k^hXnc-f5(r40~}0RODmK4xWtd0XlPP%m3b=@ z#l?%Xr>SO@mX_WMD3?o~x)I+wtQ`-&)5>Z}kBF%0MZrKWo_%&%agFW=? znpC96g|oZ_s;ycN4aI~6Ap^6{%=Voj_!xHGPw=#)-PeyQUJG`!hX+RUSb66@S$tf; z$G(cnXKQuAQPh~(%g4?yugZK%&h_Pnm)`Qt8JUgQ1-Wtf+Y=W)-x4tk4^ zj}Jf2+(-51n2-q5a{ok@P(=zjc}UA%+^pg@Lh9Q?mAco9+66o;EL(anc8QJusv6Z8f4vr1td^yyle}BI+xk@#P z#kGTvhg}mO1X7HA+V)ND$M^F78kY_=6Ro009EG2+{<)v0 zi~5BifVho+K;D*bu7;=w&Y*7ARa--=@v+#CtksBrS881|N1``A_dB|ot_61~9r~mu zSAPpeyb(Kwk}GsGu==T%J#CWAHS@k6^@#T|WiTA47?E}ZN@wcfbw-d7d=`VdW|doW zBzPNMyUAZ@8JTI~vE$tSl%?7*haR)FkH}fG(rT~T#Rp*^$JPAJ_5y?Z<{Zn-2cUSF z6Z;puVyYQ3{};0HPvj+32{HOu(MNkLW%isT@ZKmieO#3jyW;S}UrwFRrHDX;`EU{f zpnqNXzu$`lTi3tu$an$R?==jlKStLXJM#(?Ck`5((a7pt_-$&~wpQI**c(teZSHYK z;nh)Qa={@&@kLyzwz zzSZ}>U-a9K15+8FU!M8iMDhkISLzu8GaeijfjhE&4?0GC94QJ@ zCFgyGMR#7&OK{M;rc%|jAV+Vv1${ZCnBz3byWcf{a*AZldqh@Z24)vb>Ajk1P{z=I zaYKYJClsM>Yt@tDakXLrb6iw@TV3!OcJZri1<0 z-*dFOJb!;i2$y0kn}78^er@d1p&r&%(^{b~2ig0zYhcY*5;DM-i&k0h=f9j-?Pvjl@FthiJiO{Fy}MsC83?tntb)9_Q{0 zhbsJcMVC^tau7Nf5ADA^uRq7?l>L;V{=B(Lb0gOJre&o0!~-YxJrI+LZS~&x25X~* zqd^0$1_dMNY(KKYmoYYbPCPihU6^!m9GmvLnEy4|diy7txXy7Y`RS$8Yuyym|EG#G zkB6!a`}iOsTRpbyMUgCF%#17zl_yDv9+kmZGL|v+U5u1elcgeC8ss7S)>twc3S*f; zp~)^{ERAi9oq3PvegAp?IRBmVIrn{^>%Q)5IlnJRW^Qu}FkY=-5kR{x=!S{Ui2NP0 zz|-LsE=LQOA+MU{zdGtgWK6Me5(XW8d$t#`3Cr&c<7^!MoQfFl9lhe{(8E-(vt>`3}F{6hgL?pYHq$ zXPU4}<3e$A>1|$0c^5z+Vdfzh;NJHmK?<3nYx1ukfe7{6+#cT~GZ#OZW_ikpEt6>( zU)`?3%TeyZW#ZT?dcQny}C)FDE61O#S)L6btchI>++LIYAOc zkuy0aGBeW*%84V8sJ7;Q_U`JJLd}5@$l5FmEi}rXeVZDAafZJi38_5DdHe`JAs`4c zb!YYwpB7-@AcA8&D3iau{4(e#)LMVbconNaGTg;(Hy{!*NBM4I=>3MEyJ1#9;iowD zSd8O-=~#J0@4c%}pcqYkv#78^p^n0=B3AK9yZfh@2o(a3rv!c)Pul;-+x(_Xzpz&? zb{pfOO^<8j13h_(_}P1EjZ(me3T46-3Va-W_KYWERYSy0cC6BJ;LVsqp%o{V^8K46 zaU`{{cYky{NH`u&BJ}Nw=qy0)rrK>yNa5-_ug_Q1`K>Q6n{!iQN*MI-5ykwJlmuRn z798|2J@5J2aPDa+kEpb{hdB;%OG2NZb z(8_RZ;As&*K}8;LwsE6_NzEma@x#CeF~ z0Q2youjfmhy(2+oOx_tbpB`UOu6mS-)pD!V*4=7E{M^oR@Cc7O{b^!{zn?xfBRa&E zUiN*gU8DQc4p78C8pJ0z{V9{vTwF{zC#@m*;l}Z{q=k3hDvEK9+wvzsdw_hhsvh6c zc4h(265|3aRvpO28Z4~@WAC1Sol&xR4fp|jH_K*TdqkM>Wj0Nl+oK8$VdqbaI*uv# zOz}X3PX!#^0OU^d)*;RcIVin;mM%<$t^KM22(=xY#NE&I3!{KN8_{Au^!o+@7kA`d z=Q+UlHuBPs#Ylk;{Uep_;k8ugZlV+W(;0OdMt(W#HX0cH zkXCCpa*}EP_?BOx2nRJ^yB;Th;&wq{5l2jebHu0NZuaubC<8qo3bq*2C{nI&O&b&R?Z8U4-`RWVsBt=apg1OgCE&%P>EP_!6`=r>s?D5ZvaBbYw;f z2$owi2892%LTiCkigm^xb9;03is^QCz*9hUG{}uQSUxAD87M>U28(1$(urWaMn>BQ zW`JE_^etMg_yXy_avv_Dyt$164D%ZN^lUilyqmRy+GIs-^7(?5sWeOfy*914#i>sn zQkA%CzBHNunPSY;ttw@b+R`$LOl+ID@W8CLdKdUwM9D;h3)AnI{KQ(wa-zTIp@<#* zvS+65#mkoLsrc5?tUX~mDG}&i|7#7h3M-6RZX_i#+jO%3O$lxdi8ex_< z6{Jton!VnlQg(g1ti zbXv^*W2Nx06 z^R9d}#02e9#D?kFX4C4)R)RNwMW*F(_tzc9AqT%@X0Y2r7qCp1h2WgLOy{UToUae^ z>v+rQ@Ppr4Y$lB@rFsQ%v12n>%ax{MQaCiVpGz^nXAT37v;Yn&mV7*^7d>GPEYpd` z5JJLqZ+F-Z@*Rc3%}VoX`*+bZTo&*&s9BdCeJaXYk{flb?^X8zXfl`~dEj>-yhqp% zTL6#zKl!8M7WM9zyF(kwjX+&1_9ZMv1xo~qeIrHklOI-M@?WHIg1J39d0-&jy75V* z<-tpM&B0^O6f^F!gHMTT^om(+cT8z#WCo&kzjNt!Z7P2ar~2y1wyTly)7~9pkDdD}vSzj%xJ>g6xLC&_Irl>L9C^YTf-zV+sy#iE?5Y|@j zMax3?lNOO{6{;k%nnF%=?ZzKC+~H|r{bf~Exw4i~%_|O+`bIZRj|WK7^uKOaR)@=z za?9+Ou22_?4(1o<1^G$!P!w|?QRG`F3_2<=l~1!V?Lccu6u!Q$?FQVuZ6v7Shm!5p zxqB+6Y^QV~)q=`}P&{hlqYSGdYLkE-3kkWU<%60~*6Zh~uAc01Uht1d`u(lun!Ur* zc>|&T!Oz8eu!DTo%_&vSO+o=iN#G{umm#h$=d89(MEK*tZHO9AP{v$ z6`h>=bdvI-G%b#yTqNh-+9x_dNh?=6&)+kqoiWQP6dOMwXt=*48q)TBX4GedqkF!C z@tb($-WwE{3;fGPE`8I_mnCxHo^6JUM^|3#(99UpVCS{phy{)k;J-W8hog&mHY>%L zBO!*H)yVY#I}N42Y&EphtQgb!1a+I|Be_>j)hJ6*BNYBcELM=d;AeRje{Fa~tTB z9wqVQukO>aLUvnauf-krb`ZA@0umRxz3w|HLOE!oyTXB5CjJfN^wd6* zlK`X5b-XQ4MRVgnGE+D|Z;W!lb9@~CPFJ+S;6iM)+Vwf~;f4gL1kDj6Qpda%@ZS3^ zwi7xpJgcjtH3~xaxmBe%_MOd`e#3OTW>x_RBh)*iuC%}ft(%UG9@(qQxGf>TSgb_3#gbvnoq3|U?D`jg))Qqr6pE}POA&whGZls5H za%ueE(BjzY%|Aeso-^pZqBZ?!7kE}gvy-Tk$P4fB7>d74={#)UeD^MK?syS?2eI= zxwmQ^UVkBYbxiBCZz~*z3Ml8c_mwrWfzreW`dfS7xczdQzOZF86ACWlc6%Yn{oz9| zju{1Hm2l1FUmwEoqEu=w?aol%QSKCV-s3%1R93SF zY0Ge?JutC(u_9^zC?xZyrp!J0KC%zU`S(;G| z4}xbli3{(P+67sSX+UIarpj*~me#l$jSYGp7*`DG^ZnEC_8?BPM>mMGO~;llg?;ct zuf5J!{y)3~E~n*;(qH#s2~nl@ZJRG9v34bOEEXEXF@nj37w`eBe>KPr=W(98XgA=mD^ovP0CRFEul+QyzA1Ie5_xIHMSCmi+byz#-S}g&HT_lO zpUJcfr9VFW@?@$WeB6PcG8&R%7v6&6#VHY8qqiubgiJr8U4 zABm*mNWIYJ*$IA|x%)1mYsUNzLu(nFAJ1|_*;C4oo2%8|B7A4htI+T=2<>vkv`!8q z;p9U;8m7~jT4Bgr+kP>g@iWXJ@`*bkUapdwC${mVHc7f+;wqD4NAr6?+@O;!c!dLCqtTABcGkeAsYdpqUcvv~E=%E^zaRAU!w1t%K$ET;+T}>I|Mg1T zmj&9tnUi|LV5x8J^_?mFN8PfZ^_*; z3%Dr&ksIxf20<(Ez!uS>#VAEf4nY2vjrUabPZ(_Yoj7d}VgeebZY0*0tn~rk;f<(`z#+>HSjt049!KUOKd + MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era. + experiments: + keywords: + - Kubernetes + - MongoDB + maintainers: + - name: Sanjay1611 + email: sanjay.nathani@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + links: + - name: MongoDB Website + url: https://www.mongodb.com/ + icon: + - url: + mediatype: + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/mongodb/experiments.yaml diff --git a/experiments/mongodb/mongodb.package.yaml b/experiments/mongodb/mongodb.package.yaml new file mode 100644 index 0000000..1ad30e8 --- /dev/null +++ b/experiments/mongodb/mongodb.package.yaml @@ -0,0 +1,2 @@ +packageName: mongodb +experiments: diff --git a/experiments/mysql/experiments.yaml b/experiments/mysql/experiments.yaml new file mode 100644 index 0000000..e69de29 diff --git a/experiments/mysql/icons/mysql.png b/experiments/mysql/icons/mysql.png new file mode 100644 index 0000000000000000000000000000000000000000..ee7382c8295ce611d260c2941cc404eaf4383c41 GIT binary patch literal 41430 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%0AFt(!RByU()w?vq7$x)TulDXt#z3C-2Cy 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 literal 0 HcmV?d00001 diff --git a/experiments/mysql/mysql.chartserviceversion.yaml b/experiments/mysql/mysql.chartserviceversion.yaml new file mode 100644 index 0000000..540382a --- /dev/null +++ b/experiments/mysql/mysql.chartserviceversion.yaml @@ -0,0 +1,30 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2020-03-17T10:28:08Z + name: mysql + version: 0.0.2 + annotations: + categories: mysql + chartDescription: Injects chaos on mysql components +spec: + displayName: MySQL Chaos + categoryDescription: > + MySQL is an open-source relational database management system. + experiments: + keywords: + - Kubernetes + - MySQL + maintainers: + - name: atulabhi + email: atul.abhishek@openebs.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + links: + - name: mysql Website + url: https://www.mysql.com/ + icon: + - url: + mediatype: + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/mysql/experiments.yaml diff --git a/experiments/mysql/mysql.package.yaml b/experiments/mysql/mysql.package.yaml new file mode 100644 index 0000000..d844b9a --- /dev/null +++ b/experiments/mysql/mysql.package.yaml @@ -0,0 +1,2 @@ +packageName: mysql +experiments: diff --git a/experiments/openebs/experiments.yaml b/experiments/openebs/experiments.yaml new file mode 100644 index 0000000..fa6f3c3 --- /dev/null +++ b/experiments/openebs/experiments.yaml @@ -0,0 +1,1097 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Network loss to target pod belonging to a OpenEBS PVC +kind: ChaosExperiment +metadata: + labels: + litmuschaos.io/name: openebs + name: openebs-target-network-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest + name: openebs-target-network-loss +spec: + definition: + scope: Cluster + permissions: + - apiGroups: + - "" + - "extensions" + - "apps" + - "batch" + - "litmuschaos.io" + - "storage.k8s.io" + resources: + - "jobs" + - "pods" + - "events" + - "services" + - "pods/log" + - "pods/exec" + - "configmaps" + - "secrets" + - "persistentvolumeclaims" + - "storageclasses" + - "persistentvolumes" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "create" + - "get" + - "delete" + - "list" + - "patch" + - "update" + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/openebs/openebs-target-network-loss/openebs_target_network_loss_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + - name: OPENEBS_NAMESPACE + value: 'openebs' + + - name: APP_PVC + value: '' + + - name: TC_IMAGE + value: 'gaiadocker/iproute2' + + # only pumba supported + # For pumba image use : gaiaadm/pumba:0.6.5 + - name: LIB_IMAGE + value: 'gaiaadm/pumba:0.6.5' + + - name: NETWORK_PACKET_LOSS_PERCENTAGE + value: '100' # in percentage + + - name: TOTAL_CHAOS_DURATION + value: '120' # in seconds + + - name: LIVENESS_APP_LABEL + value: '' + + - name: LIVENESS_APP_NAMESPACE + value: '' + + - name: DATA_PERSISTENCE + value: '' + + labels: + name: openebs-target-network-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + #configmaps: + #- name: openebs-target-network-loss + # mountPath: /mnt + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Kill all openebs control plane pod and check if gets scheduled again +kind: ChaosExperiment +metadata: + labels: + litmuschaos.io/name: openebs + name: openebs-control-plane-chaos + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest + name: openebs-control-plane-chaos +spec: + definition: + scope: Namespaced + permissions: + - apiGroups: + - "" + - "litmuschaos.io" + - "batch" + - "apps" + resources: + - "pods" + - "pods/log" + - "deployments" + - "events" + - "jobs" + - "configmaps" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "create" + - "list" + - "get" + - "patch" + - "update" + - "delete" + - apiGroups: + - "" + resources: + - "nodes" + verbs: + - "get" + - "list" + + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/openebs/openebs-control-plane-chaos/openebs_control_plane_chaos_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + - name: OPENEBS_NAMESPACE + value: 'openebs' + + ## Period to wait before injection of chaos + - name: RAMP_TIME + value: '' + + - name: FORCE + value: '' + + ## env var that describes the library used to execute the chaos + ## default: litmus. Supported values: litmus, powerfulseal + - name: LIB + value: 'litmus' + + labels: + name: openebs-control-plane-chaos + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Network loss to pool pod belonging to a OpenEBS PVC +kind: ChaosExperiment +metadata: + labels: + litmuschaos.io/name: openebs + name: openebs-pool-network-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest + name: openebs-pool-network-loss +spec: + definition: + scope: Cluster + permissions: + - apiGroups: + - "" + - "apps" + - "litmuschaos.io" + - "batch" + - "extensions" + - "storage.k8s.io" + - "openebs.io" + resources: + - "pods" + - "pods/log" + - "pods/exec" + - "events" + - "jobs" + - "configmaps" + - "services" + - "persistentvolumeclaims" + - "storageclasses" + - "persistentvolumeclaims" + - "persistentvolumes" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + - "cstorpools" + - "cstorvolumereplicas" + - "replicasets" + verbs: + - "create" + - "get" + - "delete" + - "list" + - "patch" + - "update" + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/openebs/openebs-pool-network-loss/openebs_pool_network_loss_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + - name: OPENEBS_NAMESPACE + value: 'openebs' + + # only pumba supported + # For pumba image use : gaiaadm/pumba:0.6.5 + - name: LIB_IMAGE + value: 'gaiaadm/pumba:0.6.5' + + - name: TC_IMAGE + value: 'gaiadocker/iproute2' + + - name: NETWORK_PACKET_LOSS_PERCENTAGE + value: '100' # in percentage + + - name: TOTAL_CHAOS_DURATION + value: '120' # in seconds + + - name: LIVENESS_APP_LABEL + value: '' + + - name: LIVENESS_APP_NAMESPACE + value: '' + + - name: DATA_PERSISTENCE + value: '' + + labels: + name: openebs-pool-network-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Network delay to pool pod belonging to a OpenEBS PVC + This experiment is using pumba lib for network chaos +kind: ChaosExperiment +metadata: + labels: + litmuschaos.io/name: openebs + name: openebs-pool-network-delay + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest + name: openebs-pool-network-delay +spec: + definition: + scope: Cluster + permissions: + - apiGroups: + - "" + - "apps" + - "litmuschaos.io" + - "batch" + - "extensions" + - "storage.k8s.io" + - "openebs.io" + resources: + - "pods" + - "pods/exec" + - "jobs" + - "pods/log" + - "events" + - "configmaps" + - "services" + - "persistentvolumeclaims" + - "storageclasses" + - "persistentvolumes" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + - "cstorpools" + - "cstorvolumereplicas" + - "replicasets" + verbs: + - "create" + - "get" + - "list" + - "patch" + - "update" + - "delete" + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/openebs/openebs-pool-network-delay/openebs_pool_network_delay_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + - name: OPENEBS_NAMESPACE + value: 'openebs' + + # only pumba supported + # For pumba image use : gaiaadm/pumba:0.6.5 + - name: LIB_IMAGE + value: 'gaiaadm/pumba:0.6.5' + + # in milliseconds + - name: NETWORK_DELAY + value: '60000' + + - name: TC_IMAGE + value: 'gaiadocker/iproute2' + + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + - name: LIVENESS_APP_LABEL + value: '' + + - name: LIVENESS_APP_NAMESPACE + value: '' + + - name: DATA_PERSISTENCE + value: '' + + labels: + name: openebs-pool-network-delay + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Kill the OpenEBS NFS provisioner container and check if pods consuming the NFS PVs continue to be available and volumes are writable (RWM mode) +kind: ChaosExperiment +metadata: + labels: + litmuschaos.io/name: openebs + name: openebs-nfs-provisioner-kill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest + name: openebs-nfs-provisioner-kill +spec: + definition: + scope: Cluster + permissions: + - apiGroups: + - "" + - "apps" + - "litmuschaos.io" + - "batch" + - "extensions" + - "storage.k8s.io" + resources: + - "pods" + - "pods/exec" + - "pods/log" + - "deployments" + - "events" + - "jobs" + - "configmaps" + - "services" + - "persistentvolumeclaims" + - "storageclasses" + - "persistentvolumes" + - "chaosexperiments" + - "chaosresults" + - "chaosengines" + verbs: + - "create" + - "list" + - "get" + - "patch" + - "update" + - "delete" + - apiGroups: + - "" + resources: + - "nodes" + verbs: + - "get" + - "list" + + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/openebs/openebs-nfs-provisioner-kill/openebs_nfs_provisioner_kill_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + # NFS default container + - name: TARGET_CONTAINER + value: 'nfs-provisioner' + + # Period to wait before injection of chaos in sec + - name: RAMP_TIME + value: '' + + # It supports pumba and containerd + - name: LIB + value: 'pumba' + + # LIB_IMAGE can be - gaiaadm/pumba:0.6.5, gprasath/crictl:ci + # For pumba image use: gaiaadm/pumba:0.6.5 + # For containerd image use: gprasath/crictl:ci + - name: LIB_IMAGE + value: 'gaiaadm/pumba:0.6.5' + + # provide the chaos interval + - name: CHAOS_INTERVAL + value: '10' + + # provide the total chaos duration + - name: TOTAL_CHAOS_DURATION + value: '20' + + labels: + name: openebs-nfs-provisioner-kill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + configmaps: + - name: openebs-nfs-provisioner-kill + mountPath: /mnt/ + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Kill the cstor target/Jiva controller pod and check if gets created again +kind: ChaosExperiment +metadata: + labels: + litmuschaos.io/name: openebs + name: openebs-target-pod-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest + name: openebs-target-pod-failure +spec: + definition: + scope: Cluster + permissions: + - apiGroups: + - "" + - "extensions" + - "apps" + - "batch" + - "litmuschaos.io" + - "storage.k8s.io" + resources: + - "deployments" + - "jobs" + - "events" + - "pods" + - "pods/log" + - "pods/exec" + - "configmaps" + - "secrets" + - "services" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + - "persistentvolumeclaims" + - "storageclasses" + - "persistentvolumes" + verbs: + - "create" + - "get" + - "delete" + - "list" + - "patch" + - "update" + - apiGroups: + - "" + resources: + - "nodes" + verbs: + - "get" + - "list" + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/openebs/openebs-target-pod-failure/openebs_target_pod_failure_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + - name: OPENEBS_NAMESPACE + value: 'openebs' + + - name: APP_PVC + value: '' + + - name: FORCE + value: 'true' + + - name: LIVENESS_APP_LABEL + value: '' + + - name: LIVENESS_APP_NAMESPACE + value: '' + + - name: DATA_PERSISTENCE + value: '' + + - name: TOTAL_CHAOS_DURATION + value: '60' + + # provide the kill count + - name: KILL_COUNT + value: '' + + - name: CHAOS_INTERVAL + value: '15' + + - name: DEPLOY_TYPE + value: 'deployment' + + labels: + name: openebs-target-pod-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + #configmaps: + #- name: openebs-target-pod-failure + # mountPath: /mnt + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Kill the pool pod and check if gets scheduled again +kind: ChaosExperiment +metadata: + labels: + litmuschaos.io/name: openebs + name: openebs-pool-pod-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest + name: openebs-pool-pod-failure +spec: + definition: + scope: Cluster + permissions: + - apiGroups: + - "" + - "extensions" + - "apps" + - "batch" + - "litmuschaos.io" + - "openebs.io" + - "storage.k8s.io" + resources: + - "deployments" + - "replicasets" + - "jobs" + - "pods/log" + - "events" + - "pods" + - "configmaps" + - "secrets" + - "storageclasses" + - "persistentvolumeclaims" + - "cstorvolumereplicas" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "create" + - "get" + - "delete" + - "list" + - "patch" + - "update" + - apiGroups: + - "" + resources: + - "nodes" + verbs: + - "get" + - "list" + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/openebs/openebs-pool-pod-failure/openebs_pool_pod_failure_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: default + + - name: OPENEBS_NS + value: 'openebs' + + - name: APP_PVC + value: '' + + - name: LIVENESS_APP_LABEL + value: '' + + - name: LIVENESS_APP_NAMESPACE + value: '' + + - name: CHAOS_ITERATIONS + value: '2' + + # provide the kill count + - name: KILL_COUNT + value: '' + + - name: DATA_PERSISTENCE + value: '' + + labels: + name: openebs-pool-pod-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + #configmaps: + #- name: openebs-pool-pod-failure + # mountPath: /mnt + + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Kill the pool container and check if gets scheduled again +kind: ChaosExperiment +metadata: + labels: + litmuschaos.io/name: openebs + name: openebs-pool-container-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest + name: openebs-pool-container-failure +spec: + definition: + scope: Cluster + permissions: + - apiGroups: + - "" + - "extensions" + - "apps" + - "batch" + - "litmuschaos.io" + - "openebs.io" + - "storage.k8s.io" + resources: + - "replicasets" + - "events" + - "jobs" + - "pods" + - "pods/log" + - "pods/exec" + - "configmaps" + - "secrets" + - "persistentvolumeclaims" + - "cstorvolumereplicas" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "create" + - "get" + - "delete" + - "list" + - "patch" + - "update" + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/openebs/openebs-pool-container-failure/openebs_pool_container_failure_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + - name: OPENEBS_NS + value: 'openebs' + + - name: APP_PVC + value: '' + + - name: LIVENESS_APP_LABEL + value: '' + + # only pumba supported + # For pumba image use : gaiaadm/pumba:0.6.5 + - name: LIB_IMAGE + value: 'gaiaadm/pumba:0.6.5' + + - name: LIVENESS_APP_NAMESPACE + value: '' + + # provide the chaos interval + - name: CHAOS_INTERVAL + value: '10' + + # provide the total chaos duration + - name: TOTAL_CHAOS_DURATION + value: '20' + + - name: DATA_PERSISTENCE + value: '' + + - name: CHAOS_ITERATIONS + value: '2' + + labels: + name: openebs-pool-container-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + #configmaps: + #- name: openebs-pool-container-failure + # mountPath: /mnt + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Kill the cstor target/Jiva controller container and check if gets created again +kind: ChaosExperiment +metadata: + labels: + litmuschaos.io/name: openebs + name: openebs-target-container-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest + name: openebs-target-container-failure +spec: + definition: + scope: Cluster + permissions: + - apiGroups: + - "" + - "apps" + - "batch" + - "litmuschaos.io" + - "storage.k8s.io" + resources: + - "jobs" + - "pods" + - "events" + - "pods/exec" + - "pods/log" + - "configmaps" + - "secrets" + - "persistentvolumeclaims" + - "storageclasses" + - "persistentvolumes" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "create" + - "delete" + - "get" + - "list" + - "patch" + - "update" + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/openebs/openebs-target-container-failure/openebs_target_container_failure_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + - name: OPENEBS_NAMESPACE + value: 'openebs' + + - name: APP_PVC + value: '' + + # LIB_IMAGE can be - gaiaadm/pumba:0.6.5, gprasath/crictl:ci + # For pumba image use : gaiaadm/pumba:0.6.5 + # For containerd image use : gprasath/crictl:ci + - name: LIB_IMAGE + value: 'gaiaadm/pumba:0.6.5' + + # Specify the container runtime used , to pick the relevant chaos util + - name: CONTAINER_RUNTIME + value: 'docker' + + # TARGET_CONTAINER values: cstor-volume-mgmt , cstor-istgt + # For cstor-volume-istgt container kill use : cstor-istgt + # For volume-mgmt-kill container use : cstor-volume-mgmt + + - name: TARGET_CONTAINER + value: 'cstor-volume-mgmt' + + - name: FORCE + value: 'true' + + - name: LIVENESS_APP_LABEL + value: '' + + - name: LIVENESS_APP_NAMESPACE + value: '' + + - name: DATA_PERSISTENCE + value: '' + + - name: DEPLOY_TYPE + value: 'deployment' + + # provide the chaos interval + - name: CHAOS_INTERVAL + value: '10' + + # provide the total chaos duration + - name: TOTAL_CHAOS_DURATION + value: '20' + + - name: SOAK_TIME + value: '60' + + labels: + name: openebs-target-container-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + #configmaps: + #- name: openebs-target-container-failure + # mountPath: /mnt + +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Network delay to target pod belonging to a deployment/statefulset/daemonset +kind: ChaosExperiment +metadata: + labels: + litmuschaos.io/name: openebs + name: openebs-target-network-delay + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest + name: openebs-target-network-delay +spec: + definition: + scope: Cluster + permissions: + - apiGroups: + - "" + - "extensions" + - "apps" + - "batch" + - "litmuschaos.io" + - "storage.k8s.io" + resources: + - "jobs" + - "pods" + - "services" + - "events" + - "pods/exec" + - "pods/log" + - "configmaps" + - "secrets" + - "persistentvolumeclaims" + - "storageclasses" + - "persistentvolumes" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "create" + - "get" + - "delete" + - "list" + - "patch" + - "update" + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/openebs/openebs-target-network-delay/openebs_target_network_delay_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + - name: OPENEBS_NAMESPACE + value: 'openebs' + + - name: APP_PVC + value: '' + + - name: TC_IMAGE + value: 'gaiadocker/iproute2' + + # only pumba supported + # For pumba image use : gaiaadm/pumba:0.6.5 + - name: LIB_IMAGE + value: 'gaiaadm/pumba:0.6.5' + + - name: NETWORK_DELAY + value: '60000' # in milliseconds + + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + - name: LIVENESS_APP_LABEL + value: '' + + - name: LIVENESS_APP_NAMESPACE + value: '' + + - name: DATA_PERSISTENCE + value: '' + + labels: + name: openebs-target-network-delay + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + #configmaps: + #- name: openebs-target-network-delay + # mountPath: /mnt + +--- +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + OpenEBS Pool Disk Loss contains chaos to disrupt state of infra resources. Experiments can inject disk loss against openEBS pool. +kind: ChaosExperiment +metadata: + labels: + litmuschaos.io/name: openebs + name: openebs-pool-disk-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest + name: openebs-pool-disk-loss +spec: + definition: + scope: Cluster + permissions: + - apiGroups: + - "" + - "apps" + - "litmuschaos.io" + - "batch" + - "extensions" + - "storage.k8s.io" + - "openebs.io" + resources: + - "pods" + - "jobs" + - "pods/log" + - "events" + - "pods/exec" + - "cstorpools" + - "configmaps" + - "secrets" + - "storageclasses" + - "persistentvolumes" + - "persistentvolumeclaims" + - "cstorvolumereplicas" + - "chaosexperiments" + - "chaosresults" + - "chaosengines" + verbs: + - "create" + - "list" + - "get" + - "patch" + - "update" + - "delete" + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/openebs/openebs-pool-disk-loss/openebs_pool_disk_loss_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + - name: TOTAL_CHAOS_DURATION + value: '60' + + # Period to wait before injection of chaos in sec + - name: RAMP_TIME + value: '' + + # GKE and AWS supported + - name: CLOUD_PLATFORM + value: 'GKE' + + - name: PROJECT_ID + value: '' + + - name: NODE_NAME + value: '' + + - name: DISK_NAME + value: '' + + - name: ZONE_NAME + value: '' + + - name: DEVICE_NAME + value: '' + + - name: LIVENESS_APP_LABEL + value: '' + + - name: LIVENESS_APP_NAMESPACE + value: '' + + - name: DATA_PERSISTENCE + value: '' + + - name: OPENEBS_NAMESPACE + value: 'openebs' + + labels: + name: openebs-pool-disk-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + + configmaps: + - name: openebs-pool-disk-loss + mountPath: /mnt/ + + secrets: + - name: cloud-secret + mountPath: /tmp/ + +--- diff --git a/experiments/openebs/icons/openebs-control-plane-chaos.png b/experiments/openebs/icons/openebs-control-plane-chaos.png new file mode 100644 index 0000000000000000000000000000000000000000..db1d3e7b7c0fe8312c323ed3cdfcaedc292d5c51 GIT binary patch literal 12575 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 O0F>p`<*H;X!u}5j!U327 literal 0 HcmV?d00001 diff --git a/experiments/openebs/icons/openebs-nfs-provisioner-kill.png b/experiments/openebs/icons/openebs-nfs-provisioner-kill.png new file mode 100644 index 0000000000000000000000000000000000000000..db1d3e7b7c0fe8312c323ed3cdfcaedc292d5c51 GIT binary patch literal 12575 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 O0F>p`<*H;X!u}5j!U327 literal 0 HcmV?d00001 diff --git a/experiments/openebs/icons/openebs-pool-container-failure.png b/experiments/openebs/icons/openebs-pool-container-failure.png new file mode 100644 index 0000000000000000000000000000000000000000..db1d3e7b7c0fe8312c323ed3cdfcaedc292d5c51 GIT binary patch literal 12575 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 O0F>p`<*H;X!u}5j!U327 literal 0 HcmV?d00001 diff --git a/experiments/openebs/icons/openebs-pool-disk-loss.png b/experiments/openebs/icons/openebs-pool-disk-loss.png new file mode 100644 index 0000000000000000000000000000000000000000..db1d3e7b7c0fe8312c323ed3cdfcaedc292d5c51 GIT binary patch literal 12575 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 O0F>p`<*H;X!u}5j!U327 literal 0 HcmV?d00001 diff --git a/experiments/openebs/icons/openebs-pool-network-delay.png b/experiments/openebs/icons/openebs-pool-network-delay.png new file mode 100644 index 0000000000000000000000000000000000000000..db1d3e7b7c0fe8312c323ed3cdfcaedc292d5c51 GIT binary patch literal 12575 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 O0F>p`<*H;X!u}5j!U327 literal 0 HcmV?d00001 diff --git a/experiments/openebs/icons/openebs-pool-network-loss.png b/experiments/openebs/icons/openebs-pool-network-loss.png new file mode 100644 index 0000000000000000000000000000000000000000..db1d3e7b7c0fe8312c323ed3cdfcaedc292d5c51 GIT binary patch literal 12575 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 O0F>p`<*H;X!u}5j!U327 literal 0 HcmV?d00001 diff --git a/experiments/openebs/icons/openebs-pool-pod-failure.png b/experiments/openebs/icons/openebs-pool-pod-failure.png new file mode 100644 index 0000000000000000000000000000000000000000..fdb3cd926062b9228fecd14846fb2381f23fd726 GIT binary patch literal 1421 zcmV;81#ly*yK3u$C`VG|Qm14N36O==nw>>e<}n&_osy>Re^iF)C{dhlW}m5U}^ z6zR!e0p+mhL1P0Z(we5GAsAY_s}gpp!qOI6(onu{c4wKL&hF04V|cIa_eB@9w0ZyGwL-zI}IAKrsMrdt)3PM}zz$q&< zk8TneF87a&jnBZ3Km7*_3-_TCfyQds8*PC<#%JNm#GKda9IZSLX&em$;#S!@(`J;Di;PN4UD&S<0;I#SP$uAbv}yzPs+YdaRZ_$_hMp z{suT@Z%+#>%vY`+t1XWzV1!_Sg0MhASfC&*P!JX<2n!U%7lAc+GVZTfa~#k4O4H2tHj0dtTmHvA?;R^3ZTRa0wXCa1arM1q$L>;J`Q6^yDWi zArCHrg0MhASfC&*P!JX@C-fMyO8>OzUcVSuQ`DDj{&- ziz|>AOu70DNsPS}0oh1z0|&pJa4j$Qxk)&Q;${E$ax4v|Zm&a~` zETr8BPG4U>VaSk3@(hVYIeA3#>MY1YS_w=}&e$Hemc&Z(2y;{LxKXn!XT3Akz-FB} zHIOE-d6WHeBGxvqRA4a^jI0M)ND~-}G%h=47clGsihm_-buy5C8`JylGoFT}dSXH8@(4|p)hqRp8LXPd zD0C?(*c|+@9XdLdnC3A`0%_IWeV_;=lG;Y<>KVNi3KVqPLy^0yrw!`sm3b0zmINNc zH~qkPp-;=NT29rN*N%3_l%{E0tMG+ZqkRV$x5Vj1kHWMbGH#9mhm0M&KSt08If-Fl%;-&BzP1)9Im(t7No!1pq0CCZtDGsw{Yi|UF`dZA biy|HX?#@nMLaG`l00000NkvXXu0mjf4Ah7| literal 0 HcmV?d00001 diff --git a/experiments/openebs/icons/openebs-target-container-failure.png b/experiments/openebs/icons/openebs-target-container-failure.png new file mode 100644 index 0000000000000000000000000000000000000000..bdd874d4199c763a908c4b45d236c676f056f8fd GIT binary patch literal 3152 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 literal 0 HcmV?d00001 diff --git a/experiments/openebs/icons/openebs-target-pod-failure.png b/experiments/openebs/icons/openebs-target-pod-failure.png new file mode 100644 index 0000000000000000000000000000000000000000..344632ab68fa949bfd9185624fc7d291cbc38162 GIT binary patch literal 2661 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 T>H#hb00000NkvXXu0mjf4;Js& literal 0 HcmV?d00001 diff --git a/experiments/openebs/icons/openebs.png b/experiments/openebs/icons/openebs.png new file mode 100644 index 0000000000000000000000000000000000000000..db1d3e7b7c0fe8312c323ed3cdfcaedc292d5c51 GIT binary patch literal 12575 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 O0F>p`<*H;X!u}5j!U327 literal 0 HcmV?d00001 diff --git a/experiments/openebs/openebs-control-plane-chaos/engine.yaml b/experiments/openebs/openebs-control-plane-chaos/engine.yaml new file mode 100644 index 0000000..308982d --- /dev/null +++ b/experiments/openebs/openebs-control-plane-chaos/engine.yaml @@ -0,0 +1,20 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: control-plane-chaos + namespace: openebs +spec: + # It can be active/stop + engineState: 'active' + appinfo: + appns: 'openebs' + applabel: 'name=maya-apiserver' + appkind: 'deployment' + chaosServiceAccount: control-plane-sa + experiments: + - name: openebs-control-plane-chaos + spec: + components: + env: + - name: FORCE + value: '' \ No newline at end of file diff --git a/experiments/openebs/openebs-control-plane-chaos/experiment.yaml b/experiments/openebs/openebs-control-plane-chaos/experiment.yaml new file mode 100644 index 0000000..805f39b --- /dev/null +++ b/experiments/openebs/openebs-control-plane-chaos/experiment.yaml @@ -0,0 +1,79 @@ +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Kill all openebs control plane pod and check if gets scheduled again +kind: ChaosExperiment +metadata: + labels: + litmuschaos.io/name: openebs + name: openebs-control-plane-chaos + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest + name: openebs-control-plane-chaos +spec: + definition: + scope: Namespaced + permissions: + - apiGroups: + - "" + - "litmuschaos.io" + - "batch" + - "apps" + resources: + - "pods" + - "pods/log" + - "deployments" + - "events" + - "jobs" + - "configmaps" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "create" + - "list" + - "get" + - "patch" + - "update" + - "delete" + - apiGroups: + - "" + resources: + - "nodes" + verbs: + - "get" + - "list" + + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/openebs/openebs-control-plane-chaos/openebs_control_plane_chaos_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + - name: OPENEBS_NAMESPACE + value: 'openebs' + + ## Period to wait before injection of chaos + - name: RAMP_TIME + value: '' + + - name: FORCE + value: '' + + ## env var that describes the library used to execute the chaos + ## default: litmus. Supported values: litmus, powerfulseal + - name: LIB + value: 'litmus' + + labels: + name: openebs-control-plane-chaos + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest diff --git a/experiments/openebs/openebs-control-plane-chaos/openebs-control-plane-chaos.chartserviceversion.yaml b/experiments/openebs/openebs-control-plane-chaos/openebs-control-plane-chaos.chartserviceversion.yaml new file mode 100644 index 0000000..418f481 --- /dev/null +++ b/experiments/openebs/openebs-control-plane-chaos/openebs-control-plane-chaos.chartserviceversion.yaml @@ -0,0 +1,42 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + name: openebs-control-plane-chaos + version: 0.1.4 + annotations: + categories: OpenEBS + vendor: CNCF + support: https://slack.openebs.io/ +spec: + displayName: openebs-control-plane-chaos + categoryDescription: > + Kill all openebs control plane pods and check if gets scheduled again. + keywords: + - Kubernetes + - K8S + - OpenEBS + platforms: + - GKE + - EKS + maturity: alpha + chaosType: infra + maintainers: + - name: Raj Babu Das + email: raj.das@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-ansible/tree/master/experiments/openebs/openebs-control-plane-chaos + - name: Documentation + url: https://v1-docs.litmuschaos.io/docs/openebs-control-plane-chaos/ + - name: Video + url: + icon: + - url: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/openebs/openebs-control-plane-chaos/experiment.yaml \ No newline at end of file diff --git a/experiments/openebs/openebs-control-plane-chaos/rbac.yaml b/experiments/openebs/openebs-control-plane-chaos/rbac.yaml new file mode 100644 index 0000000..6663ee0 --- /dev/null +++ b/experiments/openebs/openebs-control-plane-chaos/rbac.yaml @@ -0,0 +1,42 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: control-plane-sa + namespace: openebs + labels: + name: control-plane-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: control-plane-sa + namespace: openebs + labels: + name: control-plane-sa + app.kubernetes.io/part-of: litmus +rules: +- apiGroups: ["","litmuschaos.io","batch","apps"] + resources: ["pods","deployments","pods/log","events","jobs","configmaps","chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +- apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: control-plane-sa + namespace: openebs + labels: + name: control-plane-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: control-plane-sa +subjects: +- kind: ServiceAccount + name: control-plane-sa + namespace: openebs diff --git a/experiments/openebs/openebs-nfs-provisioner-kill/engine.yaml b/experiments/openebs/openebs-nfs-provisioner-kill/engine.yaml new file mode 100644 index 0000000..012e6f9 --- /dev/null +++ b/experiments/openebs/openebs-nfs-provisioner-kill/engine.yaml @@ -0,0 +1,40 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nfs-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + appinfo: + appns: 'minio' + applabel: 'app=minio' + appkind: 'deployment' + chaosServiceAccount: nfs-chaos-sa + experiments: + - name: openebs-nfs-provisioner-kill + spec: + components: + env: + # provide the total chaos duration + - name: TOTAL_CHAOS_DURATION + value: '20' + + - name: NFS_PROVISIONER_NAMESPACE + value: 'app-nfs-ns' + + - name: NFS_PROVISIONER_LABEL + value: 'app=nfs' + + - name: NFS_PVC + value: 'nfs-pvc-claim' + + - name: NFS_SVC + value: 'nfs-provisioner' + + - name: TARGET_CONTAINER + value: 'nfs-provisioner' + + # EXTERNAL_APP_CHECK can be true/false + - name: EXTERNAL_APP_CHECK + value: 'true' \ No newline at end of file diff --git a/experiments/openebs/openebs-nfs-provisioner-kill/experiment.yaml b/experiments/openebs/openebs-nfs-provisioner-kill/experiment.yaml new file mode 100644 index 0000000..99b2afb --- /dev/null +++ b/experiments/openebs/openebs-nfs-provisioner-kill/experiment.yaml @@ -0,0 +1,100 @@ +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Kill the OpenEBS NFS provisioner container and check if pods consuming the NFS PVs continue to be available and volumes are writable (RWM mode) +kind: ChaosExperiment +metadata: + labels: + litmuschaos.io/name: openebs + name: openebs-nfs-provisioner-kill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest + name: openebs-nfs-provisioner-kill +spec: + definition: + scope: Cluster + permissions: + - apiGroups: + - "" + - "apps" + - "litmuschaos.io" + - "batch" + - "extensions" + - "storage.k8s.io" + resources: + - "pods" + - "pods/exec" + - "pods/log" + - "deployments" + - "events" + - "jobs" + - "configmaps" + - "services" + - "persistentvolumeclaims" + - "storageclasses" + - "persistentvolumes" + - "chaosexperiments" + - "chaosresults" + - "chaosengines" + verbs: + - "create" + - "list" + - "get" + - "patch" + - "update" + - "delete" + - apiGroups: + - "" + resources: + - "nodes" + verbs: + - "get" + - "list" + + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/openebs/openebs-nfs-provisioner-kill/openebs_nfs_provisioner_kill_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + # NFS default container + - name: TARGET_CONTAINER + value: 'nfs-provisioner' + + # Period to wait before injection of chaos in sec + - name: RAMP_TIME + value: '' + + # It supports pumba and containerd + - name: LIB + value: 'pumba' + + # LIB_IMAGE can be - gaiaadm/pumba:0.6.5, gprasath/crictl:ci + # For pumba image use: gaiaadm/pumba:0.6.5 + # For containerd image use: gprasath/crictl:ci + - name: LIB_IMAGE + value: 'gaiaadm/pumba:0.6.5' + + # provide the chaos interval + - name: CHAOS_INTERVAL + value: '10' + + # provide the total chaos duration + - name: TOTAL_CHAOS_DURATION + value: '20' + + labels: + name: openebs-nfs-provisioner-kill + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + configmaps: + - name: openebs-nfs-provisioner-kill + mountPath: /mnt/ diff --git a/experiments/openebs/openebs-nfs-provisioner-kill/openebs-nfs-provisioner-kill.chartserviceversion.yaml b/experiments/openebs/openebs-nfs-provisioner-kill/openebs-nfs-provisioner-kill.chartserviceversion.yaml new file mode 100644 index 0000000..db7b923 --- /dev/null +++ b/experiments/openebs/openebs-nfs-provisioner-kill/openebs-nfs-provisioner-kill.chartserviceversion.yaml @@ -0,0 +1,42 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + name: openebs-nfs-provisioner-kill + version: 0.1.3 + annotations: + categories: OpenEBS + vendor: CNCF + support: https://slack.openebs.io/ +spec: + displayName: openebs-nfs-kill-chaos + categoryDescription: > + Kill the OpenEBS NFS provisioner container and check if pods consuming the NFS PVs continue to be available and volumes are writable (RWM mode) + keywords: + - Kubernetes + - K8S + - OpenEBS + - NFS + platforms: + - GKE + maturity: alpha + chaosType: infra + maintainers: + - name: Raj Babu Das + email: raj.das@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-ansible/tree/master/experiments/openebs/openebs-nfs-provisioner-kill + - name: Documentation + url: https://v1-docs.litmuschaos.io/docs/openebs-nfs-provisioner-kill/ + - name: Video + url: + icon: + - url: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/openebs/openebs-nfs-provisioner-kill/experiment.yaml \ No newline at end of file diff --git a/experiments/openebs/openebs-nfs-provisioner-kill/rbac.yaml b/experiments/openebs/openebs-nfs-provisioner-kill/rbac.yaml new file mode 100644 index 0000000..e8710ef --- /dev/null +++ b/experiments/openebs/openebs-nfs-provisioner-kill/rbac.yaml @@ -0,0 +1,37 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: nfs-chaos-sa + namespace: default + labels: + name: nfs-chaos-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: nfs-chaos-sa + labels: + name: nfs-chaos-sa + app.kubernetes.io/part-of: litmus +rules: +- apiGroups: ["","apps","litmuschaos.io","batch","extensions","storage.k8s.io"] + resources: ["pods","pods/exec","pods/log", "deployments","events","jobs","configmaps","services","persistentvolumeclaims","storageclasses","persistentvolumes","chaosexperiments","chaosresults","chaosengines"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: nfs-chaos-sa + labels: + name: nfs-chaos-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: nfs-chaos-sa +subjects: +- kind: ServiceAccount + name: nfs-chaos-sa + namespace: default diff --git a/experiments/openebs/openebs-pool-container-failure/engine.yaml b/experiments/openebs/openebs-pool-container-failure/engine.yaml new file mode 100644 index 0000000..7fe9a33 --- /dev/null +++ b/experiments/openebs/openebs-pool-container-failure/engine.yaml @@ -0,0 +1,29 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: pool-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + #ex. values: ns1:name=percona,ns2:run=nginx + auxiliaryAppInfo: '' + appinfo: + appns: 'default' + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: pool-container-failure-sa + experiments: + - name: openebs-pool-container-failure + spec: + components: + env: + # provide the total chaos duration + - name: TOTAL_CHAOS_DURATION + value: '20' + + - name: APP_PVC + value: 'demo-nginx-claim' + + - name: DEPLOY_TYPE + value: 'deployment' \ No newline at end of file diff --git a/experiments/openebs/openebs-pool-container-failure/experiment.yaml b/experiments/openebs/openebs-pool-container-failure/experiment.yaml new file mode 100644 index 0000000..66f5bf9 --- /dev/null +++ b/experiments/openebs/openebs-pool-container-failure/experiment.yaml @@ -0,0 +1,97 @@ +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Kill the pool container and check if gets scheduled again +kind: ChaosExperiment +metadata: + labels: + litmuschaos.io/name: openebs + name: openebs-pool-container-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest + name: openebs-pool-container-failure +spec: + definition: + scope: Cluster + permissions: + - apiGroups: + - "" + - "extensions" + - "apps" + - "batch" + - "litmuschaos.io" + - "openebs.io" + - "storage.k8s.io" + resources: + - "replicasets" + - "events" + - "jobs" + - "pods" + - "pods/log" + - "pods/exec" + - "configmaps" + - "secrets" + - "persistentvolumeclaims" + - "cstorvolumereplicas" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "create" + - "get" + - "delete" + - "list" + - "patch" + - "update" + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/openebs/openebs-pool-container-failure/openebs_pool_container_failure_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + - name: OPENEBS_NS + value: 'openebs' + + - name: APP_PVC + value: '' + + - name: LIVENESS_APP_LABEL + value: '' + + # only pumba supported + # For pumba image use : gaiaadm/pumba:0.6.5 + - name: LIB_IMAGE + value: 'gaiaadm/pumba:0.6.5' + + - name: LIVENESS_APP_NAMESPACE + value: '' + + # provide the chaos interval + - name: CHAOS_INTERVAL + value: '10' + + # provide the total chaos duration + - name: TOTAL_CHAOS_DURATION + value: '20' + + - name: DATA_PERSISTENCE + value: '' + + - name: CHAOS_ITERATIONS + value: '2' + + labels: + name: openebs-pool-container-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + #configmaps: + #- name: openebs-pool-container-failure + # mountPath: /mnt diff --git a/experiments/openebs/openebs-pool-container-failure/openebs-pool-container-failure.chartserviceversion.yaml b/experiments/openebs/openebs-pool-container-failure/openebs-pool-container-failure.chartserviceversion.yaml new file mode 100644 index 0000000..f8616d3 --- /dev/null +++ b/experiments/openebs/openebs-pool-container-failure/openebs-pool-container-failure.chartserviceversion.yaml @@ -0,0 +1,45 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2019-11-13T10:28:08Z + name: openebs-pool-container-failure + version: 0.1.13 + annotations: + categories: OpenEBS + vendor: CNCF + support: https://slack.openebs.io/ +spec: + displayName: openebs-pool-container-failure + categoryDescription: > + Kill the pool container and check if gets scheduled again. + keywords: + - Kubernetes + - K8S + - Storage Pool + - OpenEBS + platforms: + - GKE + - EKS + - OpenShift + maturity: alpha + chaosType: infra + maintainers: + - name: shubham chaudhary + email: shubham.chaudhary@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-ansible/tree/master/experiments/openebs/openebs-pool-container-failure + - name: Documentation + url: https://v1-docs.litmuschaos.io/docs/openebs-pool-container-failure/ + - name: Video + url: + icon: + - url: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/openebs/openebs-pool-container-failure/experiment.yaml \ No newline at end of file diff --git a/experiments/openebs/openebs-pool-container-failure/rbac.yaml b/experiments/openebs/openebs-pool-container-failure/rbac.yaml new file mode 100644 index 0000000..a8427af --- /dev/null +++ b/experiments/openebs/openebs-pool-container-failure/rbac.yaml @@ -0,0 +1,38 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pool-container-failure-sa + namespace: default + labels: + name: pool-container-failure-sa + app.kubernetes.io/part-of: litmus +--- +# Source: openebs/templates/clusterrole.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: pool-container-failure-sa + labels: + name: pool-container-failure-sa + app.kubernetes.io/part-of: litmus +rules: +- apiGroups: ["","apps","litmuschaos.io","batch","extensions","storage.k8s.io","openebs.io"] + resources: ["pods","jobs","events","pods/log","replicasets","pods/exec","configmaps","secrets","persistentvolumeclaims","cstorvolumereplicas","chaosexperiments","chaosresults","chaosengines"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: pool-container-failure-sa + labels: + name: pool-container-failure-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: pool-container-failure-sa +subjects: +- kind: ServiceAccount + name: pool-container-failure-sa + namespace: default diff --git a/experiments/openebs/openebs-pool-disk-loss/engine.yaml b/experiments/openebs/openebs-pool-disk-loss/engine.yaml new file mode 100644 index 0000000..39c7ef8 --- /dev/null +++ b/experiments/openebs/openebs-pool-disk-loss/engine.yaml @@ -0,0 +1,51 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: pool-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + #ex. values: ns1:name=percona,ns2:run=busybox + auxiliaryAppInfo: '' + appinfo: + appns: 'default' + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: pool-disk-loss-sa + experiments: + - name: openebs-pool-disk-loss + spec: + components: + env: + # provide the total chaos duration + - name: TOTAL_CHAOS_DURATION + value: '60' + + - name: APP_PVC + value: 'demo-nginx-claim' + + # GKE and AWS supported + - name: CLOUD_PLATFORM + value: 'GKE' + + # Enter the project id for gcp only + - name: PROJECT_ID + value: 'litmus-demo-123' + + # Enter the node name + - name: NODE_NAME + value: 'demo-node-123' + + # Enter the disk name + - name: DISK_NAME + value: 'demo-disk-123 ' + + # Enter the device name + - name: DEVICE_NAME + value: '/dev/sdb' + + # Enter the zone name + - name: ZONE_NAME + value: 'us-central1-a' + \ No newline at end of file diff --git a/experiments/openebs/openebs-pool-disk-loss/experiment.yaml b/experiments/openebs/openebs-pool-disk-loss/experiment.yaml new file mode 100644 index 0000000..622583e --- /dev/null +++ b/experiments/openebs/openebs-pool-disk-loss/experiment.yaml @@ -0,0 +1,111 @@ +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + OpenEBS Pool Disk Loss contains chaos to disrupt state of infra resources. Experiments can inject disk loss against openEBS pool. +kind: ChaosExperiment +metadata: + labels: + litmuschaos.io/name: openebs + name: openebs-pool-disk-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest + name: openebs-pool-disk-loss +spec: + definition: + scope: Cluster + permissions: + - apiGroups: + - "" + - "apps" + - "litmuschaos.io" + - "batch" + - "extensions" + - "storage.k8s.io" + - "openebs.io" + resources: + - "pods" + - "jobs" + - "pods/log" + - "events" + - "pods/exec" + - "cstorpools" + - "configmaps" + - "secrets" + - "storageclasses" + - "persistentvolumes" + - "persistentvolumeclaims" + - "cstorvolumereplicas" + - "chaosexperiments" + - "chaosresults" + - "chaosengines" + verbs: + - "create" + - "list" + - "get" + - "patch" + - "update" + - "delete" + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/openebs/openebs-pool-disk-loss/openebs_pool_disk_loss_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + - name: TOTAL_CHAOS_DURATION + value: '60' + + # Period to wait before injection of chaos in sec + - name: RAMP_TIME + value: '' + + # GKE and AWS supported + - name: CLOUD_PLATFORM + value: 'GKE' + + - name: PROJECT_ID + value: '' + + - name: NODE_NAME + value: '' + + - name: DISK_NAME + value: '' + + - name: ZONE_NAME + value: '' + + - name: DEVICE_NAME + value: '' + + - name: LIVENESS_APP_LABEL + value: '' + + - name: LIVENESS_APP_NAMESPACE + value: '' + + - name: DATA_PERSISTENCE + value: '' + + - name: OPENEBS_NAMESPACE + value: 'openebs' + + labels: + name: openebs-pool-disk-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + + configmaps: + - name: openebs-pool-disk-loss + mountPath: /mnt/ + + secrets: + - name: cloud-secret + mountPath: /tmp/ diff --git a/experiments/openebs/openebs-pool-disk-loss/openebs-pool-disk-loss.chartserviceversion.yaml b/experiments/openebs/openebs-pool-disk-loss/openebs-pool-disk-loss.chartserviceversion.yaml new file mode 100644 index 0000000..33e310d --- /dev/null +++ b/experiments/openebs/openebs-pool-disk-loss/openebs-pool-disk-loss.chartserviceversion.yaml @@ -0,0 +1,45 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2020-03-13T10:28:08Z + name: openebs-pool-disk-loss + version: 0.1.3 + annotations: + categories: OpenEBS + vendor: CNCF + support: https://slack.openebs.io/ +spec: + displayName: openebs-pool-disk-loss + categoryDescription: > + OpenEBS Pool Disk Loss contains chaos to disrupt state of infra resources. Experiments can inject disk loss against openEBS pool. + - Causes (forced/graceful) disk loss from the node disk pool. + - Tests deployment sanity (replica availability & uninterrupted service) and recovery workflows of the application pod. + keywords: + - Kubernetes + - K8S + - Storage Pool + - OpenEBS + platforms: + - GKE + maturity: alpha + chaosType: infra + maintainers: + - name: Raj Babu Das + email: raj.das@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-ansible/tree/master/experiments/openebs/openebs-pool-disk-loss + - name: Documentation + url: https://v1-docs.litmuschaos.io/docs/openebs-pool-disk-loss/ + - name: Video + url: + icon: + - url: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/openebs/openebs-pool-disk-loss/experiment.yaml \ No newline at end of file diff --git a/experiments/openebs/openebs-pool-disk-loss/rbac.yaml b/experiments/openebs/openebs-pool-disk-loss/rbac.yaml new file mode 100644 index 0000000..a7ce983 --- /dev/null +++ b/experiments/openebs/openebs-pool-disk-loss/rbac.yaml @@ -0,0 +1,38 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pool-disk-loss-sa + namespace: default + labels: + name: pool-disk-loss-sa + app.kubernetes.io/part-of: litmus +--- +# Source: openebs/templates/clusterrole.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: pool-disk-loss-sa + labels: + name: pool-disk-loss-sa + app.kubernetes.io/part-of: litmus +rules: +- apiGroups: ["","apps","litmuschaos.io","batch","extensions","storage.k8s.io","openebs.io"] + resources: ["pods", "pods/log", "jobs", "events", "pods/exec", "cstorpools", "configmaps", "secrets", "storageclasses", "persistentvolumes", "persistentvolumeclaims", "cstorvolumereplicas", "chaosexperiments", "chaosresults", "chaosengines"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: pool-disk-loss-sa + labels: + name: pool-disk-loss-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: pool-disk-loss-sa +subjects: +- kind: ServiceAccount + name: pool-disk-loss-sa + namespace: default diff --git a/experiments/openebs/openebs-pool-network-delay/engine.yaml b/experiments/openebs/openebs-pool-network-delay/engine.yaml new file mode 100644 index 0000000..72aec3d --- /dev/null +++ b/experiments/openebs/openebs-pool-network-delay/engine.yaml @@ -0,0 +1,25 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: pool-chaos + namespace: default +spec: + appinfo: + appns: 'default' + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: pool-network-delay-sa + experiments: + - name: openebs-pool-network-delay + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + - name: APP_PVC + value: 'demo-nginx-claim' + + # in milliseconds + - name: NETWORK_DELAY + value: '60000' diff --git a/experiments/openebs/openebs-pool-network-delay/experiment.yaml b/experiments/openebs/openebs-pool-network-delay/experiment.yaml new file mode 100644 index 0000000..f37baf4 --- /dev/null +++ b/experiments/openebs/openebs-pool-network-delay/experiment.yaml @@ -0,0 +1,93 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Network delay to pool pod belonging to a OpenEBS PVC + This experiment is using pumba lib for network chaos +kind: ChaosExperiment +metadata: + labels: + litmuschaos.io/name: openebs + name: openebs-pool-network-delay + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest + name: openebs-pool-network-delay +spec: + definition: + scope: Cluster + permissions: + - apiGroups: + - "" + - "apps" + - "litmuschaos.io" + - "batch" + - "extensions" + - "storage.k8s.io" + - "openebs.io" + resources: + - "pods" + - "pods/exec" + - "jobs" + - "pods/log" + - "events" + - "configmaps" + - "services" + - "persistentvolumeclaims" + - "storageclasses" + - "persistentvolumes" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + - "cstorpools" + - "cstorvolumereplicas" + - "replicasets" + verbs: + - "create" + - "get" + - "list" + - "patch" + - "update" + - "delete" + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/openebs/openebs-pool-network-delay/openebs_pool_network_delay_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + - name: OPENEBS_NAMESPACE + value: 'openebs' + + # only pumba supported + # For pumba image use : gaiaadm/pumba:0.6.5 + - name: LIB_IMAGE + value: 'gaiaadm/pumba:0.6.5' + + # in milliseconds + - name: NETWORK_DELAY + value: '60000' + + - name: TC_IMAGE + value: 'gaiadocker/iproute2' + + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + - name: LIVENESS_APP_LABEL + value: '' + + - name: LIVENESS_APP_NAMESPACE + value: '' + + - name: DATA_PERSISTENCE + value: '' + + labels: + name: openebs-pool-network-delay + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest diff --git a/experiments/openebs/openebs-pool-network-delay/openebs-pool-network-delay.chartserviceversion.yaml b/experiments/openebs/openebs-pool-network-delay/openebs-pool-network-delay.chartserviceversion.yaml new file mode 100644 index 0000000..631b6e3 --- /dev/null +++ b/experiments/openebs/openebs-pool-network-delay/openebs-pool-network-delay.chartserviceversion.yaml @@ -0,0 +1,44 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + name: openebs-pool-network-delay + version: 0.1.4 + annotations: + categories: OpenEBS + vendor: CNCF + support: https://slack.openebs.io/ +spec: + displayName: openebs-pool-network-delay + categoryDescription: > + Network delay to pool pod belonging to a OpenEBS PVC + keywords: + - Kubernetes + - K8S + - Storage Pool + - OpenEBS + - Network + platforms: + - GKE + - EKS + maturity: alpha + chaosType: infra + maintainers: + - name: Raj Babu Das + email: raj.das@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-ansible/tree/master/experiments/openebs/openebs-pool-network-delay + - name: Documentation + url: https://v1-docs.litmuschaos.io/docs/openebs-pool-network-delay/ + - name: Video + url: + icon: + - url: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/openebs/openebs-pool-network-delay/experiment.yaml \ No newline at end of file diff --git a/experiments/openebs/openebs-pool-network-delay/rbac.yaml b/experiments/openebs/openebs-pool-network-delay/rbac.yaml new file mode 100644 index 0000000..8db3c74 --- /dev/null +++ b/experiments/openebs/openebs-pool-network-delay/rbac.yaml @@ -0,0 +1,34 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pool-network-delay-sa + namespace: default + labels: + name: pool-network-delay-sa +--- +# Source: openebs/templates/clusterrole.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: pool-network-delay-sa + labels: + name: pool-network-delay-sa +rules: +- apiGroups: ["","apps","litmuschaos.io","batch","extensions","storage.k8s.io","openebs.io"] + resources: ["pods","pods/exec","pods/log","events","jobs","configmaps","services","persistentvolumeclaims","storageclasses","persistentvolumes","chaosengines","chaosexperiments","chaosresults","cstorpools","cstorvolumereplicas","replicasets"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: pool-network-delay-sa + labels: + name: pool-network-delay-sa +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: pool-network-delay-sa +subjects: +- kind: ServiceAccount + name: pool-network-delay-sa + namespace: default \ No newline at end of file diff --git a/experiments/openebs/openebs-pool-network-loss/engine.yaml b/experiments/openebs/openebs-pool-network-loss/engine.yaml new file mode 100644 index 0000000..8843b98 --- /dev/null +++ b/experiments/openebs/openebs-pool-network-loss/engine.yaml @@ -0,0 +1,27 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: pool-chaos + namespace: default +spec: + auxiliaryAppInfo: '' + # It can be active/stop + engineState: 'active' + appinfo: + appns: 'default' + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: pool-network-loss-sa + experiments: + - name: openebs-pool-network-loss + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: '120' # in seconds + + - name: APP_PVC + value: 'demo-nginx-claim' + + - name: NETWORK_PACKET_LOSS_PERCENTAGE + value: '100' diff --git a/experiments/openebs/openebs-pool-network-loss/experiment.yaml b/experiments/openebs/openebs-pool-network-loss/experiment.yaml new file mode 100644 index 0000000..6d896dd --- /dev/null +++ b/experiments/openebs/openebs-pool-network-loss/experiment.yaml @@ -0,0 +1,92 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Network loss to pool pod belonging to a OpenEBS PVC +kind: ChaosExperiment +metadata: + labels: + litmuschaos.io/name: openebs + name: openebs-pool-network-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest + name: openebs-pool-network-loss +spec: + definition: + scope: Cluster + permissions: + - apiGroups: + - "" + - "apps" + - "litmuschaos.io" + - "batch" + - "extensions" + - "storage.k8s.io" + - "openebs.io" + resources: + - "pods" + - "pods/log" + - "pods/exec" + - "events" + - "jobs" + - "configmaps" + - "services" + - "persistentvolumeclaims" + - "storageclasses" + - "persistentvolumeclaims" + - "persistentvolumes" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + - "cstorpools" + - "cstorvolumereplicas" + - "replicasets" + verbs: + - "create" + - "get" + - "delete" + - "list" + - "patch" + - "update" + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/openebs/openebs-pool-network-loss/openebs_pool_network_loss_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + - name: OPENEBS_NAMESPACE + value: 'openebs' + + # only pumba supported + # For pumba image use : gaiaadm/pumba:0.6.5 + - name: LIB_IMAGE + value: 'gaiaadm/pumba:0.6.5' + + - name: TC_IMAGE + value: 'gaiadocker/iproute2' + + - name: NETWORK_PACKET_LOSS_PERCENTAGE + value: '100' # in percentage + + - name: TOTAL_CHAOS_DURATION + value: '120' # in seconds + + - name: LIVENESS_APP_LABEL + value: '' + + - name: LIVENESS_APP_NAMESPACE + value: '' + + - name: DATA_PERSISTENCE + value: '' + + labels: + name: openebs-pool-network-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest diff --git a/experiments/openebs/openebs-pool-network-loss/openebs-pool-network-loss.chartserviceversion.yaml b/experiments/openebs/openebs-pool-network-loss/openebs-pool-network-loss.chartserviceversion.yaml new file mode 100644 index 0000000..e1fe3ae --- /dev/null +++ b/experiments/openebs/openebs-pool-network-loss/openebs-pool-network-loss.chartserviceversion.yaml @@ -0,0 +1,44 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + name: openebs-pool-network-loss + version: 0.1.3 + annotations: + categories: OpenEBS + vendor: CNCF + support: https://slack.openebs.io/ +spec: + displayName: openebs-pool-network-loss + categoryDescription: > + Network loss to pool pod belonging to a OpenEBS PVC + keywords: + - Kubernetes + - K8S + - Storage Pool + - OpenEBS + - Network + platforms: + - GKE + - EKS + maturity: alpha + chaosType: infra + maintainers: + - name: Raj Babu Das + email: raj.das@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-ansible/tree/master/experiments/openebs/openebs-pool-network-loss + - name: Documentation + url: https://v1-docs.litmuschaos.io/docs/openebs-pool-network-loss/ + - name: Video + url: + icon: + - url: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/openebs/openebs-pool-network-loss/experiment.yaml \ No newline at end of file diff --git a/experiments/openebs/openebs-pool-network-loss/rbac.yaml b/experiments/openebs/openebs-pool-network-loss/rbac.yaml new file mode 100644 index 0000000..20dcfc4 --- /dev/null +++ b/experiments/openebs/openebs-pool-network-loss/rbac.yaml @@ -0,0 +1,35 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pool-network-loss-sa + namespace: default + labels: + name: pool-network-loss-sa +--- +# Source: openebs/templates/clusterrole.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: pool-network-loss-sa + labels: + name: pool-network-loss-sa +rules: +- apiGroups: ["","apps","litmuschaos.io","batch","extensions","storage.k8s.io","openebs.io"] + resources: ["pods","pods/exec","pods/log","events","jobs","configmaps","services","persistentvolumeclaims","storageclasses","persistentvolumes","chaosengines","chaosexperiments","chaosresults","cstorpools","cstorvolumereplicas","replicasets"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: pool-network-loss-sa + labels: + name: pool-network-loss-sa +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: pool-network-loss-sa +subjects: +- kind: ServiceAccount + name: pool-network-loss-sa + namespace: default diff --git a/experiments/openebs/openebs-pool-pod-failure/engine.yaml b/experiments/openebs/openebs-pool-pod-failure/engine.yaml new file mode 100644 index 0000000..cfc1490 --- /dev/null +++ b/experiments/openebs/openebs-pool-pod-failure/engine.yaml @@ -0,0 +1,28 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: pool-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + #ex. values: ns1:name=percona,ns2:run=nginx + auxiliaryAppInfo: '' + appinfo: + appns: 'default' + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: pool-pod-failure-sa + experiments: + - name: openebs-pool-pod-failure + spec: + components: + env: + - name: CHAOS_ITERATIONS + value: '2' + + - name: APP_PVC + value: 'demo-nginx-claim' + + - name: DEPLOY_TYPE + value: 'deployment' \ No newline at end of file diff --git a/experiments/openebs/openebs-pool-pod-failure/experiment.yaml b/experiments/openebs/openebs-pool-pod-failure/experiment.yaml new file mode 100644 index 0000000..52b597b --- /dev/null +++ b/experiments/openebs/openebs-pool-pod-failure/experiment.yaml @@ -0,0 +1,97 @@ +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Kill the pool pod and check if gets scheduled again +kind: ChaosExperiment +metadata: + labels: + litmuschaos.io/name: openebs + name: openebs-pool-pod-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest + name: openebs-pool-pod-failure +spec: + definition: + scope: Cluster + permissions: + - apiGroups: + - "" + - "extensions" + - "apps" + - "batch" + - "litmuschaos.io" + - "openebs.io" + - "storage.k8s.io" + resources: + - "deployments" + - "replicasets" + - "jobs" + - "pods/log" + - "events" + - "pods" + - "configmaps" + - "secrets" + - "storageclasses" + - "persistentvolumeclaims" + - "cstorvolumereplicas" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "create" + - "get" + - "delete" + - "list" + - "patch" + - "update" + - apiGroups: + - "" + resources: + - "nodes" + verbs: + - "get" + - "list" + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/openebs/openebs-pool-pod-failure/openebs_pool_pod_failure_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: default + + - name: OPENEBS_NS + value: 'openebs' + + - name: APP_PVC + value: '' + + - name: LIVENESS_APP_LABEL + value: '' + + - name: LIVENESS_APP_NAMESPACE + value: '' + + - name: CHAOS_ITERATIONS + value: '2' + + # provide the kill count + - name: KILL_COUNT + value: '' + + - name: DATA_PERSISTENCE + value: '' + + labels: + name: openebs-pool-pod-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + #configmaps: + #- name: openebs-pool-pod-failure + # mountPath: /mnt + diff --git a/experiments/openebs/openebs-pool-pod-failure/openebs-pool-pod-failure.chartserviceversion.yaml b/experiments/openebs/openebs-pool-pod-failure/openebs-pool-pod-failure.chartserviceversion.yaml new file mode 100644 index 0000000..6c49ec1 --- /dev/null +++ b/experiments/openebs/openebs-pool-pod-failure/openebs-pool-pod-failure.chartserviceversion.yaml @@ -0,0 +1,45 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2019-11-12T10:28:08Z + name: openebs-pool-pod-failure + version: 0.1.12 + annotations: + categories: OpenEBS + vendor: CNCF + support: https://slack.openebs.io/ +spec: + displayName: openebs-pool-pod-failure + categoryDescription: > + Kill the pool pod and check if gets scheduled again. + keywords: + - Kubernetes + - K8S + - Storage Pool + - OpenEBS + platforms: + - GKE + - EKS + - OpenShift + maturity: alpha + chaosType: infra + maintainers: + - name: shubham chaudhary + email: shubham.chaudhary@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-ansible/tree/master/experiments/openebs/openebs-pool-pod-failure + - name: Documentation + url: https://v1-docs.litmuschaos.io/docs/openebs-pool-pod-failure/ + - name: Video + url: + icon: + - url: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/openebs/openebs-pool-pod-failure/experiment.yaml diff --git a/experiments/openebs/openebs-pool-pod-failure/rbac.yaml b/experiments/openebs/openebs-pool-pod-failure/rbac.yaml new file mode 100644 index 0000000..4b6ac65 --- /dev/null +++ b/experiments/openebs/openebs-pool-pod-failure/rbac.yaml @@ -0,0 +1,38 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pool-pod-failure-sa + namespace: default + labels: + name: pool-pod-failure-sa +--- +# Source: openebs/templates/clusterrole.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: pool-pod-failure-sa + labels: + name: pool-pod-failure-sa +rules: +- apiGroups: ["","apps","litmuschaos.io","batch","extensions","storage.k8s.io","openebs.io"] + resources: ["pods","jobs","deployments","pods/log","events","configmaps","secrets","replicasets","persistentvolumeclaims","storageclasses","cstorvolumereplicas","chaosexperiments","chaosresults","chaosengines"] + verbs: ["create","list","get","patch","update","delete"] +- apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: pool-pod-failure-sa + labels: + name: pool-pod-failure-sa +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: pool-pod-failure-sa +subjects: +- kind: ServiceAccount + name: pool-pod-failure-sa + namespace: default diff --git a/experiments/openebs/openebs-target-container-failure/engine.yaml b/experiments/openebs/openebs-target-container-failure/engine.yaml new file mode 100644 index 0000000..f082c2a --- /dev/null +++ b/experiments/openebs/openebs-target-container-failure/engine.yaml @@ -0,0 +1,32 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: target-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + #ex. values: ns1:name=percona,ns2:run=nginx + auxiliaryAppInfo: '' + appinfo: + appns: 'default' + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: target-container-failure-sa + experiments: + - name: openebs-target-container-failure + spec: + components: + env: + # provide the total chaos duration + - name: TOTAL_CHAOS_DURATION + value: '20' + + - name: TARGET_CONTAINER + value: 'cstor-istgt' + + - name: APP_PVC + value: 'demo-nginx-claim' + + - name: DEPLOY_TYPE + value: 'deployment' \ No newline at end of file diff --git a/experiments/openebs/openebs-target-container-failure/experiment.yaml b/experiments/openebs/openebs-target-container-failure/experiment.yaml new file mode 100644 index 0000000..ef432b5 --- /dev/null +++ b/experiments/openebs/openebs-target-container-failure/experiment.yaml @@ -0,0 +1,113 @@ +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Kill the cstor target/Jiva controller container and check if gets created again +kind: ChaosExperiment +metadata: + labels: + litmuschaos.io/name: openebs + name: openebs-target-container-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest + name: openebs-target-container-failure +spec: + definition: + scope: Cluster + permissions: + - apiGroups: + - "" + - "apps" + - "batch" + - "litmuschaos.io" + - "storage.k8s.io" + resources: + - "jobs" + - "pods" + - "events" + - "pods/exec" + - "pods/log" + - "configmaps" + - "secrets" + - "persistentvolumeclaims" + - "storageclasses" + - "persistentvolumes" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "create" + - "delete" + - "get" + - "list" + - "patch" + - "update" + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/openebs/openebs-target-container-failure/openebs_target_container_failure_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + - name: OPENEBS_NAMESPACE + value: 'openebs' + + - name: APP_PVC + value: '' + + # LIB_IMAGE can be - gaiaadm/pumba:0.6.5, gprasath/crictl:ci + # For pumba image use : gaiaadm/pumba:0.6.5 + # For containerd image use : gprasath/crictl:ci + - name: LIB_IMAGE + value: 'gaiaadm/pumba:0.6.5' + + # Specify the container runtime used , to pick the relevant chaos util + - name: CONTAINER_RUNTIME + value: 'docker' + + # TARGET_CONTAINER values: cstor-volume-mgmt , cstor-istgt + # For cstor-volume-istgt container kill use : cstor-istgt + # For volume-mgmt-kill container use : cstor-volume-mgmt + + - name: TARGET_CONTAINER + value: 'cstor-volume-mgmt' + + - name: FORCE + value: 'true' + + - name: LIVENESS_APP_LABEL + value: '' + + - name: LIVENESS_APP_NAMESPACE + value: '' + + - name: DATA_PERSISTENCE + value: '' + + - name: DEPLOY_TYPE + value: 'deployment' + + # provide the chaos interval + - name: CHAOS_INTERVAL + value: '10' + + # provide the total chaos duration + - name: TOTAL_CHAOS_DURATION + value: '20' + + - name: SOAK_TIME + value: '60' + + labels: + name: openebs-target-container-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + #configmaps: + #- name: openebs-target-container-failure + # mountPath: /mnt diff --git a/experiments/openebs/openebs-target-container-failure/openebs-target-container-failure.chartserviceversion.yaml b/experiments/openebs/openebs-target-container-failure/openebs-target-container-failure.chartserviceversion.yaml new file mode 100644 index 0000000..f84c594 --- /dev/null +++ b/experiments/openebs/openebs-target-container-failure/openebs-target-container-failure.chartserviceversion.yaml @@ -0,0 +1,45 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2019-11-11T10:28:08Z + name: openebs-target-container-failure + version: 0.1.12 + annotations: + categories: OpenEBS + vendor: CNCF + support: https://slack.openebs.io/ +spec: + displayName: openebs-target-container-failure + categoryDescription: > + Kill the cstor target/Jiva controller container and check if gets created again + keywords: + - Kubernetes + - K8S + - Storage Controller + - OpenEBS + platforms: + - GKE + - EKS + - OpenShift + maturity: alpha + chaosType: infra + maintainers: + - name: shubham chaudhary + email: shubham.chaudhary@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-ansible/tree/master/experiments/openebs/openebs-target-container-failure + - name: Documentation + url: https://v1-docs.litmuschaos.io/docs/openebs-target-container-failure/ + - name: Video + url: + icon: + - url: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/openebs/openebs-target-container-failure/experiment.yaml diff --git a/experiments/openebs/openebs-target-container-failure/rbac.yaml b/experiments/openebs/openebs-target-container-failure/rbac.yaml new file mode 100644 index 0000000..d8d38fe --- /dev/null +++ b/experiments/openebs/openebs-target-container-failure/rbac.yaml @@ -0,0 +1,38 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: target-container-failure-sa + namespace: default + labels: + name: target-container-failure-sa + app.kubernetes.io/part-of: litmus +--- +# Source: openebs/templates/clusterrole.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: target-container-failure-sa + labels: + name: target-container-failure-sa + app.kubernetes.io/part-of: litmus +rules: +- apiGroups: ["","litmuschaos.io","batch","apps","storage.k8s.io"] + resources: ["pods","jobs","pods/log","pods/exec","events","configmaps","secrets","persistentvolumeclaims","storageclasses","persistentvolumes","chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: target-container-failure-sa + labels: + name: target-container-failure-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: target-container-failure-sa +subjects: +- kind: ServiceAccount + name: target-container-failure-sa + namespace: default diff --git a/experiments/openebs/openebs-target-network-delay/engine.yaml b/experiments/openebs/openebs-target-network-delay/engine.yaml new file mode 100644 index 0000000..4681601 --- /dev/null +++ b/experiments/openebs/openebs-target-network-delay/engine.yaml @@ -0,0 +1,35 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: target-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + #ex. values: ns1:name=percona,ns2:run=nginx + auxiliaryAppInfo: '' + appinfo: + appns: 'default' + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: target-network-delay-sa + experiments: + - name: openebs-target-network-delay + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + - name: TARGET_CONTAINER + value: 'cstor-istgt' + + - name: APP_PVC + value: 'demo-nginx-claim' + + - name: DEPLOY_TYPE + value: 'deployment' + + - name: NETWORK_DELAY + value: '30000' + \ No newline at end of file diff --git a/experiments/openebs/openebs-target-network-delay/experiment.yaml b/experiments/openebs/openebs-target-network-delay/experiment.yaml new file mode 100644 index 0000000..30f554d --- /dev/null +++ b/experiments/openebs/openebs-target-network-delay/experiment.yaml @@ -0,0 +1,94 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Network delay to target pod belonging to a deployment/statefulset/daemonset +kind: ChaosExperiment +metadata: + labels: + litmuschaos.io/name: openebs + name: openebs-target-network-delay + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest + name: openebs-target-network-delay +spec: + definition: + scope: Cluster + permissions: + - apiGroups: + - "" + - "extensions" + - "apps" + - "batch" + - "litmuschaos.io" + - "storage.k8s.io" + resources: + - "jobs" + - "pods" + - "services" + - "events" + - "pods/exec" + - "pods/log" + - "configmaps" + - "secrets" + - "persistentvolumeclaims" + - "storageclasses" + - "persistentvolumes" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "create" + - "get" + - "delete" + - "list" + - "patch" + - "update" + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/openebs/openebs-target-network-delay/openebs_target_network_delay_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + - name: OPENEBS_NAMESPACE + value: 'openebs' + + - name: APP_PVC + value: '' + + - name: TC_IMAGE + value: 'gaiadocker/iproute2' + + # only pumba supported + # For pumba image use : gaiaadm/pumba:0.6.5 + - name: LIB_IMAGE + value: 'gaiaadm/pumba:0.6.5' + + - name: NETWORK_DELAY + value: '60000' # in milliseconds + + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + - name: LIVENESS_APP_LABEL + value: '' + + - name: LIVENESS_APP_NAMESPACE + value: '' + + - name: DATA_PERSISTENCE + value: '' + + labels: + name: openebs-target-network-delay + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + #configmaps: + #- name: openebs-target-network-delay + # mountPath: /mnt diff --git a/experiments/openebs/openebs-target-network-delay/openebs-target-network-delay.chartserviceversion.yaml b/experiments/openebs/openebs-target-network-delay/openebs-target-network-delay.chartserviceversion.yaml new file mode 100644 index 0000000..04578ed --- /dev/null +++ b/experiments/openebs/openebs-target-network-delay/openebs-target-network-delay.chartserviceversion.yaml @@ -0,0 +1,45 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2019-10-17T10:28:08Z + name: openebs-target-network-delay + version: 0.1.9 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: openebs-target-network-delay + categoryDescription: > + Network delay to Pod belonging to a OpenEBS PVC + keywords: + - OpenEBS + - Kubernetes + - K8S + - Network + platforms: + - GKE + - EKS + - OpenShift + maturity: alpha + chaosType: infra + maintainers: + - name: giri + email: giridhara.prasad@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-ansible/tree/master/experiments/openebs/openebs-target-network-delay + - name: Documentation + url: https://v1-docs.litmuschaos.io/docs/openebs-target-network-delay/ + - name: Video + url: + icon: + - url: + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/openebs/openebs-target-network-delay/experiment.yaml diff --git a/experiments/openebs/openebs-target-network-delay/rbac.yaml b/experiments/openebs/openebs-target-network-delay/rbac.yaml new file mode 100644 index 0000000..efba945 --- /dev/null +++ b/experiments/openebs/openebs-target-network-delay/rbac.yaml @@ -0,0 +1,38 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: target-network-delay-sa + namespace: default + labels: + name: target-network-delay-sa + app.kubernetes.io/part-of: litmus +--- +# Source: openebs/templates/clusterrole.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: target-network-delay-sa + labels: + name: target-network-delay-sa + app.kubernetes.io/part-of: litmus +rules: +- apiGroups: ["","apps","litmuschaos.io","batch","extensions","storage.k8s.io"] + resources: ["pods","pods/exec","pods/log","events","jobs","configmaps","secrets","services","persistentvolumeclaims","storageclasses","persistentvolumes","chaosexperiments","chaosresults","chaosengines"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: target-network-delay-sa + labels: + name: target-network-delay-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: target-network-delay-sa +subjects: +- kind: ServiceAccount + name: target-network-delay-sa + namespace: default diff --git a/experiments/openebs/openebs-target-network-loss/engine.yaml b/experiments/openebs/openebs-target-network-loss/engine.yaml new file mode 100644 index 0000000..ba3b3f9 --- /dev/null +++ b/experiments/openebs/openebs-target-network-loss/engine.yaml @@ -0,0 +1,31 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: target-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + #ex. values: ns1:name=percona,ns2:run=nginx + auxiliaryAppInfo: '' + appinfo: + appns: 'default' + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: target-network-loss-sa + experiments: + - name: openebs-target-network-loss + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: '120' # in seconds + + - name: TARGET_CONTAINER + value: 'cstor-istgt' + + - name: APP_PVC + value: 'demo-nginx-claim' + + - name: DEPLOY_TYPE + value: 'deployment' diff --git a/experiments/openebs/openebs-target-network-loss/experiment.yaml b/experiments/openebs/openebs-target-network-loss/experiment.yaml new file mode 100644 index 0000000..45876c6 --- /dev/null +++ b/experiments/openebs/openebs-target-network-loss/experiment.yaml @@ -0,0 +1,94 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Network loss to target pod belonging to a OpenEBS PVC +kind: ChaosExperiment +metadata: + labels: + litmuschaos.io/name: openebs + name: openebs-target-network-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest + name: openebs-target-network-loss +spec: + definition: + scope: Cluster + permissions: + - apiGroups: + - "" + - "extensions" + - "apps" + - "batch" + - "litmuschaos.io" + - "storage.k8s.io" + resources: + - "jobs" + - "pods" + - "events" + - "services" + - "pods/log" + - "pods/exec" + - "configmaps" + - "secrets" + - "persistentvolumeclaims" + - "storageclasses" + - "persistentvolumes" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "create" + - "get" + - "delete" + - "list" + - "patch" + - "update" + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/openebs/openebs-target-network-loss/openebs_target_network_loss_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + - name: OPENEBS_NAMESPACE + value: 'openebs' + + - name: APP_PVC + value: '' + + - name: TC_IMAGE + value: 'gaiadocker/iproute2' + + # only pumba supported + # For pumba image use : gaiaadm/pumba:0.6.5 + - name: LIB_IMAGE + value: 'gaiaadm/pumba:0.6.5' + + - name: NETWORK_PACKET_LOSS_PERCENTAGE + value: '100' # in percentage + + - name: TOTAL_CHAOS_DURATION + value: '120' # in seconds + + - name: LIVENESS_APP_LABEL + value: '' + + - name: LIVENESS_APP_NAMESPACE + value: '' + + - name: DATA_PERSISTENCE + value: '' + + labels: + name: openebs-target-network-loss + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + #configmaps: + #- name: openebs-target-network-loss + # mountPath: /mnt diff --git a/experiments/openebs/openebs-target-network-loss/openebs-target-network-loss.chartserviceversion.yaml b/experiments/openebs/openebs-target-network-loss/openebs-target-network-loss.chartserviceversion.yaml new file mode 100644 index 0000000..bb98d32 --- /dev/null +++ b/experiments/openebs/openebs-target-network-loss/openebs-target-network-loss.chartserviceversion.yaml @@ -0,0 +1,45 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2019-10-17T10:28:08Z + name: openebs-target-network-loss + version: 0.1.9 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: openebs-target-network-loss + categoryDescription: > + Network loss to the target pod belonging to an OpenEBS PVC + keywords: + - Kubernetes + - K8S + - OpenEBS + - Network + platforms: + - GKE + - EKS + - OpenShift + maturity: alpha + chaosType: infra + maintainers: + - name: giri + email: giridhara.prasad@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-ansible/tree/master/experiments/openebs/openebs-target-network-loss + - name: Documentation + url: https://v1-docs.litmuschaos.io/docs/openebs-target-network-loss/ + - name: Video + url: + icon: + - url: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/openebs/openebs-target-network-loss/experiment.yaml diff --git a/experiments/openebs/openebs-target-network-loss/rbac.yaml b/experiments/openebs/openebs-target-network-loss/rbac.yaml new file mode 100644 index 0000000..1a29e6d --- /dev/null +++ b/experiments/openebs/openebs-target-network-loss/rbac.yaml @@ -0,0 +1,38 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: target-network-loss-sa + namespace: default + labels: + name: target-network-loss-sa + app.kubernetes.io/part-of: litmus +--- +# Source: openebs/templates/clusterrole.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: target-network-loss-sa + labels: + name: target-network-loss-sa + app.kubernetes.io/part-of: litmus +rules: +- apiGroups: ["","apps","litmuschaos.io","batch","extensions","storage.k8s.io"] + resources: ["pods","pods/exec","pods/log","events","jobs","configmaps","secrets","services","persistentvolumeclaims","storageclasses","persistentvolumes","chaosexperiments","chaosresults","chaosengines"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: target-network-loss-sa + labels: + name: target-network-loss-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: target-network-loss-sa +subjects: +- kind: ServiceAccount + name: target-network-loss-sa + namespace: default diff --git a/experiments/openebs/openebs-target-pod-failure/engine.yaml b/experiments/openebs/openebs-target-pod-failure/engine.yaml new file mode 100644 index 0000000..e014e9a --- /dev/null +++ b/experiments/openebs/openebs-target-pod-failure/engine.yaml @@ -0,0 +1,31 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: target-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + #ex. values: ns1:name=percona,ns2:run=nginx + auxiliaryAppInfo: '' + appinfo: + appns: 'default' + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: target-pod-failure-sa + experiments: + - name: openebs-target-pod-failure + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: '60' + + - name: FORCE + value: 'true' + + - name: APP_PVC + value: 'demo-nginx-claim' + + - name: DEPLOY_TYPE + value: 'deployment' \ No newline at end of file diff --git a/experiments/openebs/openebs-target-pod-failure/experiment.yaml b/experiments/openebs/openebs-target-pod-failure/experiment.yaml new file mode 100644 index 0000000..c2ef483 --- /dev/null +++ b/experiments/openebs/openebs-target-pod-failure/experiment.yaml @@ -0,0 +1,105 @@ +--- +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Kill the cstor target/Jiva controller pod and check if gets created again +kind: ChaosExperiment +metadata: + labels: + litmuschaos.io/name: openebs + name: openebs-target-pod-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest + name: openebs-target-pod-failure +spec: + definition: + scope: Cluster + permissions: + - apiGroups: + - "" + - "extensions" + - "apps" + - "batch" + - "litmuschaos.io" + - "storage.k8s.io" + resources: + - "deployments" + - "jobs" + - "events" + - "pods" + - "pods/log" + - "pods/exec" + - "configmaps" + - "secrets" + - "services" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + - "persistentvolumeclaims" + - "storageclasses" + - "persistentvolumes" + verbs: + - "create" + - "get" + - "delete" + - "list" + - "patch" + - "update" + - apiGroups: + - "" + resources: + - "nodes" + verbs: + - "get" + - "list" + image: "litmuschaos/ansible-runner:latest" + imagePullPolicy: Always + args: + - -c + - ansible-playbook ./experiments/openebs/openebs-target-pod-failure/openebs_target_pod_failure_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0 + command: + - /bin/bash + env: + - name: ANSIBLE_STDOUT_CALLBACK + value: 'default' + + - name: OPENEBS_NAMESPACE + value: 'openebs' + + - name: APP_PVC + value: '' + + - name: FORCE + value: 'true' + + - name: LIVENESS_APP_LABEL + value: '' + + - name: LIVENESS_APP_NAMESPACE + value: '' + + - name: DATA_PERSISTENCE + value: '' + + - name: TOTAL_CHAOS_DURATION + value: '60' + + # provide the kill count + - name: KILL_COUNT + value: '' + + - name: CHAOS_INTERVAL + value: '15' + + - name: DEPLOY_TYPE + value: 'deployment' + + labels: + name: openebs-target-pod-failure + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + #configmaps: + #- name: openebs-target-pod-failure + # mountPath: /mnt diff --git a/experiments/openebs/openebs-target-pod-failure/openebs-target-pod-failure.chartserviceversion.yaml b/experiments/openebs/openebs-target-pod-failure/openebs-target-pod-failure.chartserviceversion.yaml new file mode 100644 index 0000000..c04aef4 --- /dev/null +++ b/experiments/openebs/openebs-target-pod-failure/openebs-target-pod-failure.chartserviceversion.yaml @@ -0,0 +1,46 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2019-11-11T10:28:08Z + name: openebs-target-pod-failure + version: 0.1.11 + annotations: + categories: OpenEBS + vendor: CNCF + support: https://slack.openebs.io/ +spec: + displayName: openebs-target-pod-failure + categoryDescription: > + Kill the cstor target/Jiva controller pod and check if gets created again + keywords: + - Kubernetes + - K8S + - Storage Controller + - OpenEBS + platforms: + - GKE + - EKS + - OpenShift + maturity: alpha + chaosType: infra + maintainers: + - name: shubham chaudhary + email: shubham.chaudhary@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-ansible/tree/master/experiments/openebs/openebs-target-pod-failure + - name: Documentation + url: https://v1-docs.litmuschaos.io/docs/openebs-target-pod-failure/ + - name: Video + url: + icon: + - url: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/openebs/openebs-target-pod-failure/experiment.yaml + diff --git a/experiments/openebs/openebs-target-pod-failure/rbac.yaml b/experiments/openebs/openebs-target-pod-failure/rbac.yaml new file mode 100644 index 0000000..79fa90b --- /dev/null +++ b/experiments/openebs/openebs-target-pod-failure/rbac.yaml @@ -0,0 +1,42 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: target-pod-failure-sa + namespace: default + labels: + name: target-pod-failure-sa + app.kubernetes.io/part-of: litmus +--- +# Source: openebs/templates/clusterrole.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: target-pod-failure-sa + labels: + name: target-pod-failure-sa + app.kubernetes.io/part-of: litmus +rules: +- apiGroups: ["","apps","litmuschaos.io","batch","extensions","storage.k8s.io"] + resources: ["pods","jobs","pods/log","deployments","pods/exec","events","chaosexperiments","chaosresults","chaosengines","configmaps","secrets","services","persistentvolumeclaims","storageclasses","persistentvolumes"] + verbs: ["create","list","get","patch","update","delete"] +- apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: target-pod-failure-sa + labels: + name: target-pod-failure-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: target-pod-failure-sa +subjects: +- kind: ServiceAccount + name: target-pod-failure-sa + namespace: default + diff --git a/experiments/openebs/openebs.chartserviceversion.yaml b/experiments/openebs/openebs.chartserviceversion.yaml new file mode 100644 index 0000000..6cdaf94 --- /dev/null +++ b/experiments/openebs/openebs.chartserviceversion.yaml @@ -0,0 +1,63 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2019-08-27T10:28:08Z + name: openebs + version: 0.1.8 + annotations: + categories: OpenEBS + vendor: MayaData + support: https://slack.openebs.io/ + chartDescription: Injects generic openebs chaos +spec: + displayName: OpenEBS + categoryDescription: > + OpenEBS is the most active Container Attached Storage project. OpenEBS enables your DevOps teams to have their own storage policies for every workload and it is truly Kubernetes native and 100% in userspace. + + experiments: + - name: openebs-pool-pod-failure + description: "" + - name: openebs-pool-container-failure + description: "" + - name: openebs-target-pod-failure + description: "" + - name: openebs-target-container-failure + description: "" + - name: openebs-target-network-delay + description: "" + - name: openebs-target-network-loss + description: "" + - name: openebs-pool-network-delay + description: "" + - name: openebs-pool-network-loss + description: "" + - name: openebs-control-plane-chaos + description: "" + - name: openebs-pool-disk-loss + description: "" + - name: openebs-nfs-provisioner-kill + description: "" + keywords: + - Kubernetes + - K8S + - OpenEBS + - CAS + - Storage + - Network + - Pod + - Pool + maintainers: + - name: ksatchit + email: karthik.s@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + links: + - name: OpenEBS Website + url: https://openebs.io + - name: Source Code + url: https://github.com/openebs/openebs + icon: + - url: https://raw.githubusercontent.com/litmuschaos/charthub.litmuschaos.io/master/public/icons/openebs.png + mediatype: image/png + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/openebs/experiments.yaml diff --git a/experiments/openebs/openebs.package.yaml b/experiments/openebs/openebs.package.yaml new file mode 100644 index 0000000..0f18e73 --- /dev/null +++ b/experiments/openebs/openebs.package.yaml @@ -0,0 +1,35 @@ +packageName: openebs +experiments: + - name: openebs-pool-pod-failure + CSV: openebs-pool-pod-failure.chartserviceversion.yaml + desc: "openebs-pool-pod-failure" + - name: openebs-pool-container-failure + CSV: openebs-pool-container-failure.chartserviceversion.yaml + desc: "openebs-pool-container-failure" + - name: openebs-target-pod-failure + CSV: openebs-target-pod-failure.chartserviceversion.yaml + desc: "openebs-target-pod-failure" + - name: openebs-target-container-failure + CSV: openebs-target-container-failure.chartserviceversion.yaml + desc: "openebs-target-container-failure" + - name: openebs-target-network-delay + CSV: openebs-target-network-delay.chartserviceversion.yaml + desc: "openebs-target-network-delay" + - name: openebs-target-network-loss + CSV: openebs-target-network-loss.chartserviceversion.yaml + desc: "openebs-target-network-loss" + - name: openebs-control-plane-chaos + CSV: openebs-control-plane-chaos.chartserviceversion.yaml + desc: "openebs-control-plane-chaos" + - name: openebs-pool-network-delay + CSV: openebs-pool-network-delay.chartserviceversion.yaml + desc: "openebs-pool-network-delay" + - name: openebs-pool-network-loss + CSV: openebs-pool-network-loss.chartserviceversion.yaml + desc: "openebs-pool-network-loss" + - name: openebs-pool-disk-loss + CSV: openebs-pool-disk-loss.chartserviceversion.yaml + desc: "openebs-pool-disk-loss" + - name: openebs-nfs-provisioner-kill + CSV: openebs-nfs-provisioner-kill.chartserviceversion.yaml + desc: "openebs-nfs-provisioner-kill" \ No newline at end of file diff --git a/experiments/openebs/sample_openebs_engine_with_data_persistency_enabled.yaml b/experiments/openebs/sample_openebs_engine_with_data_persistency_enabled.yaml new file mode 100644 index 0000000..7a59e6e --- /dev/null +++ b/experiments/openebs/sample_openebs_engine_with_data_persistency_enabled.yaml @@ -0,0 +1,30 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: openebs-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + #ex. values: ns1:name=percona,ns2:run=nginx + auxiliaryAppInfo: '' + appinfo: + appns: 'default' + applabel: 'app=nginx' + appkind: 'deployment' + chaosServiceAccount: -sa + experiments: + - name: + spec: + components: + env: + - name: TARGET_CONTAINER + value: 'cstor-istgt' + - name: APP_PVC + value: 'demo-nginx-claim' + configMaps: + - name: map1 + mountPath: '/mnt' + secrets: + - name: secret1 + mountPath: '/tmp' \ No newline at end of file diff --git a/experiments/vmware/experiments.yaml b/experiments/vmware/experiments.yaml new file mode 100644 index 0000000..61882e3 --- /dev/null +++ b/experiments/vmware/experiments.yaml @@ -0,0 +1,99 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Stops one or more VMs for a certain chaos duration. +kind: ChaosExperiment +metadata: + name: vm-poweroff + labels: + name: vm-poweroff + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + args: + - -c + - ./experiments -name vm-poweroff + command: + - /bin/bash + env: + + - name: VCENTERSERVER + valueFrom: + secretKeyRef: + name: vcenter-secret + key: VCENTERSERVER + + - name: VCENTERUSER + valueFrom: + secretKeyRef: + name: vcenter-secret + key: VCENTERUSER + + - name: VCENTERPASS + valueFrom: + secretKeyRef: + name: vcenter-secret + key: VCENTERPASS + + # provide the VM MOIDs as comma separated values + - name: APP_VM_MOIDS + value: '' + + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '30' + + # set chaos interval (in sec) as desired + - name: CHAOS_INTERVAL + value: '30' + + - name: LIB + value: 'litmus' + + - name: RAMP_TIME + value: '' + + # parallel or sequence; the mode of chaos sequence, defaults to parallel + - name: SEQUENCE + value: 'parallel' + + labels: + experiment: vm-poweroff + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest + +--- diff --git a/experiments/vmware/icons/vm-poweroff.png b/experiments/vmware/icons/vm-poweroff.png new file mode 100644 index 0000000000000000000000000000000000000000..50807e52d29dd34e61cb79965092ada938a64a67 GIT binary patch literal 74909 zcmeEtWl$X5+AVH@;O;KL-QC^Y0|a-6!Gb#kcXtWyl0a|`?!jRgAh--Lm-l>CSI+%& z>ic)A?o@S6*V=n`b#e8|lQts9ko-XbZro9aBgV_HJN_ctN zy14&qRNKYH(St%lj(FCG{e76lUt8Z(+S=o@yPd12or^OR6jJsi10&=2-z#ivY%8DS z6&6^=XJ;9gm1bt)p_~hmt}+{$JE5Sd*A=8Cw0+k>TLIt8*ZlDAkNsAj@3$-27Jkc9 z`*Al%STpjEm?Jea;wO^k{iI9|OX~{9k&%ojlVn0}fYFQoBm++m4T6J}QHILxLF*)u zGPY*rT_uK8=V2JM<33&Dg*p!rj=*quZ6|(?Y#;G z05hWC+qZ&ClT05Ctf{Ff5bXyscpDp=8Eq~ut}iv&+1Xr6?{HrAe+v`Pn*P7m{s)*x zMNW41zs>s(up?z2F0Ox@_a9(W+4eRz|2FSG!2avO{GV(8o7n&Mp#SIf{sZjaU(!Eo z{}b&0iI+K}{r`FRZg~Hb5C4nT|AzfHIro0OHGF1h|8lXGm)2a7Bw*zr=mVd+4Ah@5 zDM{Et_l3F0A@nXiJP^QhHsAYX0JIV`2DCfM0^_D+xOWWU<|w_3nwA8d*O^ph((c=k zAO%ARR4AiLiaIP3G*U>}!XjwlX0>q*A1>CXf=B{`O4^E|5^71i=jc}UpueK;uH(X+ z5-FtH%OFd1LpyV1JTC(=cv^J&gH8}23(!vt4P%Yco)@dFN_*fjlsfq4H9dQACj#GI zCM0T_V;T6--tCQvRe$B+2CO?#+B<;)K&T%&(UYYESXYY2TI^cI{focD4 z<{9x%SK>&N<q)6vKh4v*&QX{iWek^V#cM_ z9il?^WEjSgvch*K8QmU@7PoIR1guG+zh*T0jb8e0=;e#*_uXy69*2OTyeT4nqJamq zutZ=fRVf4Z=8xWlt}&Y4bsUr)yVw&vmZ#uxSYzj53j-JyFH+P@iiRUzr3~eBsUz=k z-OV3(*$%$y_W}Gp9bG=7-t^hI3iI-FwKobSNKf^@Y>Gz6sMe5n5l>ynDYH9PKJuS* zduclaotXwhE+4xaA_h&P?1HR=Q(V8rzpl|wNY8SVk}w|Ri38SQ@vf6VT4 zJimybGZhz^N*aBFCEomj4}}b}_!)9QA9On!yt{Qdd1l?EX|i~zSkHGDBIC*V+-@b~ zOiiEve|56D_PUNxKN0ppP0t!BP6)#Euhv{TEv;Xu~IXWoTol@|o8_ zPovrvP|Mt99)b+NBu)p51uKsdLuLj00f`1WRqyS@M3`tEik^9y8F?B;ynVsaaWJ1sU+Wy!r`nMp0)V{|e5=MVdTC_7pl z>sMQ?s_jBk_R%|xT9P3yl3Bk6Q6B?x`$FG;*Z7ux#^+oITf0;}HMRVMByv~Y>4ZWF zeQ~M_C<`&fEh1p zg9oAabSnGu$?R<^__4jCv7^gyWOW5rZ?Aqi+Iq)rJo}#;3V5P9xE~y8Wzeg%(nH6v2Bia%GvZ?hwUq)w|6ep zqqpxfSB7?N-z7KxV?t#3<(p3I`MIRl_ejt~z0~EfeF{GeJK(zr^^{;PclOwX?{~?c zPJ>^chwiJ@M6X8ri$_#j2f5jaa}X0@1tQ8G4f_93QpL>Gi_I_==H35NHlg;n{`xUo zi@HJN3DvNWh(#vaX^bKNjFM@DY-sPd+|Gm8+q}!$&f8-L+xR+<>q%dxAthy2P7d~t zzvjIOuE{{oJA*_wjF)1VvmZRRbId^bFnq(Y^#|>8!<88?8HH~#aht!uDFpv>o~-9-~^;*Cyy&n88K)m7~LEkl3TTjf)6#hg&Br5kITijB1J zeeR1fOe{t0Ty=c@ZVz38ZYmXSG2K74qF-x$2V67;$QaR|QQ8M2c<$g4)H>TZDy znQWM40g7)7Tx=e?MMau!Z8J>;(7Nda60R;>tkZE>qD?cbPUv@@W*#8dh#x&)RcSD z;?m?Awwqe6Qmy3fujC25dWeC!cCPY+O{bn#NvJ$7KC}%03gdL1Be#t!bJi-+wKti@ z?sfk3J7`L#gomWc{gFrnNjYCXdOpn*zMZ1?LSQe0UhV6b=4Kro#(OoBSWSf?i(mPi zNoG?>_Ii=iP@rhB3-1OmNh$rW^8tF7ionpH1XxkC#>@U9NKz#q2p25(3iLU_SR0AO zF8X?ixsyq#qlI<)?QX`mzJI1(A%89bkc|P*`Ft1iB-KW>p%RP@9LGWa08y~BW%$;uk1!DMdo9YiZUi<)eTc_HIRyQ2?+#>{7C;}MEqy+pbL@NR>T>JIJbZz=FgD54E(*_ zR|~urmn-Hc+@^Ply^+=&`Qp!`My|yTsRs;2L5&Sf^@I??8dWEEyucn74in z6CLI*SKk$UMz2ep-pk^A`4(1q{}&3t7a}aLpRxfYkrvWy$Y=G4`&K4& zsq(bEVmQe={_rZQL1t0c8|`I3As&E$d3%FNOjq!~Bz0~tdfS@>u>8}!%xq|Gvn#_7Ip`ILDxb4j+a%U34OfdM`8!+mR1 znCqpU{4EMHBh`?j2HvXQjHr}t}D3q0f)SHn$c*1Mxh%}(R zETa!ROzibfrmP@vCVjGOBYegfo8G1R1+&@0y_NK;iVJK#vx!}`SzFFQp*Delf=feiCEuYp(vGC)mwp6BmcZL@h?&UbDKz}+9-koh&b8bh|Y?@WS z$Pw@tUHaEOWTwKPq%x0VM2s~@DDJnw2ZOHAU;p-qx_)OAN&3*9?Pt>iiohMMr)ll% z*w6RjhTdi~TfZz6r~@#Pnhu1I~ z^2UkW#&(BHR+na#^KbH0tL0Gg-pJy9s!H2__-NE{B|fPlr6Wgsm8$h@s>eAy23@I8 zS&Ej-Oy*IRxs&efR)M!B{i?O1K7F!D&`u0 zWe(V!gn}X}`fX`QLmbV?GlZT#H_35NEI!=3gzInzcOf*Rl*zVZn>%GybEAub1z+9u z>-YKR?|#i!yUym1Gs`~~Qoi2^9N)|sP|9F3jGr(>FP&=1ZIoICjPkuKTeMA?)b2Wx z_D}M?dog5EBqqZAc&pgJqn|CAY^H*OhHQGZ)2m1Lq(bm;l?JN<1Kx6>JI~>4lqQl| z8~!vN@ysw0W2frGZSAC^Zsrsvh>@>U7UC!1EaB`-Ew-T^6NygZ3#zKc`T<@S$NW-X z=k+XjsO2cRFKYR+fB!xLhYDZ9!>3q}*ii#jgJqJ+-vesU5?&R>2kx+x=#)X5KN?RW zI}o1&z>v|%LM@&XZX6ZHIj*lT4veEZs3gq_0l)lXZjkR=b|`dF7?qA#?b)Exc>7Zj zC5%?mUi964C*z8v*+XIAe&j~pvuqg#7+Lq-U9Z(@V?&_=3CCsb$?eW|o*;p<`z~*s zPD@Jh0HY{tm~mhD<+hpp4-SjNoNFjO?oIl}!7o4OvGMUWDx}6LM?QLR{hZBOU@OM{ z)tVhuO(l-PSzf^_OMGDl*m8k%7rvDHG$Z}?Sdr=C`u;A5L2dXI^eEL+G%%Vq9MY{x za!+hQk5NIp#U5u?BNk4%T3sYY_lh(+rp3t&VbQ3ZZB;{e^o0WY$EV$M&bU}UrcEC{ zYE-c4Iq0Yl-knc>&?|U45_<$UI6IewyBn$>YW~Z%i0JV=(cA?vf| z6hLiAJ|n!nPr{lbaH9~yrABHBOrfE*u7HI8iw3C`HMG9fy z4p^*&2*iSo-oIOnRY&{WNt>L4q}iioV!DjqK9@fEb!obEXqiaMx@z@-P8m8HNAtCX zEI!DN=d6K;%2~u^A+#=Ti8Go=3b~F?ZZx;_)bBp9=A8_t%iB_@&Nv0QD2;9PMeK1!HmFxLj%p)q zie%BC^EpJz5Pn`z?|;tif7?|9MSrbI|s+AzV%MO>pI)W+p1HlGy;~rbZ!px zMMDd;Dj=jnDKK&*x=hgDTDvI(D)j_DZH`NvQYbwXE`kZCcys>PeB$~vU(!qwW4@#) zy1f0)EO3Q>bi&=cYy7SzWcB0OV{Fu0pM{5Wj|8(J=P$a7tOdd^9%h61Mo8{HzK_wy zxA6^Bjse7x7U0KUwJVJp;^F>c1{P99%!;LUWe@Q_P0_}cf!^P+GuZ30INjr%n!Q1dK zd!sdb{c}dPUWZu(bh>atZ8>yLm4s>jM)MS1U^*rH;IvQIlvv03mys$Xgqc* z{oJRkTtmhx`I?)e&4*_$bkbpgh-OzJdsQT6u;I@>M!LMl@ z4R2a0nR#rNSdvzg!v3kxrU(?iMdITxR$f`{?DI&hDvsv148K(Jetr3oKh&|^US;Lr^90(tFN*Lp;Rq_ zmuN3jYOfPZ3uc@si@TE6!-}C8%?xd<@inwW=z6n(pr#~QcatPctYWM0*da_Iy3JK8 zU-}ZP!GjCppTST9~e9ll4XE27$yfBZp97D43sr0qx6*S76rda9J1uiF@lYmP z(aRQb46dVT#?s}`5BP;$o;T~eyH~%4&Q{!e;QeuNCi_=yqT$`Dnn=_1p&zciT>St1 z=m?&F_lJ2V`KCw_DT`SG(iRt3F9$q%Jrg_zRL`xJ?SE3D3hju}v#UPf+2MvXBW*mn zx*YP3h8a${LS7%t`U1SZ~!1-w5q?GoakrlZQt@hfAR}Ts!9Q)iHL;Jyg=!0;NN#4_*^-e=nd?Xo~d{ruw;w?-x zrcQYy`nKb@WwENddJPn6YkaQXhz*6yd3GWDeAh42@WDoQwN zpGzar6y;^?sOp(egy8I-I`EPAT!Gj`?y5gH<;JZOx~T(g+Qefb@zN(sep7OKM>wrn z&hMKK+DuN={OZQkLs4657X0a^TZe86acO<2mg5P0spi`Z+#@FIhWtR>d2Dm>JFh-P z)r{$o1ss1JRr;hs#2&Z;X3bbSb#m79Dj#WgtSvp6H2;vc2qSNv0<3qmFL2s#`+42Y z_IjNZ1k}^iS;zWOoW>F$KlSQeRNa>nJ*GUu&azHf(X>gX@9AmR6Mwig)azSMr)?Qd z6_FL?cbuF0disa$`WTn~Bc-0L7%9n(DBYWiwEw}mn~b2-MR(l3)I#6Xvq^GgxH z&YIZMC}fxuZ_slO)C#tRB>2ii1A?vsYXBb=)fAw^aA>G1yuasBVc1({W66L(@J`<@ z{cm>*#ULlsTD9WiMB=JjSQT3dU_m>*D-Z+#8(L9UV~N$rRYDyr>iM!#$rl2qeBewaPU2LCcaadWqgM5QiCoyS-z+R zVSQXFIALMqD%ncfX=o`)__;sVufD+0DO5%`*(mV?oxg%@{M$d4eD}Ct=_X8yEQ%nA z`B@BmsDf|tcLwc@8Cgx3YaiOESbI*bwG}q$f|K5X0~Ad^T;=@ z!!k}-N6hrQ^=aajpr>z>cm}m&C>KGSr{X*-)izLs2cCbqKkr7PM;PEl zZ-*8{FfLU|;v1lJs6hTyzcu{28i0%}1-~HVJ7^}LaA(Xou^Dg$(M36-MxeH16cvvW z4UQ3wl|(Y+j2gq!SPo%maCs1ZF%5W5*ta;d=Mhw=U`LX%Y1Xb$Lu_LF70n`Jv6P~b z7~4E7Nzy>(oRl=*EUk`275=fG%1G_v2S2F47|Vy0y@JqIyqKhGt9^Puv(SIzte;=d zAKDoWBB*|TlL9eW|72Xg-A&OUp6fqbA={clRGcbskMPIvFlp2GS}5qWGH4ezN!a~x zqK1SdBWqp2(}q?cGn0yNfwHKlRJ>5AFB27t&;zl&tfHPX4FmoMMwNOhGnNn@W}NX6 zeSz~1_|uu#^?qjX$r@*B)L5!h=r5*@70auRpj`y;Don1vXY&$fO_Px;%}B4TozL)u zO~5yhNK)y6O#127BjBag>sqU&6{Goc*8WPxKyp+n5PO#+GaP=mU42Jb~Q5v zTL$ax118UrV=FgiGso!J2ec0KES{MU>1L4bmB1ArNI9m+{HKezAs&y4_1aG5J`p3X zkUz=RCw2LRci$JuA5XyjXZXQ;uZ8@LPIl#q<<2N^$yRh@KQW}V5k1z|1^7PpzWx^0 z6N4MJGk5R6i-rn|?Ru4@DUr3>P_1keCmn;$gLnU-BK5R!+4pSrUXBdD-}Qwn$7~V+ zBY6UP`Wh3)Xmt?KM0j;Huw)V>=|ez(yk+E+@(fyxA$Do+3irk4#{QS$M*X&Q|1UJ$ z8JdRPaI}Y;)_egWEQoH>x+7~Th*3_xu7ueOJ8R;Ur)k9NtxVv{#^JBUerQ-8bbGI>*8P<|6Ia_SP}|Mv4rBNw~5Wty~_Zp ze-yW}p)aApn$(vu>pPDNmeOINMp0mFfmWoeAbTB4Wr$aW(k~`4@xA|h`bDq$r##4C zR$j~H*TE;i^@$RrrkZZ8kJb6=di9~bAMlR|`7`dHc8YW`(|c~?*iB^byvmMC3Nu(Q z=z6-|X7*D40E5ZEG@q3psvVX-HZ=i-o5Q--``H10ygK4fz8MB^VSVdQ%x?xLI89CO zG*0=FkrLTf6karz=GrB3IWd#W2}f;B2yj%)_o-9(YEk7oYa|NA9H)Pk_r=O^`xuJ( ziWn7PScR6YBv2cMXfz>O#w1@P!28F9@vTN&H;$lGXkNx&IC;im=%#)@{(C2@Lgx>b zf;l#PVN4~xnx&=1_=Occg(_h=L4D_F448469UJHFO^;2%cWgoj5@ukSDx%(t71LAc z!(Jhog&&I|8hi6@H?!L}ANW?zggxvR3=}PD;zZo#X}eDP!sKWr_ihKUvjya8j$#!$ zbbiT~C`;%y--XUc8V9?+5;r7q;Ce3DYr<9DBdOooevNI$Ba7+!m7P-VZbT68wz{}K zB&Svg0B2;n4F6aYg~1e{VcOFtxDN=&@Q^dAmZR8!E`^qGBviyr9S3cYJ-94KouP|d zr4RwOMmdM0r(xB^0Bu1G10_hlFa(9lD6+$3JG2JL8r@~e}rulx3FglU=g0M>{YQJZDn-Kcn{Tc zNX4ud))0Ek$L1wPVMin;s#l3y`)hMJ0U|2CT6!af+GuclH+@oD;?0|=oeZMokKdS? zc8!fYe{~UEch12ZQkRsf@>K1Epv-yaI(zI;6)p za5V4iDkteih9=Yzp8a;sgr7o*^W%*3M>y576zSGUY8njb~J6Y`FJaQ0Odj1KCIFNmA|<^=$2(HSwThTjECF-4= zeKzjW@V`uvz_pgccUejT3%b}3x~_C&-VWtOHm0E7{ghwwi@OT^BY@d`zWBHS)Ii|h zasX|&_N@6k@6D9nRBL%PohL{EAc#SJvG+zgb!*4uNw4dZX%z}^f;dEs6bLbE8cbN4 zbi)jnUAI#MexP}WpEcG{ie%_r@?IqjLYT3=8}|f9TbaAc4%QFky)KwaG!a&C?eOKt zz)U`uz9vGZjV-ZRZC^_0XlVFQ@iS>p8_M*9kZqha?LoU9Rfa;gdNpt9vFb-HE1Lu) z_6@ucye|m5r%L3I)o1LXAKrJj*lMP}z_#4nIO11e`4=V2DqN9JW!3b(e4kN2u)s0f z-LbDFyZ3_*94-z1Fu^>B>|*Y$u)DVhqu{TeQJTUp3iBROamSxDV{-V1`B8_eQ%389 z4;vvWV$VLoe~ZwWXoTDB3oAEoewY^Iww*o`Kp70G)5mBMV{lMKA-#agD}z9#19erk zyV_>AbT9;P!;6r1RIS{X>e1~@l0R17n@qaSPD=SJ&^x;H@cgo=j+WW(8L^xntw}td zULN3(aEm{{2x1ifj+qDtM&EJE2p&rAOoQOtl)y+!23}^#7(74!1(p*>G!ZE7I8$2|km3pc=wjGZkwu^s*|GVC zZ(K7I6*kKvz|Av2Rhrh2VI9qS(3yr;t=l>)FQUe@lbzprK41?)<`mL*keMxY8nV19 zMhBcALUzbss0SeE9y@-Jf^CtkF4eZ#OHCcDN{xvu`^j3 zEQ`{mNC`X?vk{#{M!2Ht-L41Qu+Q7u#n-5wT0d#=;;|9K#fl7c@~vJwz^3zv>k1;d z$Je1#f~Bkyd7vfSYRr0ybq*x=w;Pe63PlC2wpK`fpgH~7Vpsj|#Zi6+Ns`Z1UP?8x z-ig#rZ;x{Cemsi&h>M&us@lX-T6@Gqar||A^U+hPl+F23?{WR0b~LQZ?6)YE zCM^Soj#q5Px`V;rqPl|P`KV-Zgo(5YBsxq0&_}x!E*UwsWY5a z_>JV5xiZ@T(Y6De@g^f3?PFd{9Zac8s!wynMMp`<6qw@S?!a!08ox9C%pUF91Lt_c z`PBGshP8d$$=@UHUz?s&&2E-C^Mdcce$s|w36S=*6?AIdF)iKE?cAx|t>k|iue{V2 zCzPV}l0jZHY;M2 zQmIHGbrbl-yw6Ml*GC~G*&Sb-LUGt~qdjgjk4V)7__~(MXU{z96g&;vC=_(mU1o^C zp;GI`za|%blSl8&V=^4aPkH2bnc!^(pLc&@NrTYtW+eX+(8Dre5myc)KDxzQohs~i z@*G3yCL^jQLu{@Z;6Aclibvbnm^AaA;$KQ+7ld zv55EHbo={afTcpOXLN2TuN*)fkr9igo=_oblgWC#K#~^ltg0Wo?T4jg~ zBUsKAW=-c&Gus%UUTw(KZfEI$ZD|Dh_svXcrmj`44g1mI&Wf-@9g;0oD=1&3=ec}H z!`w`EO0g!U@V7;}m)U4-4!pSUeTA0rQ35_y@1Ju`kDmq>Ke314<#>zU$vpl2Ob+2O zyG?dAnjh$?T-_=HMefBca^uhB3HltiHlDF^9Rxliti={jExa*NM4NfS7MJ zk&hO|!}Rb|WOB7o2QDV)!Tx-=HA*{q&WDl^1Wk*DiPWA-s9BCuvLk>Y!h#ndvEK?V z24j?qvQ=iJ`5z1IJoWV76B|t$S_*!0^*6=M3&3~p->0mEx7m9e*0EwQVpVSWa6Syr zUhu846Ohuizx>YeE~x|72dZ?~q&YQ{3E$giZv!B&+)`-n^eHFKFW!KW63^&p=}$=J zOuDWC=6QJ>!dG$yzIvOwsCNC_%XtlPs8!!mh@R)%*GdPb)TFoHTGL7}#Tf*j2bsL@ z-4tx{oaH`i0bYQIch$dMjfMpaO>o+*%?j)`yn(k}`bWFz4h!4HGdtdlzN!^WstwRV z3SLaw((GCXn+|SdsBEzZgE;;vC;P0gUd#r^Kv*u*S38;+8LqyT*U2Oyg zq|N+v;?49rfZ$RjYLP}d%@J`uf;N&kr6!hv3%TGn;<3m6Lg;%B6*vzV4MV#WK?}uP zIQBSxa~{;1tJx~a0IadTv{qKvs(pOg<7wRRlc0CFv|sLZsA-F~3WsZ(fu16(hxgoQ z;$>5+y7*=~HO%y#HkBaLz{s4K#!@}_{x2h?sBQKl|gCh=Lnb`8D;u1z{z&s=17#mT))~>ROQzbqo>llxPei)dT{w>+a%H zOx1vF0!q6n(fajm5;C)@Od{=14?|ee;uP4ZMXk&B3H9n6RJa_skqqLC4XBZvuo4p4 z(G)}!wjnSn9r)EZFB}w>yZCMIO!latC}+)36erm@`s=z8K(EmHd z!?71z^?;K=zW(I0BQ#H0JX>O!k5w5195x=aO>_me$$O(9j(M zWpN80LtJu9Gyx_o64hvYw>~TS#|}Pff*kSzU!%S^yNLz-{sHTbYXxBqkI`28j<_Eu zsM47GWZrx^-GU&wM=cnA{J8z0T+8;1a&@gfWqAe)EI9k>wQl)h+-01JWGvcP`L-t=kCar}H`GTR!a3zo+oWA1KFUbm%`sGYoaSH150!LH-602>R^Qe19-i zugSp}$BMPfr3)cLvglAeltJw|j4^ZRlcN_y$Gt)91x?DfHTHy3iTBhC3EIxbXtsQv zR3c(C>qiaOcBp5moaq*iX*jr`!As5d11?toTy0nZIC{mZ+3kQHo|p#gBJU!|U`IEO zu@n?4izUSY*j(|n@7uM6^;6ckMeIP`mo0+gSDP<~5OT9#RH)?R{%Ezcf z`;FB1P@V?`s#puDd@(hmjFY;=+Kj9YFYZ_RCq4HINGCblQoVBbjnY7;Ag+f;LiLkW ztcRO$LiVwz;C8PvXd7NFYU1|%y_o%bk)m4$vU2(4HzgE?i^&v``7Nn5gmm38F{zQ1 zN@MxG8l`!A=n}9Xg)VZdvhz0}XeIb|+QqL3qcS9{-!gl|OKO3gOKKHmfq=7k6_Di2 z>d1C*x3?XB&xvbGm6m`BdaiMKyCh>VGrqo_-k&ym^9a6JB!tgGmQ|VAy5XpI%yCG= zA7DB-csaZf$>tbd>{I)kWHI;LG<|yReS?BSu`W`BF^JYGFG&#jk;Sw8YJb+WI&Pu9 zQK?=tCVE>=lkn9w5cpC_wvkp@oW<+#z7b|<6dGrw?F*ZQX@J*;=0?C0dT5?c6$3II zJZ%fFZPglI`h3PvnBMklsf+LZDb3}s$;9}jrJ$N=e0Z|fYYr)Z=}78EMC#1%2Dk)$ zNI=v&fmFh^lCCi*_7b&yCDi{`o#W#7+O_le>@jeM_7Hsdoga-ROB@kpF5Qa^M>dR9 zz6j&1+1$OswLfn_7nK(g4^EbbsCV0g?U_^P9ysW4)O#B5G^?GmNTk*x%IO1G6ruOJaZyURD+}$J)_>p1TXHou~Z;3@-)N( zWNMLN)M9AQTUVwyB1Tu4RXA!j^b!;m=`O>H)2i%QZJsrf4L@CNJB9lVVBNmT#m95J z$!@zjpShj;p8LcKQpcdAyWB#1US#si2`^9^RB7^Ih=40Mw`Qr6LQQYWpyWG$d|twe z%ivECEL!Q*^zHnEVP2zs3syBV$a@~+IvaRvQi9x#vb}W__FkKLy#>$FM@O1Qr#GuU zuu5VgSY(X`eQ^>)z1e(%=kf)um^MITxC_}-TLB9pQ$0~&@*3Jiy~&p7B*4q=!2Qa= z!^7JfomLfVrPq!7Z`KRQy7jEL2_h73iD6Brb= z!}CI~u0C5(LrZEY+1Jt{7}z5bPSGT%5E+&%d3fph=y**_`KY*bYS|RrocF!#=S}54 z^abo_U+Q>Od&rH{*7f?`6x`&03jjEvJLHmb-~UYCXFa{JEC4jrma|igPm##Npjtj> z3v6xRYGlU6FJhF_I1O$sAn~!QZuguCspcI6cCt2@w3LczY{{|}v_ov5^c~%L`9*Vt z=u2ll={Aw{fp=+}uMG{LAe~oZo154PR{D3n`!}N+JC}UA1yb zY!@Gwi{oQzFAvzQY?L`%27wg^zr^(&MrO9RBjV8Eq{#y$BsUK#h`&x;9^yqjcno;h z*n1Oz|>*ICNVwq#eGW8&`{hh44Mp8N@y$>?ynw-DX!Rc5rYjbhX@(2FLC zWK;0ozMK}&66~8czXF2g$W~^(F!6_gcY;rUmxp?3RD>8%C$O`7zYVB3DkE}5mF=5L zgb1`|N!$4A+o3@3x0Oo4vdD1$8pI$W69Z+?&!qDwhqmbwRJIr-daO_XNOtEb41E3c zKmuQ_rRLe_my4z-Ph3d>m!)aG=wx0G*m;OFB#HwmP}%8={%z-sI9a8R!Sh_Br1BVG?-tf3LC6k*lH zGuyWI49(0s0}mAqlO&s)Gpj>!zbkBg=V~Hmm`7Gf=T2^)+FV=9y|}0w4!7c@S9=&d zY2aX+^*vm4?E@6hmypn`7&+6QT_gk}oiwVd}3pw~Jx!+5VS%8mST4XoM)(($Qw2R_?>&OeGoM+6dBfsXvuY zMOvOd_eFP5R$!w8oy{z?HU@zpU0Zc7bPbmkb8gQ7Bpl!w2+xvF&>HpIQb-o>?tc2(wM_QKTls0ospm1 zY6Mw^b0gpVP;~t*vh`ydEG54A8N$P&ly1^zBhysZOeWYg#N2VYnE88M4Uzi;)gWKZ z9%uCK#WF2vuyjr$m^@1lnk{|nST&p(L3mmn?QP&cZ_+4wFu`Z9VouBc(uV6!SMZgr_vD_K_Ozwd1;wMNQY>&q9g zfTpqyuBgZ1$-*fAiRLu2&m(G>+Fo<3+zU$R{rjJGAP;YafDINjYpxK<${M>TcmA+BkT=Z0v zdQS&BC&4HKVOSirdP)~pB(;Kw{0F-g>`z-&XzXMi%n0|B&Q1D{V>s{~;fysBiXVS? zmwW_f?K7JVQl^d!#&ou3SF-cT#U9DDPNhB9Id*=V%xlA5`Wkcz0Uvk--*i1emcd$O zno5+L6}6u?VBUF})!hbGT31d9J}!K_sa<9|C0v?-Bg6|ckkwLL$jI^10E@oPzi&?{ zAb)D=r?QGMB{8Q)ETOYwNF@wIYnb!ay8cTy4`0xp`yykO9)xaE6HyTYgSK%PC{Q@- zuu^X)sKpyA=}2Q{5kf18rG*?$m@N6jzW*6$8<(0^jVHa&tHmo#Pl9K5k(T$}?b);P zY3$3}?kwOwsjrT_ArP0--2f~RR|+Gbtpd%+9KysrV*7n&^P4%fdT#=*3x}73Q4j5P z*6Su)kp8*zGy}JJ8Yg)G&_SN5T>na*goGTh_pR{lUJRT+qM%Km(=W+R!?*#J8u%5B zm%7DIY9peB>YL$oH}5UCk3Jf8?eSsGtcgHxH)x`aRw4U%jCtj0&rQXdfX9Ebbb5-i z+@2V>x@|eXZ!13zzs|Rj)obrM#_s>Y;#9 zmP0S8rjA$MnI@jGhd0}#LM5feU@hTrZzpgM@$D+=?QHVyI3P;^YI4_8Hx$txg@A*U z@*AJvMqm$|dHX-A3~&=?(g=P1T3Y33So@VA*)ra{fIiI&lWY@3mc$gewcXPi~YxQaEO?sh+2Zz7#GU_)<#VghSXyhpgF^D!Wbc$HP#M zzT?6tuG(m0-NcagXY&;q6M~IG>4eS3 zp~}Z=Z`+*&@xu$sm^{!0NaU|M`BLuhvjh~zfggVdN%M)2Q>|^$Vz;L_^c~?P+G43OEK`e+ha^ zG7|_)Jd9?@wlS}PEeer7ESevPS@X`=-$DrLc(>g8Eh0yEN|o!9J0Tri%Go`E>&Pbd z^rAmVlj|8HTNY>&x1S3iH_gCjVu9a-9eL%i^HU?=+hR$#2frW?UxroL?T@1+XQk4Q z=hglx;#D&dS^d)ESxVi7wLtIkvz0G^_gKT}SE3OM_mE&gw-fdUaSD{wUJW{NW0% z4UZLKKEljwlWv7+6-RmuErn|vT$V!`}ogThgpAY_rgkLoT; z9uUzhZ6jn6B+pKopY#=zac@t*t`#XJTWP|S(wUJz(Ed#4gNQme&*qXJd%dtxAy`c- zS7sZKb7ZUd+@{FHUdD(o(mKPxTUbbYKj8@&B!?CrMJ;U06 z2@tau{fe>+`=yUw`7B||Zq0LnxXc(;`^Jg|XjUNl*S?Y|TZmKUt72pf@3s7mkYyoX zW0}eRn%7n>vJOLjUo%JP@V)D!5Q#&Zl28ROKT0b=d3ks9w)KqnG6R zAQa2DNq0bOr+fP0J0hz6U^wX#XJfnhRBwAvd3zAl^e?y#QTiVAWBLM!S>oRoOEpl4 zh`Y#WZvze`ley#)!Tm}k_V(V{zoG-9uJ4s*oy$wfJ=xi~>{!+(*c^j;QsUUGk8{!N zY3B?@R%k)@F_poOBA1`eX|PQOtHgol~O#$aXOM@sn zjO-BZqE+_603@@A4(;n6Ky-J5%_@{4uQtrL3sKjezP`Rw&+f=wi>&o*4p7fuN*~0k zQu*touF_Dp35g|1L&JNQgp`q0&>AHH996V1B?peWO%AuTio6;LS! zIhm;6P?1cbGy1|X3eD3Is(;4NB%i{;&4OHKpm<9C+`rT1TfDVae{`)mN`?z_fTp$U z+I^vricuL(r^-v~ceCH6U~W!w#1%=lygxd?-p8XEg9!Rb+$C!5grio^bF|O~m z{)f(?vyG*~*~x)EejnHdOZY!{dI#>z+NNnZ#>BR5+qN;WturG+tto|5gv4g;`bk2S6{s>x%6;au4{ntS-d{?$Kd-KNR|S~wn@dYb z@-c_qYD1bf-=q7=$Mp~??TL`*2ovHS!LK&UBR9=Gp4Nr55|5}L3XZi)swJ6?MEk-h zi<6W)YBt*2-1g?h;zcf;byz$1izhk{OU%F2nIV@T&Hb+xKgA2z00Ii+vy`7X0 zR6L`ZnUlzu4V;Fx2c(q9ui33s7pVlhBEPf7*zeug5B+UfLpw86h$TKpT;mw8$~{K! z-H41R|GubvH1bL>>vR=Xq|b97-p{vWnqBV`8lphL~}V5`KI zs>gO4`n0=6@Da4;~E~`6r{9IB3-}sISUy)nx2T&UzElt`vimxx_&X3Xk;b6S(}Bj|C=gymmSGY!-a#XR?rB{xf9f|&UPzwkd>1fo-i2n?Ar0(FIe+=Et{U|_?IGl z3A$&(q-xp|aJ_;v5<8_ZI%!xcJk~uniN7XG!EZTGM~%)SQu0k6W9+?QMUvR1je*Lj zIU$~JSI=swGWwjeXt~p9J6;aXm_P`OT4$?&3+9xPA(A+xY&t&hWgP15=b%|0PsO?D z4^zIz9rnLWcRTXI@2V^Gw86|DO8(c*<3u%v(#y3>%%s_*LHpKI>ykbjh|qmsPm%K) zK=6i?1Yu{X*T_(8GN?Iu1Sg2CEI7*=1Hf7LjiQWGGj*!tEy(F~T~#ZbjLTlJQ4|z! zj)Hg^?$vdRu3E9wfvw*$yk`nhBO+<{+A~^^AF$sqZf|Ct*TRyfz$w%wNDDE#KzRfO zg$o({TC$!SQq*mxhteXcT;nu8rmNp0WPjG)??0Laa^19WTX$V>HN35J1Q;QNTE)IG z2z==h_}qD+iOc!}@f@IDwERCXiDy_r&-W1n0W-5thMiKfL~K_v#(`L#zp9>)NN$og zYRQ5%VLOY9>q78)LUQeK?N#c9Au3zCU?i&!l27=e;Gql3AsKF+H)v~(8;)%geb$T=#4X8 za9tOgtf)&@ge5?Fj8?$hwPTeB{dE7B6?U1TG^E{fsi!`*!sR{Em z4<;Dcq9pG=b!Iwb8c0E*cI|HWO_AIFv5yG#8@nn{%l5wf|Kia=zxHEE|C4?mh5D%M zlMx%6vNZX%EvBs6z`^DhoF!o!?&2vhXo|xkYYg-2%Lx9DxX~g zVu{)SKYK!(+wiyJBQ)6`;aNf_XMCZ?-_;lTJuN!ULq(zmlH)|GlfQ}v(z`mLxzG3U zL?O1J6uRkiJN}fBYFZa_6eo$TOt~^N@vyv50&&R`C9j#Gxk!&2Hpw_z{HQEKot9v{ zWblkZ9TH5~=UG_ZJP*g&q6#ARnGpF)npR2;++%}mox!z|I2=5Y|zJ?IR@doHsiv&%N|F0-|Sa<(OI!Qw=@EHFh!>Jjko?Ut( zBd71LE}mA6!M2uIZus5jBYYkx^nM3G(u+SpD-}-Qh(5K)OmEq~EK1fX6H5Oo?*Xcj zO`>_1fQAu?^T!JDuxe{nqj)AsZc``3e&Y{)EN_-~b1hx4B%l})>Myr{TZNqL{3;Ar zYtxw5sK_p`x3{15WNMsz6I0#vDs3Gf9z!q9B#Mf!Guxgr_5KK-VUr7V)>0D8V}-D5 zqf=l1-=c|zcefLtwQnRpVLT6OH-gu)bnlYzyaH|MFE2NDnrvpzb!J0rMNQW~J^42IU&8v@^z`uwHbN#2mJ{6mi zKIN5Iq9zNQ4O99na&$LFk9x8&be*Zlj!IjyG+M6nm$5P=D)8T}e*ZWJ1va`x9c8}{ zfdH=|xUA)aq}?icMKHqmXAS&Lk2h8YEVX&{utT{4?$#S-SGzC*;Jo)$G%g#RDPWFrF;m`L`d9kh8Egf$S3P5juk5fP%7mtbs42-B zO~E|ds3LAQMc&7U2>frlx!!xVJnIL-(v+e%MK6}t|4X9jkws{YW5~vW$)eQG&b6A% zcq!BZpa@=hapn@9Mg+f?xm10=tVw$DM@3H+QEi&LO|th<(pdx%MkGuA=QWI&{a;=4 zcwki+j_${w`RdOkPo3L^uwC|aswQT|O+?KL&`~~=q8ePeNn5uBcsZOWjAHcYx~)|r zLJh?A^D-R@%!z;$7&$4$w1zrB2Bl72E*U)W^GCmVj?W{3+mplSl#Pu89~#&8e=pwB z>|{giJ;lRt^r6KhijC%@OwZ6%vG469d>Z~Y6$TC^nLq7=}4?i zk~hLk=w0!Lt!}$GPESR2v9QGJ#c1TTyV`FS&IrG0AsE`I%xzqIIWv>e4>0E0L_>Ax zdY|;I1@pDLU_Dc3Wv3UZ-{$O+;a`^N*5(Q3t7L^g+7sz77b{Sh3E1(wdbEX3zoxb zXu_tf>!mUr_sUejllJ@Fw^|=56*0L4hI44*wtOWEnOy8;v@QSE1CYU)xZ1trH$sEl zw&-vF?7F~M@aggF7lLvp{cOUYoa7d3T%gBcN0tFqR^b2MGyb@r6af-s`~LxCKak+! z_sR1|Os)Hg5TjLpQUbE+QnQCPXMG3?O1X0hqa=Ep2TSH9-8+AQx~ZAR1556E-}8rL z$(yQ4j>W|m8fma4dfPl*&W-^81)rQTH~-TQZZ_W3s&RSmMb^XB|CV69Y3cJf9{MK59CS>-X#Icyr5WwKZ1y*{g%dK z>#d#R30Hxstwpsd;L%8>qh&0tW}*$aoLXW;C-7Y9Se!o0|vsFnQCDS6B2+J;DoaH=MGl^Jvqb;m+D?-Gp8{|b} z2Ym_xZ;Q`9-(DqNUW|R1NCS*4R0-{xAjZN4s@8vu=y6Qc=(h@4sWZ}i%<`?7{TV}w zHZUh#5cZn@X5}$O8Rf~$1D;l=!J!0MlV;7!5W{ha5LVU1R4^wGt8G)P_nrqjb+Luk zkeW1G2IvD1f$!eF9Q3=HI-jJ%zf4UZP%K;RQ_ZrA$qBsQwjj4?*g#2HG2WNVnhD-Q zTkHN?zI;lzh$5ty6Vc`+!F}fXC&E7Rfk4HRGh0yyzXrX~=|8i5yeJ2 z;Z&W{LA~mF$=Ze0(x>8SRHggA)l>ML@LgwLT~M#NN2;2U3BjZFHLxWciY>FBXo3*W zNzXl+cw9WLz^BfkC`rqq4tRJrt{8$|yLzr`&ARnCM-Z5lI?kSn(%cLiR|+lREC5-zHn7I) zExGc?AWiXo`s3(6S#M6`PlCdZqLRT0b*$3fatW=UY7W|49bpF2*kQ;lNz+7*xZ8{M zJFESAB>0&5(SN+%1bUe%buEq#OJQ$2#G|So(b>6Kv8*dCSigom#j!I{A zpW3}m1sp$S*qE`BvB{}eKT7d*JMW#W`%(orOJgVV773XH2%E=P*Mu)rCB(hCoQs&M&ey(zZ+>F{dNOj^b;9z!po6j zY^|sM>$5c5A+;T-;LvK4by8_$mA@PE(DZ0t1`nU~eUH{j2;N5-zCI*sY4x(?81V5d zI^G%S67UquDU||${n6^=-RcXlF#xhWw`4DNUvVk6MFWFne?5^9SZcW>_)PikU(NK! z9LtVBs`BZl+%F;yD-Og$5xN6qV8A7yix&kwPqsv*HClx{`Js(z{B^7Iot>gyDWNRM z^JKN@Gw2I|r_x42g!4cs&$FXtWfQ7&Z8y~C=jOVqhR4lHIwM7Jj(x60d|*5(IIpnF zk!Vqb$x*M;+RArV^*mqCAPF|#-!RD;ZNg9g`%p4tsrVp+_`Fu4Cx46D^3T7K?%yMN zo_D9EIo^hQJ)40`7y|RRWsi8{u5R?nz5y){z)tFNGA%dobsYUfqlSY=AqT?CmK*AV zB5r@i0}*=nNeDbh-(QvmZY65*uCA|iHE?xpvopz>@unur>>H`|-=^<>*U(y3$c`Cs zk4d+I9HrcvarbZt_;+2IX*w+nVHeacZ87lMmtVgReHq54rBMmR5r&eU&lV=Gd1kVi zC0Y`=e4hnCOT*!Hf%362$2GlggtD?4bh|j<%}OeHYzeWBpD|}h7tZj%FYG)leQVyH zz8M7jw@@SguPj*z;(ejvR+$xpFa+#;E9k%cb^4*Vz7E7WrTQXCDC6#a-_j>KCgc!oTX~^KCRga{>iGl6Q zu1!JgDGX5Jynb$>1%E$RZoh_lPbmGj?q;CUkOQh9jqe1QhYe{LS9uy#mmPLpQI>2BWI`1)!*ZePZrob`{cxb46zI=}_t}5Z z+hR%-5uFhRW|O>)nqVS{x_1}W1^Z1S@TBlHwD9Te>&^OVb+snnOK_%r?*T;iw%*+M z06SCjVB4&*4(5+3<)nclF$@ClFCC~J^G*-!vegIdf1_4vf%&ITY9TB{65!gizvcJE z@%0Aqe0KX7+YdCYFuTk=)pKjo2Qm>#@3Mbg@@bA7mJJ8fkb_8Wnl_aUQX2IVrl5oc zy_T%84!2C04Xk1OV;P=jV1Iy@AZiz2+3`zYL?{eHH!>xr&K#++| zy;oo`D$Ma5#>vYWr4>!a61ts<6F^LKBMvoaraj#Og4H^17`vdIuFR}^BuZf4fVc(i zoGBySf6X#&Wg|VFzo)?%^`_5Ho`_T}XNBA4`x0BxGqgus1|bV^@OMM@+5HEBe=3JA z5J4Ps&Z$vARY2lUqa^%Nggear_$RUb96%x9>~h?oo8jSiaEZ?&>9pgt*Y5bl}#cCF(tEZ7D)FL!BDD_b(d_kH($yR~zF{B_Z) zyQZ&Id8kBJEKB@;lGEw=q9w1Cq0Ay3)CXR!XvRz^H`D+z!6oU80q-Vfw9K1H$mf(S z%d$qel^Wi(vF*AUL(&u95k2^D;AZ=nE353^X-;f)9Gq8@YF6!TyG@mEG7og#sC9C3 zQg-bb`rCwwggH6z<&rM;Ox&YCQ{*(9`&+PD4eBp5v;w3coJvFpUR2)pUP@3m7I)Y= zT%V@_&s;bo&9BGLwQk^kP9bv*bVjr#)G;^NtZA8g?3ZJ;307h9Pq%~@A$rwGwtMZ5ZxFl;viKVAqc{jT1mYcY1IRsnU9IXD2C{;1i zaYf{X8PC+v!(m^uXv-vh;mk!W#&(@9akPyTIP9VV zhS3;3Hz=w2UnP+X0N`Z*!-Qp%e#*Hq5AZRZw`pUtbu$ zuM!s^eI-sYmgPHj+GxEoO8EE4mHUv(lRCY?@wQdc&(?_LNNs3mfe>wETU<@J`{wT1 z9A^SUoVtkSqp*{0q{^X1r#lYoXUs5S-d{)XzaPwVe4oyHj%f75D>EkbdK2zxudB9} zo<{8rIVQU5lGM2}^FuwvfSo8Ap?in)1qRM@VsaLu(=@{PPJ%7otA#m{Auhf{z z(ZC@?v2e$QR9#Yy;uCkIch~`(x0tdHggxjls$onTm-nz8PQ04KDRw97OsR6p24m(o z%Waq|;f&Hd_68wu_i)bVLagp^;FZIsw38?lKHlC%L)0FD0{2`_d7Lg6s4qkqXmh?F zdHnnzf&Vl&iNTf_W@`N>wAn`Y|CJ~toDW21X{3&y`p<4;e&^%mAH( zdZokN16X^efa&C@?9*-Hl<1T;)^{1dA2Iu$b?;v6=a9gCAI9v_IY!xvd1{xHUX?pb zxLx0}++e{v7_&+U7SO*c$vxj)4e5GAM`h$1#erUf9S^P!>X>IwRt zt}vq&g+NcA@VFu*>Q_0tv?xj>`rN~pX=+cyvbU#UZO=`cV{FR(I2fN?K_Fg%XG+&& zE`ReYCk2T2wkbvwi0y1GgJbCuVQ~J~i}MrtO}lsmBv6sgsMiq+yKK_uWBOl8LBJFZLH0R-3}X)Qr*Of!1|yO+}M@>u_+ zAGG&f;o=w!jR(sqvlvf~y0V1&H(&IcpqM%ecvWF)*TCBWQ)Edak{D;-qEKb*nWRFS z;Taa>k3)I26kn`0ZSj=r*!met?tZcvk6$2NcFdxoq+uj4Z0>Q})uGJt{^tZH&9(PR zFXe=!E3sId{MwDSk=BX4&}U1En@i6T&M`fVXd+Z4+cUXXf&u>fRPew`AckS46V_1e!4h>0>EPmyU)QcTUl?8%gT_V-_b@s@i^4WQD^2fiaVf7w#!Z8p)C{o_b@>$gbg>GA;`Nr$6d$Q8eC_3 zU-DlY71;E@tShK#cmS1;deEqpDKYGg$f_9~zmS1v?EuUx)XHrctBreCD;C`14B&Cl z(J1W$hw0Lo8~)U@4E0%VTbG{SJR2(aux~DR#Cvy>Npne-g35+4g(7PACQC&<`}z84 zkHL`7^lvq!#gR(c5N|j2hHXeH62VeOw)2NL*Lyfm=v>odO2E6qblpZ3Vai<yO&6XZ_D5eJA@_#ai7YF}*B>1`9~xk#q-ojae|L?V!*RkDfbmcOFBm zF8&J6qm4T3uomhXOInd2wm%}2t76>-F29R;QsK4|O?i%o@+br2j!-SiI^j}$+=*f4 zK01E9FBFMu`ztwqXQvpwuM<1X3vr<`TI#iS2e8l3DP050;$*AU`oi^~Ut|GK(= zYf-}aQ^h4VVM7R)7|$8LZ%Yh>t}0S0_O^qra~{9*!HFk@E?7l3mC!Mz(;2IGeWoLP zWbeF%ej&dVZzyN@8yA`WZxg9)h`q09j_wTqMS~<_DK5-j=IzBLEwle)2|P>R-x6~o za?prCZ(qTnV6C3OlCF6Jlag+)m^xsL4?1OJT=i-hcxiQpM5#g@LmkTB!Nc65lmMYl z=s8_L2~bf>a&`U7=tAArfxaZuH;xE|o@NMch*Cy@-7;w|@Eqnc*Fu+sAgAZ?IPx7D z2#Nmz=l9`t{HWYor8~jSV*#RJ08FSP>#s@O4{?AqKfpEz#AJsw$P#es%G-3vd8lS! zUuA;irHRbP3F)w-!rFBOfaN+hRD($mOG4AsYK^to*gUU$k?VbSn~vnB1!j@wf4Gpj zUbpVOqQR&CWZE_K!G@V7qKP8!YZ`|DikrU#8?-SV`WMqD>OWvw#`lZy`C)zZPEfEx zMCWWA*EMU69JtBcjxx>sU?{ZR#XJOZ_{=nCq~12JUzU6kzEy!S9+5)sv_LDoo4jOw#?+%P8cD|*UW zGE2E&3M0Kk=hJRWQouQ?5C>4Lb}4&hr@W#pwqkoj=DAsehSrH0Ji9y{Z)YM~`-zo} z6x;XJJ2!L!Z95N%ywhEacP>ESJTef;QYufu*d2^;E|@M9AqWc&>WzZ{4oQ1#fdtU7 z7;bJ%wG|dRQ#4pb{7bt1SGSm>6~AdK>x9Zw3ovEFrn*n9rA74AZC+~mM zoa(e*<{tVmVvfIp2lVgJ5G>khml2CUS1j0C>?~j$z;J4uUA+25%{jx3EyCRof>++ta8qQ0 zbuUX*%#(a9*N5msgDS;-4NP-!3Lj*UkPBj3&Y^=zpy~3l$!99|C*{=~)?n*lu67M)iD;OJ&T>m(L2Ij? zCXz*FqjLL6(#3 zo9IzD%Y>i-(lk`-y@Ko zZH}jT=2B*2oVcG=DLr%j@i|k;V;90JpinF`!tA!2&%>Kqx>ozZ2Ytc@ObvlA?gs*OWh39n!izyTa?~A?K zx4;^^lajUN&mKHmuRh;H?O)K4uof)R)=2XcX&(a!emPmGH2|A6VEUrsFn{o55j^O4 zDARoT)?;gLOcQCNMK-qT)AM$Og(J|CX4sAN*n0(;`n`8Yce03nWN|>|WY!uf`r~aW zfxhdA?#{DtKj#UiBv8zFu!k4YS;m%(z<2BSFp0qJafvNlrfZK(Vqw!sk|+xWhSL?j zN4*no6E7*UZ0g}J#Y=VlQl0$Zw&AEmedct8Ms0`&Hfa{b297_C z!^)d>m`64u`M~E>(P@+UG}w}wq=q0PH-e5)|8%|?9o=nuI7xZ0PM8+)1M$^OWfaUW zR7D<9F<7+9-y4rkckVlVX`EWp+-7MnZ(dUc=(gMLh>fNhnl&UT91wH>Fj&3X>9%otqb&Et0Yv+nVJyb$OxC;CPR1zHQhGua3%2US zpZm-^Z^M9#Ic=e6J86zQl{fq3$of?6UqqR>mlya~zYp$kw%b=|^>geKM45qE(qRz$ zhp{+0_99zf-$G`IR;G$@{-i=<9TwI+W={{aN7g%3O%hicb}zMvCgLZH>?{`HUw^mk ze8jl4W6ZnAy=LQqx3cal#J&c2#^B7g3*l9J7X&j*2!6!lzdw@m2F($QKk zTQl@N^heG#+0w8>{2>da;%OhT@`Nud#bmN2FeIhn}?aiDYum0zJBil<;|!{x`xZtubTYs z718Il>4yn?&(-|=ul8D_wD~EVXzBa`4EOWg|F)Q|NUTX&n0|Y= zskt+dKF@ywWLWuR0Mwd^DciZOaE7M_LFXM@Is?-Jp~DLcbUrkShqH;;im*8mBCrdR z1f$~~ro?VV#&wS6u8tB5Qu5?ejSBpaclR?2a>4mRIIeMz@llS&6eYeoF0ab6mG!Mq zoi9N89#;ULb7O(09o|V!N;;Otr0|XejrF2dvyuUi^faL5JfRx3E_1vUKD^y-th}1< zN7fj$UUNs49%uw;onS61X-Yv>a_8RH=g%IG-U}Ieuof{-JYQ#AhayA1zL7Hwc z_Rr~Hecz{GYyNUG2#)j#UOB<$so?ta7LsGb(&<*-HQa+V?qnqRwYU*oi8+q}a817# z7o6tk>*Z`;jFDIG=*>DDG0m9j^+{JZtM94aPaKdLh9eMITeedFj47kj`~jnBr|XPr z+y90KWInv!S5W8p7%(zoxo*S=PFC-aq3_&oj>vl2iJF1s_2W&iok$`Q7VC?Q&Wg&; za=Qkp2$jaA3vx20ln>*Rk(*G%v71;pnYTRKReu4SzXT!Rt09CUEwnPsrpifjGAY0V z%(Om|#H5i0W#v>2ooj3gnq20v*WF$-+Y&pI94b0Xppm+p7TB!3m|+#8slAZ6Q04D!t}8#Ko*Q5m;UfP@<@esO0L2 z%|N^bXbFhBxY4{JM1Zfv=cny9M-dMrL);MBKg- zBK9JGPZaaEeM5c5H}r0RpVB41Yow~QIZI`m>O)keZN)$6Ua(HJ=xA7y)8`~mvcpH~Ry9d@dS4mXDp8Ah9dm2MKqC_1?2?y=Hks2M_XwOrV7&qh+< z>%Z}4Qo4%_#~O`_3S<`+w%q1-KirJKUw4Bo^1GXgw*58q+a#$AWizcr29g(0-_Aux z?;Hq#H9MaE9B24$o#}q`%ii&KSRZ7ZfhxK51@w-^Z|yNl{D}kxjRcnAH>&=(zIHEW zuJBOP;QjvMLvIyM3=X_tW6=SZPV@jO@Y!sx@8iMrpd`(co^*3y4B7qGyR0u!BeQia z+8BljUY&qUzZ))S z0N`9*O}p70hS+|4`>p@ueGV3?x9EqoSC^_>bBfSuy;|Rfl(yDSWGkszDJ7BV-aoG+_HcAw ztK0nme30&nDLXQwSl=`Keqaz#g%wgY)MJ|+yT$s@>W#hi`Wh#*Zo`>t$9wDcHSYJi zC2)TYaE;tz2f!E4_3`T4WK)V;qsf({>7)qOpzRuk6lYI-n(#i$jekheBc@2h6tx2{ zf*LM1ko|S^w|_ik#w9X05_vb1l+;U?Q@8x} zM?N7YMw-kXAy#gR;nfhZrc|jVL?Af}oUQJx(n;hF6fr>ltNk+RV zwhhA5$mg(6NsTpqG38(sGTh8&s)BcU*sR?n2k<$m(6zdrCn;xjZch*o+h-u8lA&iQ zP-h(yIJ6N0@oeVTq-QOwTN_*d;Dw1M8)_&F+Sj_1`5TN53m)RYp0<<@Gy!|`<%e?4 zLaw_o{I}jvA`{{`ZRUEuzLc+D#t9T#$LeUZphUH+_ErN6_Lor@oY@*ImfaE22&_;s z(T;?u7{ZIAw)^wyT{kh_mj8jvJam#woM|-y9`&dq3Fr2};Y8u`bAh}BRXjGJ=|0z| zMzH*HGutF!P)Ye4mIVtaE;iAsSspRCNRWe&A|Wt!sE_}T;81oCdBPHeef#fb4o{vLD=Tus>Z}az;P=;w>I6sh!o@o^O!f0T65N6Jn8f^1PA>3b+{4IizMMF z&lodgvxv0&`R$xQ=L^wwv~73q^k3C)d3q*dCfuAxR4OR85Jm?;N23z@yXCu)(`9$= zcY8MtAXg^C_CoeBfF5U6yK-w8p(E{iHRE`d9ujy0c=S*1e4RUGT9;@@i=aq-3tju` z-Sy`i3`5U9{5@&8n&r}8U`3)*tUR9au|(*VOmhjKTD8H5^sw)c=e&8Hu3(py6yx84?I(aXZ+57OsxdhG_dY9>9GFD{-QiE5Sz6P4(O+=I*TJ z7ezoR9@X;tIpxwK|eu@Z*8KREO1 zJo0*(=Q2E9HLLt!otF+Lf1kD4GeK_*+*Ov~-&%&WhNzU$tZl!0Il2((3(Yx4RTTgD zgWe=4e5GYr!v^V!_%NbT+ICEcQt*O8)u+$AdiE#JSQyvG=-!tRzx$c*P6bC-<6ZHK z>!ZPo8z;!AVPcnX$VA^?nZWianCRwei`NmY1QK2@#r`gtb+*?->!|lbzkhh7Ascv2 zdBf=ffAzb!1OwV%x2%DUB9vl7A)bHpqlmjiBNi`R6g~r6YrK!|s_8XJD&b&`%edqF zfzEA7tGW9i>GL*iU3DcQ_DZ*0%pKejiFv2;$W!I|w~P=6GN;r9?h6&(KX~8}-ule> zs81)TV=Wd*XqI5>8v@~w-?+bMQLD_8m;Y<|@Djhj$!9@@iokR-leb1UMFT|R+Dqzk%-j8XS$0APb z@%{Y1M|%?+UL8ho<*j+d;1cV8m#-y^x8)>SM7~WE(sM;+MEN&l^;q9Jl~}obG7_NR zvH&5{L`+kSgE6nxx6F*T{)*ZPots}3s0(+p@xuaq5mgSg$ME42EwOGkqu~vy&sr6R zPo7ej2 z>e2^?Uwa?@K2FWIUvW0%dP~jLQ=@ROBoiLDd>7IHe}tSOsjrNI51>Rifi>pqJ$6yh z;PzuC-s%)Ry;-U9Bp>Wq$f*zq3VL78A~Ezm@QDbdNyUwL7jLF*G3Ie?qpr?`oQiHr zK0~i{dy~oI@A8u3ak$7@K`2M&FD z=j>%7Sns--0zoBoAlTOG(5zrAR2v#(OmA!unDRg+nf6A#{1RoH7LOlbZ>+0`=4h8< z#ia5+eg4jw@%}n2u?#T`6IK7-AVKzU1$!q*;@k)mABVEHhjl7RXZQPT=BPn^T5y67 zN~jv$6OE{-n`!bszYCkGCaL;W8Sh9E@y8Arp02cIb>rZ?_ZlbH>tb_CDlkdPc@d)G zojY4cm2J0z4BT{lP|(HCD4{yD{J(yuFceV_Qq{wVvw`aVezdI!q8InKztpt_e`9-0 zhg3{@?2wqW?Oz#d9=`LI*O9X}MvF3=e9(QewG^?WmL2Lz#>2KYpa2#tK2c0`Nk$9& zjm6vMitic$WHQvt!@o)F}*3iiJG{YxH@29{=_*e)J2Qb?K@mdMPFGqB; zV5Ufaa0wD#{q_zz7JQz&b5>68I)HH)HPjt-q_{+XX4z{5Ac6|xZQET9=O)q%5~8Om5Xmk!1J-*zv~L~qI>nl zomnXh2gne#f(W9HNnTyy*6`OmJ(l)-=?D;L$$SdY7mGd&d76j81F)jSBs5n+jF)=# zOi7>*vz)3R|1YL`o_I3oKuu~2Q`Zp8_%c)xr@>g5odFOpL7fh=C5E&2Uk`m8jkf^@!{dlcn2y!yJX>1 z*Y4_fOznr+kZsI9&T)Mv)hL^gqZ*pjA&SvLl(?;wMilU`Q6aNcV$_6EDz7AWz*IbN zxIZdhGlG{lz=nztF=DIgbL2g{$+-K{LBENg{NV~;rYtKmCYwY}sn^*7c6Pp3_qEiH z#G5h;tY+jSiA$xE>J^c+AbBPHErnf;=|MHtZFYqGlq&8E?0^fAqSLMoy{6;d$D`tHyqr!WBChz+L6j*O z0SAROQvtPRC?q1O8z^_z%&fxGOo7{f3&$9dngr5)Qn!4R3&PmQEFdKiql%C~7vaj~ z^W=(1K_o35)ht_4%hu85=Z|ALlF`GIQ8g(SPe)O9m8bEmsglufQ;K(rlkbr@ILD<6 zszJzVqEi*zm8zwJso))6RZT;V-uo}3SA2#2Sfg%9I4qW#GS@wiUpxSg6k=2&(h1qW zqj21BF`*tg_y^>zH&#tK{hQ=Bg49wXfxd;XEY^<4?K{2&KA&E_9|WtA0RGxlu}%ww zllZN!`io_1u7m~d=OSi>@VV7J*X(9AR~?WWL+f7Tu^LNYR^1IaEmH4Sgpb7`hOR{l z+5?~dF4(oI@`uC0zR$4pOAW}FrGp#k+<;cH!crZH8hAf`PsE6XENDj=mEWB^x-Uxz zHTp9RQUOUi;M8&2xGC8~o|#BOTh>S~dkDd*;<5pP+bEC)L^#A#-N}F~g#m(>u~JRF z75mC_ZjE1s#qy3~C9v4Cmm2rSAe6JH89{JBvTKVFUWN|7_h?bVwCB5B|Do3)k2A?2 z=x{T{@oMc>YB4o&$UagTSuUdDS#geb_b=~?KOAOcAF3GG+jJuQd$CtinwQh`7ul|W zO5SGMjceccR&>aBEJFjd+VVzCn&7UDp1y%1PZJ0O#5j-$RNxk*08-}4w(B-mbJr_k zx8CQ}ub0}-cE9)Z=m7VwB5+y&eF)KWBW}<-Work7RcX&n6VyRx$VBX422-{7=)ZT0 z%&?%sNIe!W#XH}L+x{k~*Hu!$RtHbC#-OR}MQ-RquY_)8uwd;M)yieTrUYHMf-o8A z{jJ+=PnR-I?CnD*%mQ~&mWGuMJ8jQ64Se}U)vW*|wgfL9wnt6i@td|ys+8zH#X zM2XRKwl-v!KBuZDCBkbw&6mvNpvv(vcrle+*>hqv+UKfOmi`-`Nwjnl2&EFC)_jSQ z{(vweK|wfbD9;iN)XiBGk{yh74=Z-UNxt2yU-~UTV3N%Uc1mw^kVX~FQRD6{Q`L#l2F*&=P(NcE0Ep6YwEWVfzk zXREK22dfCC#4J;h)Z*|>9J%N&fK*)43$3TjaGogFXsMD54Ed`P(yIG^h}cmLS%Mgl z+$R{1E*@MewP>wJ@3EW>aN>> zI)|KR2laAiOQCGpMVMzb58Vi3jGHQ8{d@+S`NiCcqo9&0*Ah_lUw`|)tugr4$gdTV z7fQKN@2*j$Z;mL1p;BsT&`VASK?N#xC9f@sD(u+%0>LfJs&`@ zsH_AafP6G;^wNVeTgixEY#J|cY^DVP*1US3OZ9^4uVtofv1F+_(N>5j10UUgMV<0h z;O{YQ$)W!hB!D53QeTJQ`NJ@Tch8;ozvdEc}52KJ*V6WWO?Ps9lqZAwHW~`zMtT;nlAx zRouuPOGo)~h5?pZUstAwD?JBi!9@l7Sg)=UxBjyMSC(}3Yfjg16++-*$u7^wyFTxf zv`R`l<$;03(EhLr9gQ`iuJ`n7{sQ9I_G*b!4)Vl79cik8I!;da!^6~MBR_}PCX|jP zDrYGZY)A+f+7111BmAw_rDPY$yC}0I6v7`>pw53YyL6n|9TYn(S`ai95Fu5p#zBF7R&U;KfCmc|H-Y(-;pM%nUwZo0ouZ$ zX)=2xl+jt!3=ks#%93tRxF0ep6oHVs+~tN+fu8)r%a6VMd_8d$Dg_#t4S^WJ>0S#V zC)EZXqOMYas6@|E;6nlLOHQ+912*&Ffr8TCm*P~k;54<%fgr}4OVpZ%5CrnBTFhqs~Cd!OriR5wN z+~(#alkylG0W+9YOdZ*H%W0##TGN~jtEXv7)QTvq=4%oC;)6HdY&cHoq?A0OMy7Pf zD9N39@W)gHt}fgFJGK&mO)MGg?6Ld z>`9iWA=Qq6s39nb=7!V#UhX?jt;U`UdFh8A{zE_W^eZn8i6a-;m`H>&n2sNtj*@5Y z9o-*7kr-4ZeU9BnhLe&B!ToOMdbj->Z(rUUC~Fj1glL{P?$y$@CRSzJkd7OA-#MCe z)(`+RcK3r-!il8hLmo;h2A*s6^&frm>Bskt82XfuR0d%o3s)};7CHHZF(m>v1B1#M z?O;!gw-zucrR<-5=8JZis$xy2S!3#YJ<8OydO2%l%LN9*WYuKbRv|-G2ry|G+*3-F zGluh98&B@+WGMvFRYUZUZ z4-LBa;Qo;(tc4xqq&A0PmMwG9m5tJ+p|x(ZwdWT~JKOj6LVWQ0Fa3M}^w0j$$2M&j zO_vS|o@k;(&eB+VbsA(zL50)e$iw&m>B*g1{04S|0DS3R{pRj4AE@XDPFk0mAYB#$ zP%1n5jyFAnZ2D2Asv;=DsZ!g@&Ze+~2+gC(O5LK{{Px@L9+UzmSXEX^j#MB+*eJEn zGqz&v+3V~Z!vHf-$b~K|lpz?9tSOo}+eH5Z-}qdI_sTp)^&F4=|@RUsn@$-5Md zMIJL$t;DqBHf8+!+h7slVM)VFPkkTdhtJr$_PfT^^?GzkDgg*pI0<1ivQV8{pWw+; zRJ$&#PK^|eIe>r-;UrCA;T_X(Qc86~<0y7=scUoBChHlndRsbcmKiGHBH*!i z?S|&_Oe>I#4oNyHh#$v$QKyxBKaL7;qi`euj;(dE5u)W<;t6|EK>L`Y5@ngAw;1yBxpw%5~B-`dwMSto#-Xc(zLIna6B zmz({aXm$99H9bY+36c6Lej>Ts^s#iycHjBYFYjRSW)pk40hm3|$G)3KtxF?By7fce zhwVcd(E$dQY9M?2xrI(uUnn#=Bl0=?kf{v~8jmjP+V2`u*XvPMeyuVSymAMS0Sjc3LfP4xY_(Z2q`~FBn)^Luxr}rcqd01vFQfCQdmgO4&tpZ! zqx9BeEC{P6ISs4@hsFHrr4K;nl=6xrdxyqs9IufcoqM_yN=?VTH#sJ|50Ghz)qc(@ z_>Bx$CKH5Qhg7cF&c^K8thrduJ^g?G!vFa6_kPjJm44%?a_dG?Zatb}PGk*{W(Qr$ z(N29%3&lwPx8;{QOGl~J1D4cbL82{TF&rk&3{|I!z~&>;7HpJAl7f;GuZxgV5m@rbs{dpT~6Yh!OPHW%`*l^?4!LPl2`Fczv(R47y(1jJV zMH-8zCPJwW_Jqk4TGelkk(fso^GLyFM3pEB0mjseH_egCPBe%#Zqt|H_|w z;kWK|Oin7#gEYzDSK`8EDpD3VQXSyr<$kjGE+>z~ve&(lM{QT#J zMZXyOu4&bm(OvwGLasg3?e_5$DAkNkc~Mf#lZLP~Z_fSNJ2wuv(FaL3N(EZvP@)Bc zRx2@1qZmAEH*2+J6p607P|1}BArTYPhGeA_rc54eb(g;JwHKa$l1cleAD{+INI@Hj zsO|8o*KrTU`&e?!V%7G|Y!aK7pZ_wog-9;ku70v!YfN3QM;P@@Ftf~&d}8B;)*ac# z38BVnboXIv+H|cc%92;ZJ0zBLA~xS9E_f7sfJ0y=Qv_f%vz&92)9&?aS1(`5JS@$9 z+#|;i53Z}<78qqR(9MSkh_a@IhwW_c{DZ&$_uhH?%|cJ1uvCO_qvfOsa{+@5Ng>94 zea{gaA}D~AF-eQXoZu7BJyQ}EL(gQ)sg%Mt*E0UmF{ro)5I8k<=wsdU033#}?99sy z+9+JV{9)6|tys8>p@gEN`oklW<=(0eA~^DS27sSiWI9bo+q+R>B9EbM%T)Rs+Y84g&tKzx)VF^1@M@g+9H)l@qvoj{_d3z z-lrFHNnXpyt9QKjA}t@0QI^3)FqBN0{Wfin{ms;v`bBDD_q*@^{C{};(zo~XMv9>e zg|#VmDRXSlZuPd2;(=6jC7Q8B4#1$UF-sR;eCGMz_4zO&r$NC`n{o{0PWcW!D0{~q z#C7d{zE>Lk(8oiViKLJh-Sq8)@>`d7cey#3Wmn5kDsHvLJ7$fz`+U!#O6AgMfhH3- z6r0ZQG;7eLgW1=A{KY3OE_`uq+Vl<8_r<}K6Fz@#zgcExh9bFSrV_sU z;?_@Ap~X=JlJW6T!q#hzsq1x*p$KG^=e6_GcGQ_uXz5gSCa4~s^eI;v5OLw$_SU3> z7ew%gljRuA5vLiFpB4_rvavhKh?253#@YVfrT5=UG{_TWWF2uj`Xa}=rw_MD_rj^T z|E!8McZ+~qY|QgwqQ!PBk`=MFVS27DmwxF#-h2NyH|z=cxxufe+!O6QmB429rl(Ta z1AG@Zgo2Qn^--Sq;>$05@zuQ;`lz1sGSEUTY}E@l9fIinP9E6RemiJ5w z3aPg!2k73Jb^q|4o41;7D7ouXxEBl14a%XUdp#ah1qm_4Fr*|i_Rd}Fh?t(s`5Qm+ z_+uBYdFeZBaA@SrIg2r1a6_R9IgpR{R?a*dg$}#^9GH;Mroye}To*54c}g8$XYHiA z#?w$`Aa$uRrzj3wv~6l*F<+ zumr$Z3~>k5WF&WCebXtoN(P20 zs5-kA0_-lx8g)Pkh}zDN2t|TQPEqEI?KZypqvt>K#M}x}ZXIo~D@slT++>*vQY>YG zbw7I}xkD8CG63M>!jFFG_a(cSYygHjdB*k7?;2Cr>k+O)grFe7W20dyJs>J@H!JKq zSZh+iU{tU+ndD(ZzccNojb#Y(!@ew88S!=9i(cTWP`p?yrW=z|`o(N^>D~8Q<7nVo z`$&SBVL8+EFU9K3%?%8aLvp4*d|PoImOT0tDf8N1*?b~jegFUYFPiWE;uf59AY9nk zUR;|s4MrERvm)_n&#;FVYU_(Hcw=)@m6NRgeIpHNIRK?2nzJJAq(z;Gucx8u-58$_ zb3@mYA<~LnLzsF?i+;IchE&Wk%9OGbLKirNop6 zKlJM6MtgPW7Y(+O%VdU8urMiQZ&FEy1olU^YTT#0ZA92e^sX*P{Z9VMQ(Hf7*pxCx z6T|gdW9oW+Dpm+16iwPDjpIpiuSHWvwQo}$BSHd$Kx=k!=iIby4g=`P_A)q9tkY>p zp`@nGec$(e|IS-)mSMpXkU*MQsp*ABWrmD?HOD{tr?MhuBwTVh=?pah&FG%`ux)`y)Y=;MiP$N zY=DJaih5D1xZ_>#p^wdl<~|@bQavEDihoIfxv|tgk0EO)(Y-&L{n~4<5jlIRAG(D50eiAZiC%vEhn{-&@kN=J+-@&o?uD>fuqR#egv4kVnc<)lBsnpZ^U8cnS%xqP$ zUFl9#8cSv{KuMxxqtB(Os>AgD_|CcQHk;4ki!^GqHWmmFAqB0(GJOe8)Dai9I_N9W z-BY%6q;B1~{_Z=IWXQ=4CL|#Vtr$euC}AGUG2n;6(YQnJsS3`)Ke9a71h>kPv=I+d zxOvcvD~C4YV3E4{!Rw_=J8b>k|K-nIc;~M@?U##B=6MdlX*CIIJTaPqG>8gwd1_&1 zv=po7mN0`y6TX`k=U;jL`RAW+Qi_P|W5>>1Q6)7n8sM1A1YcGat7obKNv8wONj1$N zDm>ROUj58J;>s@rfWTt(mHK=gaD$LoL~;S!noU0Q|6RIuy-CJWxR``k8UTWmN+E>> zs4x=@j%cJ-97@^`9%O4+45UZe!i{r!887%{p=H8n)puL!z>6@cyVPCw_a;Z zU9U&Cq$QltX|@04J~HggtkxJ;h{Yph z)>UzsWYaXmeD4s@Dl!I<2`Xn@vh8(n9dU^yDi7C*e98i*wI3RxDr@!{n=Uy?hzLc>! zdS=RdIE?lX2Z%?us$ENHl-uwDLm%QledEJxoE)TcGqOoNM)M%L(JUvBNdXHGG}t~d zv2wv;=fDp%Ss*y&d?R1^`q#hz!o_6h6B2?Z%f@uOk7;^?FpXdl^Zq!KA_>VtbO{bA(h|P2@dQfKN(c ztME`FHYd|b*DyTgF$<;H;Kgi=v||qsqZCZ#p}Jxi76~f-!eXopS9>gbbi<9Gz+5Gn z+yo#gGE2)gr%Bi3vM7`7?r;B{zxDP9??}O>H4K!caRUJ+nlHn*ujayJ9ERQikAl$C zpZ#pK?R-9W1>0PU(0BGn;|@T*v&?(6X(~Px=zaoM4x_4KN%XK3;MJ>Fqn`0%F?xv` zLjvGX%?|~W4bY${bvs*|M1)6=&=%z#M60t)citx_jB}k>fK-n1d_{?WMQ;R-;uf1s2n7Uq{xUuL(z^D@-srpbf=0qd!V z*q3&t3HxAoVe#gBfANpSr8jzJwELcSds;WNy|oT+2JSa4nv|m`0;7s#v^hs2i=KYv z#b>_wN)!(Rj4Z)q6l6RKkarEzaZ*GWVU>uJ5aV|Hghz1gYL_*n=p*(fJFoBMUwiB3 z9;cC;1X@T@#v(tUKmefxE~IJFHc2HLGz)LeZ#F;prOjub80fog>WNqkV#<<(VJDZi z11IlIVCh0bCf1INO!5ds^br9XnKYE_FFbqU_oTGu%&akWy*|ZJ9849@TJrfP&rcg` z+cqLhSf()d_YBw0sF|5ZqG{;QZ*OgO*=p@K8M!hMOVx^55{xArh=_>rjczjA-@Wwi zJ6X)MWESqVXsjbS@h6j>esXMjBSov_^RNU?HJe61q_hxb&hz=&+rRL0<w+YC6;c0Kl}pFxJX z?axmHkwXl5bP&L$Ht=ffJQzxZ<-XZm2pOlYLE2aB zHJom?`KQ17{O6vLA6!n_%UVQ)<>V?$yu9By8Hd&~RHdbnq;*8gltT+}KDEi$zyIG^ zwqgQkjw?m3o2hF|U9U%&qaKAoEM2~(?KVBN)uLZKEH8z@N>_Jp%;aTjI@z9dh@jlP ztbnSrVyc!?qLHK_L;E*xT)%QT(W=B)KkfMc}5>puyEekM$*!jYXPk-U%-RRxD7$PFk zT!PUFNpS=X><)0fSM*w*sLpW9S!vUMLKo3kdlzFB1OO8x(?FDjem`&i*447G&fBJ- zG>J5aJZYfZ5T*&O47SK=v$c(K>+%nOp=tE)Y=55GZE7Qwm2!d02BCnAXda|MAywvU z)$tdMXcQfhQgX!s_8)uh@gGT}L8Bd+mXCFCUSsNdJ^Cd$fNDfDF4@HN{DnM?Sz{>( zlOAA33Ds(534WnMVbV4`n;TngveGw3$d?`?a3~;mPoTUsFkkdnE`8vOdCGJsA}XK~ zBNg@I$F@f{R}+jNOsG0`1)GJ_L^<0H(E3Gb^ZDKH{gc1=$EN?{FKo4Yt)`3AAtMJC zXo#lKK}5KPyNBVz7eD*#t1sUw3ngoFHZyvx+-3lf_ApVvj{nD}!B=}xpk&3gsKIa?P_ihv{@@4@I39>o_4=Hul?BL&px>bAKDJ) zZJ|ane3JpBg-V<}7;R@J|3=oaBU^S!Edml0Ma3I`@}-Nvzq2+OKtceAB{_ACscTGK zuTKG@9wCV$;8OiBZ9van+#LG3k0ZGE9RXQo0+SskyNoDqz~dLrZ%rmB163P-k{uef zg%^4B^Mm)_c{?eVx=1n`J)&^ za_>xA<0QDiDI>m*aPD{1i`J2TFN|Wc4na1e3V_$<`e*N4ougT}Lm5cb@|~8`1Z|gF zzp-V%{k0!{?73$deXr6+1Y{%?td_yqbN1Z8ctRQWo+GD>Ov@h+OHS*Xy!Fa+Kl_az z`!^FP55Q3^%Euz`iPvPk)|k3ppJ=cducjf@f07UcV^VzPLf+cgG_yj`ld5h^RVy?G zD#7NgNt4lxEXggLFtY?Qr1@;;+}3p3b%5ZBxr)k)iiFf;cYoux*V~k9coE>K>Xo0> zmV3A|;+=*$mDv;3ShHd|gTaqIY*BEl(gop$HvAxW`%Smu`<=(EIX9%uS(z|)sf$g1 z^6&p|e{$#b|H)WN-kHXg5}PRJz_v{Z}zn9KnKD_431*-Xh0`Id1Gj%zwz3e zZe3Uw#YhXI)8=9hY)`NK>^Hyo%;Tjj=8i69r%zyWX@D(APmvi-@&*#PI0G{8+&_sT z#4wqK1EFZClsP9o+noKzS3mc!bC}W-&BQ@GkUH8RxMDs1yT;V@`t(BWKqShxH&PZd zA}lP5BZ_6AutY;arWy&(ggI&%ie;mfbdy4wPN!^IGh46-rE&uZ?Cyj zU(6uS)-2}pCbb*g#;^R!uQWN6je$`=bCkuRf9BceU-|4Sv)w&;G$|eJL*LdLKCKuL zcbil?IY4mCo|cVOd1ZTs2MAdqO@!eALG`Gj$KBLDctl^~@QYM21}3;<7U~TiQXsBe zxhi?0IU_M=NN#)c{qOt2=Oe;>2=^u%na2G)a;3(O2jh5|clowU_n7*_f%=mH1gp0U zENEfPvY*-`3{*ne+S%+;nhYjr2%;P+=C3W@{v}^)PVw*bl5iLe3Hb73`kTAqzSw3e z%%0oSd$t%73(VPp^D|_}gR1^(%Xp)z$V+%LsH3(vn-6EcH_v&1(pD3@d%M@JT)qTZ z1BHUL1Qv;cA&wbz7;9*{bI#>7tMk*&@mdasl3a?glVP$#Bu8)b02H$DHmtWe4Y6_i zmU+^&5}4ZS$8Qz84oC5SRF*Y8V;Q*p=ee5{t)IVz(oVXNt#C>iF>eSFTeEd z#kJx3mB-HSY?w*P!Rc)AqhEXO;?DIzBuj=(FQOIX9sr_QCG)bLGAK*ww9jLsl6I9l zi6a|ZAc(ObI}F*=U-DKhQb{tG z7&>bN{@@Gk`yZxjv))}P1~jQ)k_U&W!8{^PdyIwAC1d4cbx1!&X_SEoFI$_FdBmVy zwfl>k?_9rf(_Bra7m!)<-e67`okF6U8R3M4CJ-Mwv<2?0Mj*2QQhrEzvq|Y4;k)TpeRhaqUI-7GhU%&ike{SQC z{K;8<+{%sTzVLlJFFx0Ylcw-&iQ`$s2#|*ilVzd))Ec^uWB=;=*$EU$MIE!HB!NLC z0MvlUhB=XfCDf7OR*E+;;*{xM`Y8qgq7$CRF6qiq97}TZonK(w$|GaRAW-|w26vzd zdg^*ay3yzMjqB;ntK~;tZ4I}u@$`@X@b1&+hbYms?V>CU4n|S1Ql&Z67xpTNSn>Uc zOU!K_>G*X&u5qnIY8p1M+wby596-Hi|LTwb(J5bY1K}`1N$9QmuCH-)jj8MPXWxGQJGxOop2doXcg<~xvIJKtN-++>6p|0fJ(BsAexdXQ4}SL z`eDnmLzYa75mt!S;s`CKEzzc=u&l6u*b$b3vK*Ac@*>d`NkAe&kr1&F>&$SbXX}|> ztE(zA-@V`QkNYw!tGlbwGiZPV%sWvrlhsxA^5uJ(_uOwgCj>UOD5W)Dlp+v`WywAO z!qz)-5A8bof=Pgb+bJ8~1`J#Eqq51VPhlnXT|YJPSo!qU;)UtuBZuvEdbdNKH$33i zB#jxX3h|0ihcPXyI-JHr1T;jDGQb=?#6pui(J~g`jyG8Jd(HIt=J7l1o_D^CV=7)s z-%Mg&0xaY-dL&zfb?a@nYp=y_+%3QS%>#{GVo-KwYqw~t;hw;|x10C8=Nr4YKXWHx zD=0&dHVm(h7&&#sS3vq#5M2Q-J47G8^T;dnS3Y&|acnsCF5LAwd);z`H^Eh_#d2M0c?iZ-=u?CQ zBf?P3Ky}t0@6+Cnz2%c4!abqLhs_DXQE0(E?_s`Jz8eHHV!LvZ_W0f4&`5gj!xgdVe%3MV+b+#xqd9rzLp#lVi|60+vC}8s7dG+sL`Lqh zpbIgvrU&*iyX*Dw2Csf=Uj5T+Z~Bm5QQA(M8+&dW$4*{oe)L2P{F9eT+DI1GqfcN|RRX`3mDe+t>)!yF zH}j1?_mn)HMf<_$FKlhzf8qRd_uO;$v*^#AeW`1k-9EdUkV$5k3x%l3Sk##x=?mC; zUK1tg5N=qe;7G3Wh%I1+CCS^|8+jyS*YifnDt$?ZeFP4smvta~yB=5FsKBc=PPHn@ zZlGKRgUwy^^l2&C)7B)v7+Xxs0AxsDgN@94C7gkR)r+RO5-f9jlPGix;^=UikLRYR6CG(J6 zF;xw{k*j5DRrr#H7b}XE5`B7UclY#WLRxHZ&EE9U-}u<Z%7LzLGHBvp2vkW*vEOuPrAsqmFIj$nhgldLfo#4sC*rlF6!W z1cN4VEof6RIf~c*PYMnP!ktoi{_L4eo9rxR(=P2SW_R9px^2>;6f>g+IU7R&kuV78 zb4br}U#;i5U)Lk5^|6apF^;4S^~+ibBp6{ifg%!MQ~^bkWGo6?_bY_@+=SIJk@{ta zC@Sc1`b+QlNygGMJ>&AVulnHlO#qJ9AnIu%IYmw!23%r8XiY!c)zev+^@6 zU;(4d;2Lt{*ZFeF5VpLz^{X0|(d2{l&)Q4~=@d;QWh9)G!J}HnqE3kvu+V~sKpgzb zBvwm>>UKm~Rj(Yh4~>JVjue(%>`!R^xv|)GTor84?m@B9hml;RhZPi^Nv@ZDo?BtC!-jq&mi_BVNzB-{pssKyBWj9Ks2dZ+&z6(1MqDETKnA zDhtRVGwUHkrMbYeGqq3vOQ^V|5`qCNeeot8e|Bf*m2($_YJ_?U?CC)W^(LBm^G7r@ycya9@|(% zZuYM9Q?y6B-6@-L<^1KeF=;n8m8(P+D1{A^m9}=~PJrof8UTPaj4xro*=S#iYd=q0 z>Xkom4a`KMakT`pr;rkWk}}g!%&umC%ZO8w1y`C``!iHPI0;4-;X<9-seRCcccE(- zit^R?CKHgA-9VxRGvKC-NUWOqCX1t(zSvDqKlPC~`#fCtEy9VC$~IeGxcuo9>E64a zP(OzZbcG_fmiBbux(ynElpQt;RPBOPRSZ#mBQ-cBN>LouDJ zBEU$TBd3n|N=4X;oY*?zF5x>KnEszn@9tjOiSRZtEQ`iSQLWpSo{nNMxJu9&L8!=G zk^zjpr{Nzyzny$4@wR!6e%5A9cvs2WnTtE`xijU(rI*ho08k+iT)LO{bxC1$ir$Yn zV{OeU*V5JcKk$0Fm%#d@VEq>lqR=xfTe8gQqKSFer~Z)4?@eD;eu3os`q9E*rFKiv zio!4mMivE|Ci&%AKJm;QTLqW8S)idyf`t|{+> zi}h8JmQ1UDUMhw;%X+hc+J`%&5VY zC7G+240iO`iGTmikKQvq843@pE{Mx_xG%59nC2Zhb;MT+_QyXAs5LDE5HgE6>iX`t zZ0^lAKlIVhzj*TAW^ZS+OY^;K$>D|)$x3jqm|5>oVjsdHyj4*G4fu39{p6XmPN%cL zdV20yY!SNR6s_HhIC=lQc4YeEQ%`SLV>!2No1+wR8AR7%iSlaWze9qsW%$JdIpf}I zvf7#mAh)4K>U+;$ymaj_^l`{>im7(rXz)`(7zA`BLrpF%n5n+B{pl;W?e6s_&R^Li z`jQ)WAo_(dO}+G?l8m|J`SzuRquq2m?=#$@W~i&K#WG9394NX$SRGeafR_JKxy%me zP{mch#xM^H^iWF50D}mN!sN?7?SqDTs# zW6=YkEt~~vR9Z0T#T0=eP8!T6aqQWT=CjWirKHF$n;G`9$5vQplOja7_e%e{3(tM- zzB|5tt9vuD$emPL0zea1ggsJ-Db(CRn=l1LKq!N!8#6VTi>@~Nyp2Ee&hI*!HgerF z`j8CZ*pc+ri*a-GRiFHgYtxq+7R_v-E#UM7_uYQ%#LmUeFq_TN#>BjsX0*Hj5Yuix zDJd2yf|le{G)eQE(n~fybN=PtRfrHuL}4Hp1foDDqtKVqpFDBe+HN;`HcgI@uqr_< zwI=Kf8GYPT0+w``!+fY{(L|$+BH=Z;-J5x!*lW>(KdjEXGDN%TYsst#f;1p9e%Ok*+cbo$w+&OiUm#RkcPVCp5JAp)93P?1@rbe|hh-@GFoZCSiT}JbX`tv>{Dp3)!9y_xUMAAu`ltIqAY?kL)NZU5Wg@H@)pt z+U!6JIP0~nZ~NEgzc*s!)Df@0+r3OYWf;uVmY4uv_m-32dfGR4&#Ucr`w)sTlk-H& z>Uu}YGO1WB!U8O4Ufj#S`O@~KzAO^ib&*ojG+tQKgN7!#A}p2y{Bo2`$Lin zRG_RVP$8BU2nJbbO3UyZa1XRTvpm~K8=w2cg>z5OJ08t~H(sa17!66ZMWrMUa1MrB z^UC?BUpV)xYA*G;Av@H5D=Z9TIAvTj7(Z+$*ATfuRz_%%nB<)G@4NHC-+RwvO+f;@ zHgnl9css5{WA1mvS2mCG;I{?{iHL|WD?n+{+;_+3=~E|v^X%*sJ9`CYCAmy=cn(39 zEP^bUG<(#`v&qL^Ja?r_sp}9?iVP~bZ__l2mg{D652^2ia4+gl-*pFoS6+OHgHRE1 zy@sPN^3@KFCAC1vVR0{BFq91CKrrg6efS8>tIPe~fP<@f>L73d^o~M!$!%cK*d({z zxdmTgOQ#wDj!a_#6Wk0Ya}_xxAi~T_yy?n16 z7$H4O!$HQuMtdka8g)=Ta_AN#YAJO+6;De0Gh3@S!1|M}_c0xe3k}SW5dj%&n{vjc zu#HGf=b!uJ<+IPSi{l_0W627ulFJswO$PTquF$(E8$zF2zI5)hL^`qg7~?M5405oT z?II?jbmJYKlV!;K3*_WY9T=F=L!M;;RS&gjRYEb*YL> z6YAi3E=u$^-hA&QO}l`J5R(+OpU7m50?hL)TD*AnEWK%LB9sC(;UukTBLWOVkP>nc zC7Qt~!1}T{efqT5(i#~+tfbqQ=~VGLZZX#ms2uWkUeo@m^C48t0UMm6g_(@CH-vVG z*Yqt-z3YG|Rh6_2!bk%RUZj3eq|&e{C{h92s0tY@#cIQ>tzNYxrzJCzySuwsN%Yy0 zP;an5ImGj1{d%sR*(gVUS>TFFnYqPm*+z3wp?I&cEZe87HZ z)0#m*4d21xz1L2rrN`MbXC}$4iI7=H$fN=$l_pW@5wz4YWXL9qJ|=B<{*`m*&z&=J zslge+h@04)#L`{3wsfgPYMTcie(O6PcvMK1r~u6dW8njq2BVwX$f+Z~(xX*!$fY3! z$y=fU3~Z1H`Gn<7=zsrPrtiA<==K6LYqF#1_vmS%9*tXRUzx`zo;>$_GrgFaloymG zv|w(FHN~6?SYZ`q_drilaslQZsf%Q9dHBJe+Kaxb7MO7b7lD;3=tgCT|%NDSgoQ1kwk+B);otG z4K2OJ#O||LVCZA7DR^P-80S#Xy81 zL{k`L@EoN95?Dx?7oiQ?y)gUmvoHMCr0d)pl}*SE3ozGN*s7~h-L^v${LDGuAoT^o*LP!Ww zWg&StdE_0B-hTI+c5|MSdwmgYU?bJ`mVi+z&ZT#!JSZ0eOoixN%O@086K z^X7$UkN_-93r9{|S)EX@s7^Wum}bb{t5C>`+4hA?i`|{hQ!IMdem+8~aj7gu^^JwYBoy{nvh2~wv3pOR-g|@(KYGW9UR*r;(o5bR zeIch`IP;uOkIe#GQF6|EP1gt}gt4d?C}T*qTp5O@Kn7O~5n(V4IV8jByYDQ-x#wS; zHVumm5yLF0QBfxuBZjrpBsd9#iVy&uF|?3Sl99g1bC(*mg^1ESys=bNQff;9lowXo zaKa@SRnx4FTe;K?3q27IpvGv8oDrE!f*E?zy`ALkvh`9qIh(3US1dPT0t@Rk7s!{u(l?$6)y#vL z3B|%fthwDJlA+$20tCVogvS9k_p9D=K^~TcUhV@D2_V<#P;$T(86E*6oy8N?#*xo` z=F-bg%{H4!-s{^2W!|s}SW+0>2ZNic_f(mc0cKe%ks!@VnFkV^%UAY3v-|AlAG)vU zcq*a;GvPscAQ&1HB9Kdu>I^wI4 zS-Bi}7&PKmO(K1gL5OKin$su5@3}p_ebcwC`OwSTmX1z)SU=Bhed1IhMxn`yjN$Bu zNj`IBi`DqQSv3onQC5gZX_m{$Q@0^Ci%@TfTFEj-gjTEVszzuE*@AF}=ryVqlE@4N z;OG<0VYAtMclXN9-flz$*cUiKkEl6#ipML3?eq-XqZqxKELswBK8;&5lAxLGZlT=9OEgF;~KuEo?P?=I&^tqz- z$(5eZoxSuM>~;{MtSAb6{j%2tdjctVqzL4`eE(a&>Gqh&9mWM>0R+S%#^7mKhlR$) zXXMloU-hYAtP-|$rI09N3+t@*)Wmzg=H!pQb>qKy?Dn_fylMA{bFY-d5u53dlv(WmX5h*NsLuAXj)2xXH-}%U?yH92H=80lM>pc0gYS>o&!m6AA zCZAh@M~3#FNz+&+EeLg!~nyHmoNq2b1@kun9dl_%Y5 zvXgc1uLzv6Aam1GU%p)LUhnwTdeVqlcwpkY{f* zeNJPB1!j!!iDgK|!>%ZlCMEU7q8JD?0aw(GMZW1}W^LYvlE4MH2L#kX4Q)Fl|G^pVe%cKWt^EH`IgcyYtK=(8uz z1vm_*qU26xK^{FK?WATS_ij;;7d}y*xoom{;alEv&yT$O(ckw?->*n?EW-cqzxL;T z;vf9%Kl;>#9XlS;&pS}Yv`fx%IohD@3eUIRmRo#5D{oDEWJ58`U8(GJG{L)FYj)?` z=PoAq1ev1HB}BES3CVnwoE0qwzcASKrb@V)Q5hT()X(>}p~=RyVV5J!k}X6<|;fk}!UX z>n8Gp1zUZYO(@JD)wH~mA{Q1Ne0L9lP2bsjrku^U9eHPq+f!=Q&k}86Fk`cb(z=AZ zed~|E@4K3=hOAO3nGZu#+BYv8iFAxpN4$~YTJE%JkV68IvohEsmlGR!?oJg+v)Q6;HfB4!-~W9d_>2GP_rC9Uy+e#ZVae`7!k_*R|Iqh+-~%ck zS}k(U3#Sn<52}aZ)@I_k8bYm|R!c9Hp)d?)HamNBTH}_Yzy>v4xEV?eJ~P+zy;*e< z9cc53sC`C~gd)k^`+h##-J@w~LbmT%x2Ef4wO{%`?pG>Wy7H|2+X*K#3S3|gMyf8V z1ul;qR0^cM`OIx%ELFZKq+kTfu*10C{P9&5s_PGiAE{ZLe4Tv~N<`2iprQyX&p-dd z#`JhmkH!Iz)!48Q4rJ1?PphjJKd9Vu^^P2jVTNX?P_B`^u{n3~;w!JbWGO|+oqd#) zQqIAqtqFj4eZx1pJGJxxuwgk}Nl|hn)G9>?MdufrNP-ILQ_ukStJ2 z$&J|~@4Ww$AOD1u8<+r>mD(L+smKDz1O%TiW;C*W{NB?)@*R&o^zg>R$+rMgw4`xr zn8Bek-}A|x{qA3X|B>%}*Z2I%pZ@vj`3vplq~8v8lcK$B?XGNd-sLpERTp$s^_*m6 zLmo1~N_i2JrkhRuh23VRMs4KMvJDk^Ai({eP!nUN5kcsxj^Atj!>c)~nMo=oJXz`U zrE`~#oH`XH#CicG3|0gtTOH&o=g(TSbaJPGh>ae-p|{>uDD*?eS(?nWYt7LzyYqzo zZ$J1WKRdhdp$~rW|9jz|-{FfCeQ#MvHG6HyltdG!)YV=HL!4c;CIkRwy;RH|NQfhn z!DhfrYG72pa%A(akN?`aS1vr)#mT-z7Zb(YQz|(R`upff59OtZG!MSL6`~K%P6#wA zAQVuMXbR=jx?^(X+|H-$<@U}~@93jf<6Pu0+p~Dru{Zz0x4vhyv@#aLuyi0;_R}A@ zLu=xoBgKBzgEtuK9`VM-`kR7-GQ<9wIHaF#(xiBZ5+$$eElRt8H_u2FF7ccCB zy|Yb4P8Y0iayIi)05ec^{@qB3WRr{K{K_k@Tzci@Y2Sg-o6Y+iDy6?-W_R3v`mQ@p z{DE(H*Sj9T6I$M(%Uu0N6=L0gV}+P+S|7$%p6N&{E)dtFLJ0-91ZX=axfTW9U~ zb_e6&WDqQdLVz(aC|BmsyNg zCyO);rz%zFAG6wO9jnN-hzSx5Att0O$gZ^WFmE!q3U-sCKf=F?Byd-{p{CR;6zQAuo3 zL=_|q10ImVK&Ze1Vc}$WW;D72ZSO>4;NvNi32fxygGD($FzxMGbo;+RbFxeelt+E>c$sFq1DW+|^u^BnTtnL^LD9cyl zLO_t!%xZPB2_!>!n5lC8unys@A8 z;NSn{fBOrced#l4GM%=YCC_pW!iz7OXvCmkvg#LGd9-q>n+@6Q`Vt7bF-JI6vZsmq z1+Cv|PyE)eUD|%x7kj%+YeWkKm1SeKlH?RK7`{g4(Qj@{H@kK^-8j-5KVnDjz4Ok=bhGU|p(I34YhvN%8OhKa z761toVS}!ZJ2dwMfQAJ1+(=Op=7Gi|-v%J?zx>f}_>sTzcYbU7HG5sRl_F!RBr8xB zX{2QvWOr)lhESb{!O8>;`#ft)ehtEmj8e6qJY-p=VR+N#_QcDJW0xCil2l}2W*Mb6 zvDmT~H?DF2BA4cHu)~b-mdVTm9^h^ySs07?j$1U-E=N^ww|XmmFf<(uz=ut>94Mqq zeWa$RrL1`_tu;2EX<}W!xc8OWBX521FW>jhlX*T%xzh#0&eZAAQr0z3-uK z{mH-gUp~M0%xr#sV`HNr(-6_P05Vulz+;g7wUuwus!%*MY6WGC$lYX`=O7mo-f$_4Cce2KMlW9(~W-?|a+VV9Q`7L{m)(7;O0zV|sVQ7^jZ7IaFEI`k=1=gdqeF zMKZz)WncvBTIe8D7HkrLUg*gNr4fS`YirL^dmIKumE!>;hW4Ezxr;EB00X9ihART9 zIm86vt4$&uTgxUZ6bN}k6e({z0xsPo>|EXxYT*nOq667X? z$50Wgw5B!3u~PlafMROPehqc$3Ld0$5#F?(Sv=XZd&hS~H1mcmQLIkSEQJ)b774FS zln&u)^iMrJ`P#?7?#a{rVR7oJD!Jlxy=7Qc%^NQ)BAwFRrF1t)i*$E~(j{HeDM(0n zcXvv6cXxL;oO%A|e0<-1`2oGQi@n#(+`qcl%=EW7v2UiWolCp@6I=XH%5OHB1#UmE zJK3f4k~9L}If%{0qg6I`5R5$xa*#6-TH$<>cohQ{MO;D08QbVR6U40s(Z}a@M#l4 z5<$vLoFmlp3h!U=4ev%(n#rNMu^$GR;)TT8+xo7%UZI`2IO(5l2wXzC&-yX*kim3D z@Ui@9R&V1*-q$c|FHh7laPP*8P3`k2D3c7qQ$gd7>}W^8rxVu}6fNy0`$#%pVc$J2 zp^@=L@>`c~D(rMX6V4-|GkZapECd=1T3MwUBGKp{l9`_@=0Zv&EGjR9I`4LR-utSp znbRu1h>**`C(xiM@x!4`YnwvJ2*2AG68cTYCZbO*^Liopp!YUB_8cR*lqjP7iJvc1 zw3d#(PVZ35Qye<8`*XgQAB8%7o@RxMK?7^(*i;Me>)`I`>T0FN=kQ+?jAi1{7&XPP z?67?hvXmkF=^h2m%=tv(HMq)fJibhKrCZcFLRL&1PX`-%)sp|MIwXG@^$}R5efTAVe%fQgyDAS`xe3Eudy$EegVT~#DuskNe z^q-)=%6MdV3- zuQPh}Ct0u7_27MwM)g%)GHEHA$gbNHH>h0;WbfI9ljNRqbLiwW&G_4P6sgB^&>W@L z=HE@VSX721j-c>yw25+F4idEh4X? zo-f+|QGP~&watMa@pDi5%e~;!c1*h~WnE?Nes;rqde%iYxZsFjMIKA1bZVm2atZWyu6?gdY(~^v$#R$ z@5>u1MAsA5ajJpiu(u1j?8a8^p69`zkeU0Dq<*6W?lg?ujWRxVG z{F<4c`qwcj&Sd9mIfG8m7PIfqd0+lEsP~BPeN}E^&ODYY`iq4pv!(9DxRBKCguN_1 ziNwnLeXl))U7aSd`~gWr9+`URfYhDI)s?LWKSz0|L`yqL3l)wVIMZ}jq zg574?XSf`LVWE)FYW^NJ3`duKynJ=`wM`}U7a}YV6e{xb%dzzQ88Ae;n0xC^z=VOn z3HJ^jK?{0dNG}{VK?7`C&>68|^L9M;I{kJpSUVEeou)`3$0jZs7$S_$QLEnV zCVZVaAWoSaK$*UCN?G07(jmFsW)fex=^F|+^F-%DXb=Pm-)b*k%ym<^f=Q5bK3!SxV{;$d7DaYfi zoKeaM3x0}F@z~lT6*v_JdpSE9RODn|)r^g%mNv;uKOH#}X(NsrvAz{|CR1acZOh^hD|eLdfyHF1~e&| zZtyRGJjI=?0TLyqh8`VSaP*fvG(+eTxoza+y-VfNs1pK}Kh(UP9}aq*N@-=0I+c$` zb_!vd`_f#V52g|q8Bd8U_o94T#4!q?Cx+ATO+=XZ=%Dy&&5Sxn@(!K?x%2FIr*S+fV-r>)3WeR-F3_)nPU#iCT zK8=4pDEHp(`kv-Zs%`GjZ1UMh!=bA2s8FuuzEcUClWJ;#Zt*8sET#i_ymsIb8r*t>b;(lBikOl_-sp3VzC2@ z(GJYD2S3hW2@!-ibjui~x6Xc~ynUYU5L3G35|;t@FgBK6QRmH`1kQmbp`8yP8eP5u=i+$YfU6G;!|1x3P~O zw0|r=#-)f5yYqLIa z7m!gZ`D0U5eIE_({xX2iEv0FBcXFGmr*!JBf3#8Fd}p!t#C~Rxl=F^|Rf`Lto|yjE zND2P|G{W~o4T=#sThkxOkvrTHRHS^NZ)uQma5NV9A>OX_UOOY-M%o>7#~Q6lPOvDG zDWivrMwmU(bI2+($v;o<&DrSKCAgu)Kw0ivn5e6y6m=rQ^qH2)Y?SpC$_cP_7dlnI zamPhk^>nkpG+T}^bY++_m1NV~o5e7au#yfdEfMh_B%GX{dhHQ9Ki{l9ovqYz50pw9 z8c^UF^ZVBLBf{lE#2t>j;%Pdl{;qmwG2~?R$N(?V!Nl#C^~yR1_JFuze7n-SUvGaH zFHd#7?Fqvk+oLH=4K@h*#V(`f_!&MFCudH9HjrZENf`4)?E6E<6S2$lNo4CC{;KC; zccqQTwT^T9LqwyFxlvebf$k-frc!jhZuCv{!YK&#?1w0Mqo}LM&XmL@MD#;kt!ri-rnhEck@C>q;n? z8ZY381j&)?IajIlc5(OS!@1(QXD6c0(JNY}&tU;e0z<)^py-2R@Nh~Jzr_06;npII7U9$`ISU0LEB#_ktIQrI~-0o*1eY^$&L2*4h1KCSt7pf zBj{eku~Qo68SYnwOzU?vcfv`)_(H>yC~&bf_8icDp_Kl5{hiSf|ElgLfs<7(swp*s zk?voQD1JO$zG$4hFD4WkPMako9!C669Cl>i3{&Cu6JdaWs+7{Ea_gh-3c`rRt1Rh1s-Xe@7z)sk5Do%~W(DW*Vt^1(xUj0A4x>PkLQ|+6SJVGC$s}H@A2IX zb%BKD)W^D9JKaA-Dx11TIu0sEjWENZvRa_`E z_aKzsZvygS--oLdCYqbhKN+QBv0+*p-&ra|*D2U)*Kfpeuh`ZH(g}PO8Xv z_5Rflrcl)QYQOj;@dMd=rlg*#ni3xIT4{0%${Wfr1{nMAg%>j4u{&jzYH3cqWQ;(kFyDTd6p(Cm70@48J@q6?mntX&2XyCY&blP*eU1VJW<@=GqV zlxdBAQ8A#Epc%H51U={F%Z%Q@f!QYl9G) z>!&(=XsrHQvpA8Wh4qh2L-M~Q$8tni7K-;aIq}0>`(+fXTx&{;Qg+@&N_MP(@ z9?5XY?SwH+Bjl5tf8{VI>omr2xa??Y`_HrM%043Z$DgZGp}BE3ANFO@J}Qjo#5zDX z(rA26UD9!0z96)5Ujn`V{AW;_zYc%T`geT$hwv4{FOf_7k*I;@Mn#R%v^ZL}e9&Bs zle?-h0cFd+`T`zimY!(ijkT2adni>^V1p=#(-nW@t-+mp9}NB-Ro5hE)c=kEXL zLwG|jn>O|$>`pKfRW$~LPx~!6I5_6*Wl!Lm_HB1_A$xBueQADCy0EZE@cZW?#hZ7m z#=rh5rl@X7;X*>?U@H`&rqy!xB-YnN^1t57t@Vs()Fr)!_sg?=_1P4SCA2r9CQcn8 zUS4$RBXnM~dz?mTInyE%u&Wsl^))6V3|1UQl=57$TettepT>n>tbS-rcBF&hFOK^7 z*~u=->tuQR^X1UnqaX20shrmKmgX+JgtEEHF z*j|S2E9F)~oId(wDemrDeg96I&E9r$tz*-E)OIJ}v6n1M;J(=g!^`$9XF3M1 zbNvn++?CaFFg*A78WeM8`@`Um<-A^{lAQwac^8k7xfsp?o%8Sahcfe{?hZTbF=!{9jgFg~eso%}*F5Q?J^cEv;UBZF}2p?W;d+ zz8d9CKJe_5Tk*Qw4%w1eDHXRZenQ=G1x6>oXt=h3Q{wMqmqOe}rF)uSa4;A-Z9tRyh zEUGACS&B4Rx~b#i(F%`WQ;*A@c=-LK0bNTZjvYdl3P}tzEN@21<-cD-aJC`faISz) zeqG5mv0sG$u&}`A3}-;filJT`q)?`Oe&NKFkOPFtyCXHJ{- zAt5*%3zRcX?xaq_Q0XK2`jLOv@EHED)`4kZ*nLE36gdg5EdKu{$^Xv}|NAEYz32b? z2R)~fF?izJ`$e1fP2EMcKBT78$l13i==RZQ-L8S<%d59Zoj;7P{hasV-cfR%^Niu< zAIS6DDk~UltE+aJZm%j{v)2|Vw|3>WdKdZiLe(yc7$$1l9ah?#I*JPfHx+r`q?{$J zpY7ZD@FY1MBqhB%Vj6F`>Ytx&&bc4S^o}hAW^Pa}kw&k=8i(dy0u&PMx2K~FQ5tk~ zZ{WIbhAVA0LS0#j+bv$W^zhNwh8;MbX7?=J zWcB7|uPk&IbE|`DPdPysQ}nJgM}4j;HIGFCdf8^D@s2A*)ew4i_m{_FxBT5sd|g&_oaob97j3U9xGsAq&MjoUR*f4U!{D&X$fC6x3|c?)dGg24 z&sDb-_qF@o>~;*?CK->>4}>j8qhwQ%DC^)_AKX0n&V+*Qk;lL=q4M98x+=>~#j*!f z>DO^KOL|>$GMa=!!{@Utq&!`^d2$c zLWel{ZFX?%WE4AZ?X9elkwt^IF9J$3xNu6sB>v1_NKoN2ez8Qd(E34sb~|xzUYa95 z^E|m)Q0ul1s$06Xe_HH1nZ13iQ6WfBK&=!@M1+WPrP3#X`}606Vqp<$o1kjdJa>MP zV&MlNowZ0}L9yJ!Y3`@vYH#<_)?3XcYn;FlR5lqU6_wru1DwhwE4%bSv!s%XXzG@& zX9brvvw{nlZ6D5!&*yMKTjxQY7Hl%mBfddZsrWYUIv`}GrrD5?FqZVJoG1w7Q9t}} zSmKtr!(IP=|JF4zUte1@z^Q5B`0o2O!<*^#MnZe!y=DPpsM=e)SydqRE<1ZeSJ@}= z$hA6GJ-Q*^2#B>F7<2(s9P#Q!Vz<=lqfMa{rNfGPa&gJtGkeagRoywZ-+|gyO5QY1 zMMXulswMN)-y;{^@rAa!-+7&Pz^qu`)v~Ij!jzPiF?{~a<8pq!Q2pIeC!Qh%TT{Wf zsL1JfzS8~fG=^GERz~Kx@%zP2=5t3Kot4#AcfrT~>@Or4M@=-L&wYqp(IyLQBi-HI z%tqpv7#I|kloy%|p=9BB=VZq$x?*BIqp8inadEudmVEV8z`$h{$^0|4Q$g z={#RyV6|9Nx!{{;7MitBaCWa$T2LUb!cI;ODGS{;8Cu`VgeV#PQ)kYxH7`#bLrhX} za#9gof^Nu`yL1w_qFpFPx6Oka2l3IPt-D(^*8gifR?o7Uipmrl&Y)ih$tqW5A2}z9 z>CX|A}kq|RU8|& z0}cKiB_-j>OpT@smYW6A4H5D>UAypwl0A3`NJdjg8g2+b82(&c4;vgDRLYm7q^5Rn zT?JoN$c9wuFWb!%WA6Fm;9uG?zN>HpoV4nUgCh8NeZbYxmkA??((Au=Cg}Nit!2{++3TN0lPM1i{SAjl zOhI%>8AD8Gj-M#9sAynd01^f{h4niYBP$m?FHCm(%Zayax&R^U2gI&(x0R&4*89z{ zxq=vv%K`9&$75pI(Rl<-mEP-Ryg+)nqfUoyN-D22cu=1Q170I;$BDMp?Iwxa!L-@w zB&z}S;$B`K^Ox^%umpq2p6kEgJx>xccmgho=NTQWy=d-nTZ!jdH z7e$V+&fF0&=3RkET6LCSk*TPZ&(RKT{&x@3(nbx{%?nFPp8Et}71Y)H6JS3hq*7qO zKOd^Kf0LH>@2im9`<&8lfP;yN`E+--)?k-y0%yy1Pca;{o}Q7Hlm`?-0-Kp)yVnbb znAzzy0^8G!njXLVZ3zjiZaF6gJd~eM{gUSpeZ6$LK&mkqKKHUbTk_cwjcSu2tf4A- z`3?#AI=uc!x*?Gutl?DNyG4FXc6N4f(`+1DR|7?Cs?ohXKDa`fqzb&;`ue`#3!i5~ zY+ri=+l=Y7sN*6+;~E8KN=6$e>EDDV<@sd(%A-dVCn-Q`qIKg-1Djzp($Wr{I9>UX zz&g=jxNZIBj3D4P)Oi1yEc}2Z%a#qt8AEKs5!6JpB&s16?UJD#v=0WS%e?UL@MNVe zzU)^M68OLkQ~L8EVJ9K)^u{gS`}IM!o$>ovn&-ogpf9@(4m9GRb-n#r>m4!<)4Nr( z2Xlh`<-fGAU<=2Iv%4-)n6ja*i|5Pu_7BwpCH&?Zoq00J0#C=R4JNh{#v0HlFrzU) zb%I>~mK_O0uA}@a8^w|OdcM22cXv30z(6l9BSy_faDKc{?frU{E3RXm;lf_yvL*SwPNF04h42Hg>J2zwg2;JvsGE4F$nVo%9E7Nwp zKNsp^`bkI?#q*PcX+#KWf*X-=5|jb3+sXl$G1k_ne@I2t5w%)3AZu%D!>}2x*V0;s*$|M|@6dGnK#Z>71P9*k!~3YKP0G^k|UOds(VZp7Vv5W0W98UvqA`U9zt zf?_lUs`5|qlle+WH3+T!9fwyXl^K(vxPvAzWNvmuhB!j|Z^VySvh z2=^>J7O51ErnjrBslkA*v_YBz5_gZSUxT4p!KX4f6NiVsHtnq?6&2%H>4_tP?DXuc;nsR$7o2}1GdS)Q z5)2Z~+TXzGP%z3Wb8L`aP(1iG^n9YvG4EHHet4z)?v9K=2imw>fxql=% zfx*ei$$>(^T6S8pdbT=QYk$iS@&gE^TBbd~iGkEp8XzrWyXE2;NyKlSBt3;V>w^9s z@w(-P3RY1;VPZT}M2n{2xd^SO6M^yh7F5@Jxs)M^DkZBtj+Ba`qA~uvqvkW+Kgr2q z-c7a}ooC)}_Dneb8*ruQ_dLX|-D3+KwjDyaUaF}6i;IgWg4*8K`xoAi`7js4t6uI4 z8(l#!UV>?83D#U*9p&d!A8SrhXxqR|JDAMXEx!YG(BA-q(39(VW_tRcMGFB_r_0?#X(PB)CDtKIt)X$c^obL&~ zHO?K?fq#T|YnzyueEMW{-^%lh2V(?K{}jdhekuR~Tc31!7w+8^hNcLHaTk+x7h3M4 z7cwEy?(BJ(#a!7+joDOoq`=|T1KrRMJ`&hxOB+z1m+EcOL8%9YJuEbI)$>m0KA~?* zqvpp%>)mSe&x6V6=xBYW{TnwkR4U$^C$oIbxLU)W&nXC3v!siX&m>h&Cz|=03(E#c zY9AFah6V?9-OS7!9oZB5>9k!G<}c~gs{bpuvU0T;=BOog)OPpyt5W0yzlzegQZW~`V2S$G&?jjRQ32X0Ju*-QM4@l#MG6Qr!^&MJNSx9 zOLt^En39b(PL~_2rxczir5MeU0=-;*C^kT~G+YjSNU>0^fH6Y2@djie&x}Q?q^QX4 zb^)9U^a|C*#77i4B7)w7{?FO|b#(IyCkz7-8kKi_w2@xuPm}F=>bH4Vt{|48^Cr?j~aEy7)K~ zoqM7zdVqxLa_!e|1hZ7VRGls~La4%-s7AwkSE+oiphSQ*uG1h-I#jiGw%2F3O81NL z61vIi(@-4=HX`(Y#8+hQhFl^dgEKjOkb;_et9G59Ri?VG>#dPqsE9c_`lEA>@71 z&G~MJUr@I3;SUCE2JLlxRIOg762N(uD8>OqMMKQ*Gc6k_>1S}^IT%9DtGcw8CEfUb z`XNd(j^(@tS%A}C=YS)`{)Yhn2A^#a@;r4Zk?bXObEtW!(Q#o=@MNO>_ zr?{-_bvs7R%3^Q6?mV{RxtHnC?>8VYY3bfm|9l<-4fdPT5)u-kq7)PrCrf_we0cC` zH#*fDVj;mpO(Vmyb|#Ei$uskMJjmbb{T=4c-Axq-C=kEPIf>ExGMx<@F}=3U{JoYv ztU39&>wLkBW-)SH+&c2}-9lCu9Nn$cf0R;j8Ohk4VdKdo#6D|YU2ilzO;%4D9TVnB zrZhRNkB7x$0#9@ioj5;PT`#veS6v{TA$%3yQ?2ZdB=iO4KVcFEJ$rQGvUq1lmuCDPJDVvK}+Yy{4L3^-CP{ zs>+viYOjw@bN|X&shD~N9{0&5qph1y>UL#sDppc>-5B-So|hfQp!|yHhQ~k`U2<`b5gkKJ#!Ll660;b#}bgE{Fl|Q&(7Y=+rEdiCROdowRf^>&Q<^3gIP& z`eA-V3t;PBMiGy|HypYX`$lCIOfkEc#~Yt7`n}-jq8GU;y8PT+=3a_IuelrI*YkX^ zkO2{gfV9u-0!2%FicM3JQs!lKv5mE7p=h+a-!o-mvKkn2h9 z+y|j|&V)9Z;^|#HtVHu|zETMV5FRa(ISAoDzr4oYvx{k$Y&uToT}0I(W(h2${NoVJ zG=Y1&Abz{ZCVnaKe7a>i@M%ZJ87Fqum_~^J=L;gt*Oqqn5ql$c2(@gpTGx(Ml{oAT zvaqsdK#@EL&E-@5R^z(_Yb`7+Y(rM4YZIa`9Cz!uJ|rY0nu3YSFUo%?H#F;O^!C+5 z6PR3yiBW(5{sjb>aec$dY8=%L(g0TQg9LB3_7_l6$Ol+#g-~WToT&u2)s_GsLvB#gghivXAz){au znz7^Hm|6(P1{`&;#Y{C+(*-kb{smLIquMQ4zdN3<)fF=i_d&O^fbXq}Mh1eGiZU^=@^jzHB$WhMV0XN3)*W z(ra7VzeL^l!G}h{W$6Y_lUGzcenbc~pwnwxWSeE5Jq-Wc`|ov?WnEZvVHpDPKTqZyd63r%q$tGkkE)Y z0v-)lVWC;WDclY>hqV=J;tCkOB_GMH55PX8y1HprBb^I%K(LxE)tvz1LM4;bjYIoC z{k&djMEx%&+{ZqHfuvX}{?)5D92Y?4Mr$hbsGb4&pQ0iX7dif$*tN4e7mq(YkO8w> z7hm!a)K$lZj@AIzPPS>o-TUx-j8rD8G9#1B0jSa1j=hHJ3(pUxjL)I?zb^sNT6I5b z4IethbV{}X;7jbfO&wkd2uGt~54@H-I`n||^+X^cFFY`2;qEz}K@Yf<6@6Xx+)*m) zchw-|6V(#+i(%F=I^C9rf`a}2C~`27OlzcSYcp@A@q@iy9t|QeVW(i5PlLArmI2wg z>95gHF{6HLgu@Ab-;fP)I9eXDYLlg@{Cq$15{#uew#wLM&1={0WY@Z)fQlAfdoX08 z*`gBbEs%8+ym1jDj+@l_IF9Q*{bjH&7!)$sp*Ic-9BmyTI$D~%C-inEU1oKY3HFF5}dNyu0roe>rG7g8t(B}MSKV=Jh$^=n>FU{HZZ zfci9i--ry32vY{H8hkp^BJ*cEjR1 z4#>U;#6(3wC>hOLb&|yscObzP6=7jwuGkNaC`|T+2>h2FaF70*+|QKUj>W9rZ(%9CS2CM%r2SeoJu1JVqT}5 zhI_wMQ__T3TKXQ_PimReVl+m^~4LUciA02 z0L5OT`L?U7ibZ>8tA#kwbxrHub~A<6ut`kok78u135Xqi!&%FKbxilsstLK z-U*%RDku2DR@?bo#MCsuylv61P=I`-*0p_qAch*$UGh+2ht@VG z9%U7k)|*+acm^H&#^q;$I8)@lk$ZHT?22BkuUZ!uP7%9x#nmSz!8=9tVQ{|ks;V5; z%j&NwP(u9!0}Cw=4${&-O$?HXPEJlsb!L@ww|0jeN9FAhkZj(IEl+rJ^5|$DiHV7J zqHmgUJqaYCn}DOaA1Go5*JL%=22O)R27P@=qbU|s4snwFq1o7kW5<^(44OvY6$AEj zbF#Ge{D1(IvB7ejp?W48;@0&6Ygf=3nkUBtp!%w6bLZ{v`*7K4ycepR>5JQLNK{~9 z|7OvkQ_FhXZv+9h4&$7HZ7Lv&JT}M_zV^J!nfWJh6cKSv1*r6y|7z#ajiJ5{odtvk z$xltqMf&<>ZS@B9&W>ek&f!%i^^OxKlkeZJUbs0q@3seGid9ROo1JX{^#+ca1x_z8 z4&Q)pK)_|I-{A{Y{e3LY62&;*OK>B-tfi%e_blbA1BN)mk9iV}T)gJ?_0)|Q3z4-hC3nI+=;^4qQBVg)ak>MacyHPmM1uQPNSD+y#I+BJ{ zva(hKS28IN%C7?;uaDXLY}UL4v$%g(J6!+t=F0WjV`DMI6o6speSdC%XlRJkh>}Uk z9AH0>r618m=F%!DDVf!OPl7#*`mx%eD^R!9%UlWp^$DrTr4miE3+vx-`e!2BquCP; z4GpH2-i^sZkKH0O(vXX>JFrGMyE>5a0N;GhligJ5JdL*g%v(LK!Q?~nwG`@8%F|LMYrfy zOaGbZ_2>Dz(7e3AB8=zQ*2VVD&PW1t*NGFSC?l(M@JAB^O1ih#GdaH7`K=c3_jE2( zY@Ak$KaWc5JL&)B-S2t7?iuw(00#cL!{}|-ydq!niI?|jLW05;G(%Wtt% zi!*)*6W)wYdxJXJ0aH9?t1t5V_wNP`-@@e(_}qJXzNb8iTD@u|xEX~HpKo+^JUsMZ z>sc;dqwvM3TWZUjNJbwX9`X^%SzE7xK?P9Z)BP=)&2Fv*Cw& zWM52DlH1*iv-9!10_ul&DP-swsd$DHFbjcLSvLw&BsE|a_UA958=9GkpPE#(`aKKa zPb$91O4qG-{^4rxL2Fq%tR*YUcaGzSIS_9*Zh%~@*Gzo$e7M{J1nBtq_+ET?aPaf| zjaIw#{5l=G4Dga;*o~v@sZK+FDpV>Tg-;J$$Tc=L@;aYxvt#Pb&CaqX!Uf;GY?57o z-joTBfZ@wb`TnCD;MM{YZ>EuBqeZuE$!4Jn>bZ+6yYsg(VCa(HzPT7( z1Fjzi7M4K@w|ExR`^>AoG3UeSf!T0wZtjJJ1y@(sAQWQR|GgM!Xx5*&2R;MxKbH5I zFCEM{J+B87njDUW6+2_6A>N>1F`7*461Wxh%r?hJJU%|c) z{Z%D2-vCJ7oh+f0ald+GrMyENkESp&HRZdR-h_aJHa0cwWI__)FP~#|IhR4F3da^J zY-r$$s8zWRK*nX+mH-DTfa~PsP=sZX3`LtIRnbvW+`HYKvRg0DPfj}g{Tr`e;h@_v zLe+&`RFs#O=X4Zjg@41s!s2vFSH+!ySzDEzVYdNj3IYz2-y~iZ4U4KC85=vh<8lLYoywPF zVgJ9qyU5FRXzu4@0-pADmJ6Xb0vC|c6a!VDoRrgun;RGyI65Mod273W~+wKY#u?W2!Hm0`o{$R~M9MKxGWX@g?p^40Rl{s2c2~RZ<>C zlQ|=qs|Vz=RttcLKVIPKR8%e14A>bQQsKi$PrGNzQ5Q41B}kWXcXgDMK=WKRohY716TLDG;ucH2O*dJ%phRX zcg?v(DzhY&2QUn=h|iNHrr#vJ0Mo;+&Yh`{P98l_c`L z7%(rEIQ!y$z&%a^kAdVtk8Ty=dl@1VfPFyu@08^D&9uIUSZj4nJiq=6#iRu`$@>)? zH`Ib!KpMFnc(z^Fx6+MDB2F!_xcUj5hXb|I)%78F`2kRBR-2}dPo=$*Fvn7xw!EDVyO%VZZLz}0bd#mnf7u^?$)A>sN^l8o# zZ0cU8E-_RgR3P%^GDUc`at(UbX)t^h`&`s9lm&v637R2cC#TPfp5o{FiTK^lyWmfK zs%0EEBvn;v3kqyOos=1!vXkO9ItHo$EKskxn``K=OypG1pbczjy zkf(djuImW|3kI1C5gS~mRtj}=BLL2r)mR17jlzXypXPHHH9k9nUwv>unBruc!`A81 z)%J3`^k>q?TaiMNN#?5U>2xc`v~LA(-#$pBQM=6bYL}9VYH?C8EbBibojoLVm9XeQ zJn6B^@vYO3)BDv!oxvBXrNZemmZ6_qnMQRl$De?e)PX~6_63k_K@DYbR1agp`6gcj zdwizQ7_{3>%=cX?WHT$!_ z$utWPGt>q&k53`SEl>NdYJFOK_?#Ky-j8UJVW$hEy_Mf)du z=K~qIuef`~g%?<9vnJqmkxfv<0 zEi;t@EC>fbcXEE!QRqrK1as=_lZZ3#iyrKY#&|fenDV0rm$Erm*a}F`>VhLgzrV-B z(Wa1`WHXv8(;3Z=iig0+0b#bV)u*pdzPyr_A}H{FSu`L`vN^4ZC+;K7lX+Ac076eatv^uzKGd?_yIXE!jv><(z76ERH^w%(?}e_Aau)@EZ*h^%xDTwLVo zt5aS%y15LT{sjSOcT^h+v;yI^&}-SSW+Ae z$zd#t)W*N79etH*G~DB@plOXv>#bMFM!?CURKP|FP50jjpr)Vz+6m!^ry_2K8~F(B zY%(`&>7*`q)-YT}Rdv$#Thcdw+(=^$B2H@{7`kk`ersA$p1`yWOKxSc(+7xH< zH!iOIVK0{9ctoX_mPmER(P zh#Sd|dCAs_GbA-uBB|yRY$Jf*ToCqhlWz4rE-q>+fc#huWC{Bv*+B=o=)b3R#AQCDvO*(LD0zzfhvV8C8Yh|l9zS}oO>h5hbYE2N6S z=biecA7Gn4Hn)8{TfvDJ(P%NpP$JRYpuPhrR`UwjpiV-H%rAv~4CK&EBy&t`C8?vi zr$shA_7A#@G<#i0BjLDHpaw=X>SnuV{nV+aGh1u(lt=u4PJe;S>9Th-r-uUV*RV5f z8khMy_o#_3EYJXm{EgSAvprff(YtW&lj#aGFC#f`bdDL9?aaPl&xfLo?(q4OMOf1~ zIM-u9Rsnjw%xc*bntw(8&@0NtqAZ96tx~TQ!h+E8YujXKwd;=p?BIX-L7`kS$B2_7 zfI&>mcu|FE$G^-}us1Szu>Q6-C{B=C&loKzo`|8TJ{H|4PQ~U-l$5{E1d$kr_gOzT ztODTsF9uy{ss#-MOo&2%DyryUIew5*G5j(nsi+o<&M5)e`SWv0$*68QwqaEU3tl=p zbMMVc?}`?xe{t>jS>qm&dTC^bgt_qAo>)`UBMY%`KhE~2Y3sHJQ!xcwaypCLMaG74 z$OnH7k!}J(hX6E?oAX9IDt|CLyjw;=R0Vcvlxn{1^gn-;W+%^?c5iR5p+X0{+^j5N z1qz)xF@*{`bbc%vorG%82BQ%NgG`VBqRWy7q1DOX+ZSPE1*671GQ0NGxuri&>-tT1 zE>ND1vedmRK}O&GOK!?i`QrL=XNZueCd|GP=>e88jo%#$G9W`ZG0#libIOSv#FZ)v z3b0kby&NT@K^_MF{?SRpr+l~zhu3!foprn~r=yMFjMVvz_h?!1 z7?zsa^kJ2cypwI7PsoIm$x|xQy?B3L1NaM(zALupz&96-2dqY;BO|!&dJ5>#DEpN` z@zHiMWgL^heKz}SK>XfVL$|?p1MH!&DeZ1CL?j)pf`QMWApaCX z#YHDki;$6G+DfJPlxHSPc{pFJT-7g>W+zRTg{|w@bpMadau+2uir`%oMfb&#T6I=e zG_}ojXShUk&VQyC;Hc20o6B#ZL}$R72@oblRR-yrA6!;0%{N)ugcKp*hw^$oyNLBr zGQntws2qZKy&Sc_S|}=d(qkl}T_rC6=ldqxB~X6LGEPXM_{92s6p^|>ZLJblIz)=@<dFl-3JMnJ?M?4hSeKUH;X7lbBcvf{RWuoW#@Oy9_N`IgPtWz6`Y>_gz zK+lX}RCbh6!wTY27aIY@Vz&nf5bacU@OIRJrw+dT)h7;_D=_iH9kceL*#7Fv&J~y? zMN^C>u^)l3)h|myoiGLk+rClTgC+YnJ|_?cpeN%>4lmpga2QaV^USiGX`-*tr34w& zD@eW#a5TvnXqgVie$w-}2q-#ivHubgHkCj2^JEb!4#mn4aqBEoBuL(@V!VbXbShuY z1|Z+O-Z4O(ku_vJK9Bo~krpS0>QdcSJj2aHkx)?xf>+?$+Ei&X9EU7}+$E0wMk6~l z4N?0G)Qwml+?iFKYtDpzz$7ir0R5RwoQY5N;?YfKU~xh&hIX^s*v4e8`7)Pv^J-BM z-fTmQ{xXVGEUd%oW}h5hpdFA>%gb$1)|_@DeOBha_zPc6!V~kDe~gn9jQIaew7Li? zu@lWQ(Eyf;1iQ(y=3*3i-v^;8I`>eP?~g8jtYi>2#)-oqT8f^G;%_$aa%Qfz;#2ZGp{1tiNYdl1Dk%sV9h$^n5A`R|^4 z1C2PKe;Zw|fL^ZZg^PKZAh>nwSVci>o^d3kz&$Z#DkpU+6w;6xVp*TmoL_U3cBZ@ z-b1vnq1=4K#s1LWcegp!=6ts5dUd)@W+IJK0$T6Lmxz)pC}lTXotjsiSJ=}}#R!P> zWu^j=37d@ikR=syu$vIg*4(f6A>u^UGkuNSnGi4CmVpY{<1nmIGaXK-^mzETs?08< z6xRbbdwB-nv~wc3I#^g%W{v6+Xl;Iu-_<)(u_}gf_FpFn5cAPF=WQ0xw8~@1(0+h7 ze3Lu-ZzWwHFQC)gAG@GhA~xx2YPtbk3!oZQO3+vV>LvroJq>!Aa$}|g#bv*KeTTy5 zU_2Ay_Fe2dymf=QHclNq{?cyq$lrRZeD-z7e|I_z*c>cEN#EGqOl=8bOKxe)_vgtEe)Fmj!1m^{U0OGSk|hDooA_P?!WZ3f9`)3G!idHHue z!{oSf`f43$mVjki_2?ZP9{#_^$?ES?_@T5l#!ck^bhC$thjD0M7q#7%A2~o#apS;)c5kdkO&_!Vn3R&yzqJ_TDC9_0{9S7I- z<$o46=SnOJGJ_DRxw$zLDKCQBNi;XSn_L=Sz-N&j=PeS!&EZ7Wx2N{E(6$d1pV?%Z zZ8wDHk($FR>9y)U_z5YL)DJLi-T}MDD59lSjo3&749*`DjX9NNZ3u>Cz|mx;?uP?h zyur+H_?iz@_sR4aphOyvW0eC#kCtYK{yAvJkD>^;yA~G3w7hZwok%)m#UYGIbg8DS z85ddt={Ca&%)qR8dRkjst^O`2B{LIvGaVb76E}<@GbJr68%NQ>CMG~dJc>I>wM5lc zss*`x+uzkf!OD8I5kzcXN6P;??W+G8P3h-@0KEp@ zeWiSXgJ?Bo6L=T!;5a$s>89`b9Bm^(qD=#fmABY|A!c3QoR>#MN!f!d=MIEKN*}Cr z=SZ-J@NI=rE`=npk6#Xp%a39H z@Z{XjOrD^12~d5l3Cwv}D~;K3Tvk3J6rv370ZzKT9MaQg)hM3-Nx%ATn6Qfhk6)N| zT?Go+pki0=$5TSaupmYS*Fu$$gM($DJ@57_W7e1{MnUjRTWPgNh*d5BIhP$%I47V&Qi?r~fYLDZYi;I(CZ3I#^2AlR%x z#MHZY#y_}nUTWSN>)>eQFy`h?tfZY+o}jQXlC(V4LmXM)2QV>#1^GGj`eZ4%?(*L? zpDuPkeB;Ck(d$iT00KUBXKi`05Dk?PBALK!xgLrLFj2Yp83Zg9dbxy9fzzz2iY4nP zDWA-Ke;N1R?f$2OqKYt0UqNR9{JRpnD(#^vWCE^tU2If!0VsesP2!%r-r!mXYaA`s z(l+7RGV5aWfS!|io@f$SYT1-u!O8-HAG=+6fiLZ=saC29we;0809R27Je`9R6%*qy zGabPVX~IVOQ{BZ*joHGLUu`wjVkow|fxvilcz*8dwk7jFj|{Q_K;Ax1occ(xF*7SD zP^@bji3U(gJ<}&13uFTP{2s5}A?Qh_OcIUDV7{i&YHXq$!%9pk)Hq(A|V$Cci#U5ulLMB7w2#;J7;1|sT*0+|r5M|1t) z-&pwD)V^YCd9ZqTPeVh)rFzBlSv#voy3m16QsyzC*D!H^ZuyZL*>-%FEQ2_KcMjVL z@%U|$v;zbv_92G`mJn%Zv>Q+MRsy4!i*=hm1nEa{ePXC2xnOTx>o;|t{9?eJ)dpI3 zLv6vDD4 zs=?=w-zx%iFyM{V8`o`^tmh*F=zVBl9GXltb+JcTW4Up%oK;Xw_f=bn%c4Wh?zA)`MR zzC3^gsqCF*%ez!oYzt~Q%$1?9py*mvjr{qg*qUB|I_7aUoMRYIy_GW*0RKMgS~EU> zt6{Ldn5IJCyIP5q{|p5!l&#v#PN{I zmd-%8N9-mbzII<%d(;a_ts4YfI^p|q&ERLk;#>^(1!`5Nz4gl>8?f(Z!B2H8C*Q?S zpc4m2*KQ4^tiG_jwFYHU3x0^@AVelcpw($bbazEWi|2x?ph`}!W5rY@+U=JYFd@p5 z&8)lutIzgcK+6ym1x0kyQ9Yykd~mu5_eK)lI3V#xFzMl`vezlM%*=vhGjq1#Von(! zL7K5@U@6OET^;r1soZh{<*pW7xbB&fyk)}U@gEv~XsjS}{U25HZw<=_X9wT$`W#(W z4B6@fLfPN!c69G9K9dEd#H)Mkl+p$BJ~jOl9g4eOY&!ksL}tvZw9e0y&f9{gs)CSb z&*S*^lq>ojh%lHagt_AG`ga$APt)h8q3G4=E9J5T5bnvVdyYhDMye{yQ?sd|I>`#` zEQ6N*LKnJljJ#Z667tc9t5wsgF;k~>$31`E#&hEyDL-lH-0X}TPf$1d{X=oLbPaA> zoxEwjj0O;t{xHSym=}B3yt=V0G3-vB(3Y_Qj(pxpTJ(yxkLT}-% zOQu-zx5(3xrzduc;B!FJCiqB}KY5Uw**nX4&MQj|!FJIzpJCAM1>xm* zq39L^@2v0WEdzWd9CmC>4_;UbUCGQ!RP5~I$|CL3c$g7s8F|4_+CJ2Y3aJADKUcnt|5>z zj~Fxd*bEJeJ_cjB0OS9*Mu%mc%YFTK7Ar_-PRYhObvSjmVuQniEN2atJa!|?~)0F}_=zL%Z#$_K~<;ycsL)pnVK z-5HgvKZJX4r)5BJ;=H0F_ga?RrZ^!Ui9`X8qmk`jaMW&VYI5@RiB$Q%!t=Ky4$?^$ zAiKN`m+k+=;VAkY*na&D!EFZT^OGv?ld`gfJSspF^t(wx+_~-Mc6KRiir@|&aE&q%8=)qYmy$ETZGNzQm%<(b*Som&^>xsAK7sJrP(GQ`Qx{_shlqqW z!*81|&7Ic#NiO6)xSU>I;xSfVq3RdwxW@H(iI`cCU@iV>;PTz~`AxM(rZy%|JerVT zI#9esvUo#P^fU}0g*3|I`1o~*;3*|9<_cfTx*J1TZ9$icU>wp?huF!aY-C_yFy>a} zxMS!Xb~0*nEIHFyU*Cd@N4Q;WG3=!R4pY7JV+V)9{B&!PVn6R4*uWY7ExnS`L2{{+ ziY(5V%WR`o?RCG!Hsw;Q2)K#-W#>29SC#b6N)kXP&`nlgED`;p(;<441!q!-<&-j^ zX1%vTH8SWCtyG`LCw{&{2A43}*?16owV`p2&vUq^%;B!G?}HMYmnt(u(;N_-qT&pu z(@eJq7d>ElzVw_dZaJx5ZpULroas!SS@Cl1W|}L?$$2JYzW;4$KeSr{{I=tgi=%E; zawz)nQs7y^^Pmk?ZAm08*804_NmUd5bDAq}MuDW%a#7cH;`JZ=y9aQQ0It>1$%$`7 zyuI?}{u)>oYE^?jcX$1`)L&jQO?$|oynYuS21u8$ z62DT+twdEe2#f{nUoq`XL#Ro&yFq*i<_*>9)|p8v^&B{NA)-uA6I$dc7T{xGfVE%z z$`trB*BolK)S}$^i;kM_PxkkFPa|1# z)lH@bCn+f@v$Ed@Cg45-dhWG*zR)F9t{D)u9qd9D~wjnfew-SjP_t_Myq7{rX6#V#5< z-tK7i(9yYLEpeG|=j*vB9~`C=a2W_A%$gL2hpPQJT0wf5INP*z-~ani{ISRp5Or+8 z$XTjhi#bEnY9zv3Oj?g-aMGY=yj*#RJS2 ztc1ypTNMc!O({34Mom{n1nc3c5v0abqz&$8Vh;5|hpWRmKV*NUls-ok!%8roBc_{J zm~!QIe|<33#M+-xyyt0(AC5JMXcbEyJ}YUTbdn*bpk`wm$OVRUWkt56>2l3W-o;)M zEvUd95?R{3c42deJJ-|LQo0aet5DX&W1_4J$8=7MXGqm?Nei8q2>WeAAy~6=KL3MN zm9oY9Bc&wq{2w8_Su)Q2@;n7(7rbzB>+#?4%md) z0w_;?c?Dcdd{hpHgSjLki!BN(!qm!MQ5EOr;cdU>!pXJu;(#Z!ledv#Ixh{DGgpMlr3SsW;l%muNI_q=nl zl*s)men*Lq*Opeiz`bbvq!TxoDESzAZ;;u>${1_&b8<+F3aDQVMRiO|O<9{ric|bR6(2ryi^fOOtZIwrinK zX4PIRFl1;h)8;eN5Q1-$GTVwJk!{5cm1i0(To3m5peSry^($;*-$oq zPMnXoUU?+;D#$0KR3(1l_UQn!j7k#OZw*;NiWWgRCa@it{wL{OJx2^h z*9PQ;$_l(dnbU+!R8Zt;V0~84lHVklCdflaa$SAm_R-`v{^Q|-ythkeVDEuZX){V+ zP_d(3X4k`Bl}1#GEA!ot`sO|J^0SHGODdhC3vN}woF_>PJw1hwDiTu1)i*ppb196p zxZ#Cf`O;AT3x-@h-+S^Dl(l9NPCr+w@u+YXBgAxebSD$bKTKu$!&x+hJ;a~MlYV@4lx zXw}8!qVgM8pF$3Le1DiA-Z1rww81&)9)m@)Gunj$!_*+QF6cV zIq&J2YmKit6jGF1e3sdxF7w09D6TL_MlA)eZz+wQFE>PEV%+sVDm%3MGC#Jkva))U zMg z6E;F=soacx^W{59nO~q)moxO{3(*F>$38!ERq9OSFC7hJgITw#*J)H7j`eR525dr> zRH9~$Y|YEw!!Dt(tm?>19v?tBRPkQ50#5B=yydEB^1JSXcyz0c8@L4A!c1$jOX|a;K=JjZ1Ln!Uq>7|+ofY{*7Xd@x-K1j0<+O1KM5e&=DXC$tauzPvdR&_A;V z;Q7?tGrf2u02y-fTEY}?b?T}=xdM-pX28CL&}9~?zK&T#G;+M!+fyO8 zBWO_viW7dX(Zf%;O;3VT1C`m7T=jThwT7&W3{%<%CuhArxpQYP>LwzC3CS&d8g{*J zj>TTyNK8YFimMXT>W-+`m;99LXb3xUEW-%u61nUc&--U9%cz@XX5b7t@3)AR-l<~!JWo}gF^pR9qE^s}4# zNGsS&%-z%^-?I>WhwyrZJx`{wz(z=)6A~k$wd#egqYz}EBXMkKE4uppYzxG;1nIyW zXgd5Pg?4oLV&ML;^S5H|yPD*_ji_VMK<+pZUiC2ivl zn7!k6Nsw*=^c^67(**HImV~OGUT9CUKc~zbmdrWAE5JYl8#^V@SSBC_TVLP6uTv%t z#N_4U3GCma8$0IO;RY^I+{p-Mw$ z%H(SAwa<1Z92Qz?PFa3f%FY(2qFEQX?9&l1aTiu_CX!*%Nh{+)ITUta$x4GTWy;0s zS&7a!NY}i)Tu%jZ;7^|#E`QDG@6pzaPw4kAN#%BJ?gbpU1gzZ$y6I8i1cE`EjW9es z40+~)0X_}La8aOdkkUHdqW?PO)6ClCtw|Y+OMwqMWrm~cf8{28mTH*fP)$8oi9oNs zoA=SwYypN10^DMBX@Z5*EeOo|V21X9OfBVf!r_RULyW=AEl^tsc2!kfY&MO!fUaHd z)rRrn-_*M*dapLaY1X)q>fU+-)d%z*Km>GEf)=$u<5G6DJvhcOEtuJu(oxdA z590{`rX9NNzrVW$S4I8{t{;&Mv8^JJnx+$1`VB!)#$d*v^P(}kjsMdE zNvF)U+}$+HSzg+BzodI6`2zO7jmGM8n zAqBUxqCgg(doN0-(|5aoXla~DoZo8G3+PQ%r?sukF^XAIl4vi6EVG6L>KE z;>F0o04PGhIt1k-B9A;|_~>Ytq&d^|oK;jOQQ6-I92Fri_7a&d9<~ik?u$w8yA*gx zZbn8~)#ivVC1A?YBe6H*&71Yv9(DZHrq2*@oYsmHEwk^#sRZPzL_HM^4-pg=7Phjs zR{fnWw)K_)wr2u6|31?`M^Zb}{t9bwiioT%25QU_o6dzku`JkS12#eRRH;*stYFa| zH{mYmD9R3E3bKk$7cmuC<)0=-riG~qRggOCmWJ`MvS*594z4U8r4CuuKscSSN){SI z7ufG9N8r%dYR-K32&n)@_KL?ty_}`n2=2k8F*3EpZ$HkEV!8zw%c9M3qbf_)u}`H_ zIJ3A4PVnti3b%P`j~uD>C}!J;d@7GeG^3kpY_#3`(YIFL`}UgD=5YEZqd!PE#eX=pv*@hFdEE5w56#N&McwD%v*RSz zeuVVk(vPz`xq2s(O5O6?HT)fJjj$9yqbE3wX zJWa=+-J9hUVZDCJ&7j4YRQm0Eypz^h3@Q8TZcCBvTf2NOKYG#YLnu+o`>DH=)peb2 zx)=3i5=zDcrF$csjuBoEeWjco{P<)RcAo0S<_Q+xdNhCTU~h2xJJG@B+gu3S;L*)@ z@?Xm+sfgCyjU|)Zo!vTXPqo~>;n{Uw4EzT#{fw~7`HE*B>L|FAqCvo;YDFHAPd_j3 zqKiq0rRbJS^F*5y-(I;9)uL~7?uSVtp~&DDZTmS719M)gI5k!f=%fG+*tIhxQ+5d&j|MhqOZD;=G+y7?se~#+k z_x*pi`9BZBUyb`Ozx_XN{x<{pt8f3C&HrZu`KzP)H;3sz59I&jxc_SM{a+oX@edsb ZwA;&cO|19@`9tudrJ;K@U(F)qzW`eC3Ge^_ literal 0 HcmV?d00001 diff --git a/experiments/vmware/icons/vmware.png b/experiments/vmware/icons/vmware.png new file mode 100644 index 0000000000000000000000000000000000000000..50807e52d29dd34e61cb79965092ada938a64a67 GIT binary patch literal 74909 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 ZwA;&cO|19@`9tudrJ;K@U(F)qzW`eC3Ge^_ literal 0 HcmV?d00001 diff --git a/experiments/vmware/vm-poweroff/engine.yaml b/experiments/vmware/vm-poweroff/engine.yaml new file mode 100644 index 0000000..a9fa88a --- /dev/null +++ b/experiments/vmware/vm-poweroff/engine.yaml @@ -0,0 +1,27 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: vmware-vm-chaos + namespace: default +spec: + # It can be active/stop + engineState: 'active' + #ex. values: ns1:name=percona,ns2:run=nginx + auxiliaryAppInfo: '' + chaosServiceAccount: vm-poweroff-sa + experiments: + - name: vm-poweroff + spec: + components: + env: + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '30' + + # set chaos interval (in sec) as desired + - name: CHAOS_INTERVAL + value: '30' + + # provide VM MOIDs as comma separated values + - name: APP_VM_MOIDS + value: '' diff --git a/experiments/vmware/vm-poweroff/experiment.yaml b/experiments/vmware/vm-poweroff/experiment.yaml new file mode 100644 index 0000000..1562815 --- /dev/null +++ b/experiments/vmware/vm-poweroff/experiment.yaml @@ -0,0 +1,97 @@ +apiVersion: litmuschaos.io/v1alpha1 +description: + message: | + Stops one or more VMs for a certain chaos duration. +kind: ChaosExperiment +metadata: + name: vm-poweroff + labels: + name: vm-poweroff + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: chaosexperiment + app.kubernetes.io/version: latest +spec: + definition: + scope: Cluster + permissions: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] + image: "litmuschaos/go-runner:latest" + args: + - -c + - ./experiments -name vm-poweroff + command: + - /bin/bash + env: + + - name: VCENTERSERVER + valueFrom: + secretKeyRef: + name: vcenter-secret + key: VCENTERSERVER + + - name: VCENTERUSER + valueFrom: + secretKeyRef: + name: vcenter-secret + key: VCENTERUSER + + - name: VCENTERPASS + valueFrom: + secretKeyRef: + name: vcenter-secret + key: VCENTERPASS + + # provide the VM MOIDs as comma separated values + - name: APP_VM_MOIDS + value: '' + + # set chaos duration (in sec) as desired + - name: TOTAL_CHAOS_DURATION + value: '30' + + # set chaos interval (in sec) as desired + - name: CHAOS_INTERVAL + value: '30' + + - name: LIB + value: 'litmus' + + - name: RAMP_TIME + value: '' + + # parallel or sequence; the mode of chaos sequence, defaults to parallel + - name: SEQUENCE + value: 'parallel' + + labels: + experiment: vm-poweroff + app.kubernetes.io/part-of: litmus + app.kubernetes.io/component: experiment-job + app.kubernetes.io/version: latest diff --git a/experiments/vmware/vm-poweroff/rbac.yaml b/experiments/vmware/vm-poweroff/rbac.yaml new file mode 100644 index 0000000..4bbd8ee --- /dev/null +++ b/experiments/vmware/vm-poweroff/rbac.yaml @@ -0,0 +1,63 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: vm-poweroff-sa + namespace: default + labels: + name: vm-poweroff-sa + app.kubernetes.io/part-of: litmus +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: vm-poweroff-sa + labels: + name: vm-poweroff-sa + app.kubernetes.io/part-of: litmus +rules: + # Create and monitor the experiment & helper pods + - apiGroups: [""] + resources: ["pods"] + verbs: ["create","delete","get","list","patch","update", "deletecollection"] + # Performs CRUD operations on the events inside chaosengine and chaosresult + - apiGroups: [""] + resources: ["events"] + verbs: ["create","get","list","patch","update"] + # Fetch configmaps & secrets details and mount it to the experiment pod (if specified) + - apiGroups: [""] + resources: ["secrets","configmaps"] + verbs: ["get","list",] + # Track and get the runner, experiment, and helper pods log + - apiGroups: [""] + resources: ["pods/log"] + verbs: ["get","list","watch"] + # for creating and managing to execute comands inside target container + - apiGroups: [""] + resources: ["pods/exec"] + verbs: ["get","list","create"] + # for configuring and monitor the experiment job by the chaos-runner pod + - apiGroups: ["batch"] + resources: ["jobs"] + verbs: ["create","list","get","delete","deletecollection"] + # for creation, status polling and deletion of litmus chaos resources used within a chaos workflow + - apiGroups: ["litmuschaos.io"] + resources: ["chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: vm-poweroff-sa + labels: + name: vm-poweroff-sa + app.kubernetes.io/part-of: litmus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: vm-poweroff-sa +subjects: +- kind: ServiceAccount + name: vm-poweroff-sa + namespace: default + diff --git a/experiments/vmware/vm-poweroff/vm-poweroff.chartserviceversion.yaml b/experiments/vmware/vm-poweroff/vm-poweroff.chartserviceversion.yaml new file mode 100644 index 0000000..0b2ad00 --- /dev/null +++ b/experiments/vmware/vm-poweroff/vm-poweroff.chartserviceversion.yaml @@ -0,0 +1,42 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2021-04-29T10:28:08Z + name: vm-poweroff + annotations: + categories: vmware + vendor: Wipro, ChaosNative + support: https://app.slack.com/client/T09NY5SBT/CNXNB0ZTN +spec: + displayName: vm-poweroff + categoryDescription: | + This experiment causes power-off of target VMWare VM(s) for a certain chaos duration: + - Causes power-off of the VMWare VM(s) provided by the Moid(s) of the instance. + - It helps to check the performance of the application/services on the instance. + - Currently, the experiment is supported for vsphere version 6.X (Support for 7.X will be added soon). + + keywords: + - Vmware + - VM + platforms: + - vmware + maturity: alpha + maintainers: + - name: Delphine Joyneer, Neelanjan Manna + email: golkonda.joyneer@wipro.com, neelanjan@chaosnative.com + provider: + name: Wipro, ChaosNative + labels: + app.kubernetes.io/component: chartserviceversion + app.kubernetes.io/version: latest + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/vmware/vm-poweroff + - name: Documentation + url: https://litmuschaos.github.io/litmus/experiments/categories/vmware/vm-poweroff/ + - name: Video + url: + icon: + - url: + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/vmware/vm-poweroff/experiment.yaml diff --git a/experiments/vmware/vmware.chartserviceversion.yaml b/experiments/vmware/vmware.chartserviceversion.yaml new file mode 100644 index 0000000..1d04eab --- /dev/null +++ b/experiments/vmware/vmware.chartserviceversion.yaml @@ -0,0 +1,35 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2021-04-29T10:28:08Z + name: vmware + version: 0.1.0 + annotations: + categories: vmware + chartDescription: Injects chaos on VMWare components +spec: + displayName: VMWare Chaos + categoryDescription: > + Contains chaos to disrupt the state of VMWare resources + experiments: + - name: vm-poweroff + description: "" + keywords: + - vmware + - VM + maintainers: + - name: Delphine Joyneer, Neelanjan Manna + email: golkonda.joyneer@wipro.com, neelanjan@chaosnative.com + provider: + name: Wipro, ChaosNative + links: + - name: Kubernetes Website + url: https://kubernetes.io + - name: Source Code + url: https://github.com/litmuschaos/litmus-go/tree/master/experiments/vmware + - name: Community Slack + url: https://app.slack.com/client/T09NY5SBT/CNXNB0ZTN + icon: + - url: + mediatype: + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/vmware/experiments.yaml diff --git a/experiments/vmware/vmware.package.yaml b/experiments/vmware/vmware.package.yaml new file mode 100644 index 0000000..3fe0e48 --- /dev/null +++ b/experiments/vmware/vmware.package.yaml @@ -0,0 +1,5 @@ +packageName: vmware +experiments: + - name: vm-poweroff + CSV: vm-poweroff.chartserviceversion.yaml + desc: "vm-poweroff" diff --git a/scenarios/icons/bank-of-anthos.png b/scenarios/icons/bank-of-anthos.png new file mode 100644 index 0000000000000000000000000000000000000000..ba9028d7d373d2da38927da15c885307c9a52f17 GIT binary patch literal 7870 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 literal 0 HcmV?d00001 diff --git a/scenarios/icons/pod-delete.png b/scenarios/icons/pod-delete.png new file mode 100644 index 0000000000000000000000000000000000000000..16aa7b417698ef0d66f130fe9b3218f25fa6f356 GIT binary patch literal 959 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®5>!rwri zWU0r>RXQ81Z zL|rN)t(qyi2vgp|5?#SWQL1*OIcY#rw{A9Or{t{?^iO}n!St8r(;fc(bxqRqG1~bl zY`%mj5n_L}6TGI6Xmvc|*ExxQPC=q2%^EIDG)Y7_cC+_R)t3ogL?06Sy6+F#B^<-0 z&vyZjcHo+}tzKb=rPoKJm!{f~&{%wZAVO*tgIgWfO~xs|bUbLtO#mCx=#*oF^gBgcWRF>2)?J=2zcL)1Mw_#`Tg3|GLU!06SK;A zJXU3Luw}9@mOu~O<%15^#mchQVGCY=O8mSt0*8kX)X9seA~*JdmUQHgb8JQAsy>Y( z-x{E$vM1judM7bQzwijUi)IVdOu)u2cnJ3KoZj*^8u&>Nd4`G*Othg*AN*B(@c%cU zvEs!wZM+q15<*sVVE9vZQ>3eFckHWE^RR-@9j|%Or_k^rQMEhy{g`1x5`#3GA%AL* z*$h4iL*ha-hK$E_@GNjh@v=oUgUW%j0~9z#cRMSz2Xmc3=lH9QO~5 zCgcb_)+&hz(eMcxA?jacsiDej#l>(a!d}z+j#h3%{CkzhXDB_o5?i0HlMdAmQ0Z{Ne!QLc%zS`5^kcnlY zXq^4vW_Q5%iHZX(`aV>q*Ur0~vHJ6UXQbTRuU&f_`Wu2N58Zkm8uhv7cm!Ps)&Gkn z96|IQM07_87Q7HTvN;QL3Ef7lkZGcxBAx;ximrcriNiHCTY4!!am=x~4e&vaK*h@v5>4&YsfbD+f~^PxaBl1$==Fcr z(tUvZN#paPd8(xih%QgBkJzQ1vo#H%>8M zz5aZnAoyBts%_JUA(_>!B5|SeK#GRVhgWQspX<_;yrhp!=53d|*Y)1|Z2cUzmT8|c zFN;y?T_9Dr6bV--Kz3ZolW<50oM9yV)p+<=Gm zpJ19~X-_xup3LoW&-*)T)5UpWB#_MDn=Y~Q>3**#7YUG2rsMES{e^aJ)LnwO5`i28 zZ|3%zV?#>jsr^Zzk7ZL4)gW z!_E+FxfvtW4dJ_y_D1&@Sm6s2#TS&P$%!4E;fL1`M-CK z!fvqeuc|?ioF?~2+Tz%W?__}+yQ>!r_8z%HX^;>*&zH8PU1E;FYdbGM&|vR%F*=J! zK!QqWa!jy1jAMURFJ{=i0KQW^ps0+D$;|SfCw2qC7}O~9jxoPTz@cV zLr!R7#Q!1wTOLP8JMNp{ZOjn)X;oQsy=(!mGHZzLp_e#<>!;Uu*n#9h_S{MkaO-vY z759DWeb(=NqHLq*hUeWON@9|kOJIdX2|hVs5bEs~x>vkplL4oSaKOI9KuWpHu|X{X z6gZ2hLYbx@V>r3zZ67w82OnD;ou$HRE1|p7e9xAp=fK*;05~2t7<0!XkIUzLOC#%PggWbaiCoYvI#ERysY8-(AhKYtXEpT&+&pfRSBY$H=qlnyzCx_)0 z|cY%%}oX z<-R|faxjHFonjFas`U@ZFSr>*P=sM~NcZZ~RP0%G5b3kCE7;|mUzRAb*5y-Yk3HhU z#~xk8ZC0H2V;dDvB4xBp?m&supx>)puu_iGkoD9bC^-f^@z(|aiq}#dCUlzl@(@f2 zZpl3O-jV~#n&hT)@)!Kicl34?aOs57b7l4J%Aq$rCyS2jlIkg4u3O;nO~L|S^sE*W zW&Kp=-*HnD*4QqG^q-+WknXjhlC`xJn3(O3qLEdopP8Q1EMF9L>SQAP?f*FUK=u3v zg_OH@tUBi#b)Fk$_G~j3yv}u?WR81KC+kn@nIQ>g*ym!@tN`*zNvBUO%{E>)alCsr z=XF+ByXx$Nc5RuFlHx_sd=`IVyht`oL+X zc}vO6zFDZZ&Rp)j!TyORHPfNuc^8ttlNf4Y(^WL=DT-saKdMfYim9A?G|mhFdUQIY z?~M)?I@q+tPY=rzvq?af;hhj_F%r2|M> znvbLL-XbGKOv!1B8%;)O^IY%RpK+M_0h_kgYtO7EFtT;L5Z+O;Os0&`3R=iD$>Nf{ zB0OvY*3i6*ggGjk+P?CB*Lfs77jeBpo0D>7wMLXB8ebGE4PT?5ph-aUPWLq=3nLEn3rGx5WETIb3YH8SIL9F*bVALu1oY`@5pK#;WGD*3wmuy7%>%VJgdH^iA|@uVh;dvYT!X&(P$~Rs@DiE%UT3{we~2 ziN~{h+FB2VH@E(-#e;Dbd~?;p?p2i~xQ@}DkX~CADkj3OmV)UPSwD$~ExkjqJM&`a zj%Kx}-*f}2e(`LNar*lIsRU4Kne-IBbt8r$BPvTS*kPnR0<+z{2#ZdTN^Ug_^=hX& zKQy<2Tnn=2SKi0e-hs;%tDV0>$FKMZIF8w)TwO#88f_5D+zfb+tH#-yA}n;27-`R) z3&ufR+}nhtQvNAv;hc9`2pw9A$1#HEd!Xe1>81{_VS7rBf+Q0+YKw!bjGE1S>F~nv z06!zW65^6if@$Z+TVEBk5zhB#3eJQF&~~t)xNX2lFDb`z7Usy3iDsOhrfvU*lPKFx zr(16WGiD0ve|?rM$WCM!Wxrl`DL$xL9Ht!kBVkZAU*11kT=?Mo6;X+Wgh7fxY7RLn zRZXzjJlQ1<$rh*Yq9gG+R0eb7_ayo>g0s2=oS&zdy2a^}I=I#N>sH5I-r2k6=!Wm5 z1n}Y%`+H3^_|YogMXOfdHP#zDVelHtIr(9Te#BexvcN5~sOAj!SiI5Qa^_-g zmFZ^8<{lF6)RAosvmjZVZ{y&g;C?}kBAS=ecRjajjDV)=~gE%7oc99&g16buOodv zeu5!Wg;DLy-03IAv>5tj%&<85qe(n~0*t$E_QP8c1bF>!*S03z4a}mfWS@1k3>2L+ zPH9GGJN)o z9vYM(q+5-0n{@vPxsxy+W~7X>PLIe$2wt!xfBx7YDu#1WsL-Ow1+brLRsA4G^;vIY z2^3*d_40L#u6K(fma9TzV*W?KE@V-xY+&Pwbu({?s-i`itSMontU2jxU$$nWRodZ; z-Jzm1j(b^_*Dl2FK!2#x@C&dFi=OtC+0uC7w*B{YwLDhua54*$O~1QN9tJ5knPQux zfrRf6dV?MG&mh5TZwaR*?nB<$bF1my6Y1sxC>DR$Q%4Oc&-wHA&uzl4dgz>6U3Y2O zzXJD5&ZaIKXM;0q+DCGm7(sZJd_KbY`(~67yVW5&(1e776h}B+`zT| z<*k?4E$2GlofcciR^d`K(b;lR9|b`!fOGfn}|%P3wHRzu!;&7FY;UyIc%Ofa)T0Erd2`oRI$o;FYY%` z0|?t5t**(Wb;4KF()iQ&b8Q^BaliDD?D|_eJF7+yjKjQ3(Y-AkT~T&8Ev5M+Szad+ zD57}y8%Msn&NSy0IX%4Ijw5f}DN)dx>rgr1LDORw{h3jTN%TTj{iGU+js@N_D2*Y* zcF7>kG!+gsU6ERHakxg6gy8Vz5Y$}FuC37!&?_D zS&Qi1`7dSsGbiG<-T)2`j>Ub^kYH2h0lJ3UCM2Fw>*K82SWbC5Wt;0eP`JPlU1v+;puHNd&`3`JR1xlF`iT<6;wap@z z!Iq1H8lU;j3{$T;7eSBT2Hfv}vST+=ej4i;?0+KPYmv;`RR>4icV?m3zjB>q{& zB$n{SLf>S;zz8c0Lb*RAe4->PB25jo`+Mx7d?icK8{gu7L#LjtE;mxyhoDRklXD0N zO23Ba{ngOlW9hCPOV77r$9Zf-s{DJ<%E#wSx_xqgxT**w#;G?0A1JU#I%KXF_I6Fr z3FK(2Iau0i3ql9#+CP123x^U*z72a}QNG1thJy8GDq^&&)@WdxIDad+JMbzW(EYlh z_hIxr!#<<`UbCnuZPFbqs4T8`LQxapmwn3`mhI&k+V`jbiOmw92D=-J&k(Jyn9W<1 zt<>N*#?=u%}o;D>ijU>-tJy>Go0M=U;!Becsv5=-e- zUZ)UZs278$3aN3W-i1(DztxN#xt6+75=C}d(`j@J#&9$u8g}->xmL=DA(V%F`^e1l z;hK7m{wIc}%6JPoHeS2nB;n|TM}tIij6zmd?qTio_F#Bz)0Wh`Vbk9vuSU~oj(H`quYB|@%Qt=+jUF|(5N@h{9_U6C5PeC{L@fkyT6P(L8y3Gbt@&>68`Ax92>9@0a)7l6@IWP8zz;fiUI2xh1O?Uz~8GOD4 zEPyVDg{j^AqDI9Unj!|j^*Bd=oGch%kfTrId$qWi#2b05YSF+Mwb>c-!(u&hov|1> z1hv`Ll4Q@zYk>6e4hj}d_aLCEFist6F}9}!_dF@d(CL0d7?X-GV12p$qWk90{kqZ1 zfRVGvV{%R6RyM321fVbFn3S^;-jIBAAY zyWiV51D;(NLq4jp&1Wt2b?0qGsnP&%v`4x2sPF@An=+`ct?jJEV&Lgk99XyYw(R}p z=vc^c_8kiAggJh7epyKtj!f8qfZmp_7|4){-xkOXF1gWKm$!b8Quj_Vsg2UbD(04? z0#b*AyJmj**xhieU)DY!05@Gh5t3z$n0Ked#Jf*4bC%;Fuvn>%X_rxt5F69M-n@%E z@_4Elh>6SK#$s@K65Dj)AHJ|j(D?4mB_=kA0C}Uw`>-%y8=#nJHaRt+cd8X_kLXc( zZ+GDVFvVUfx_6HHRI#_u*M_qi^J#ZMkn>T$VrP(Pyo%?3g$w(~XHUuEAb|+KCBU+c zXPB)aQ=Pbi%!ZiNR%)llQiddMM7Ij44$FJQy~Ld9_PaG3HKXN4f2SOwHIVKppk-GM zD@Wg}7M#|(H*4Y~_>oQ2k9_4)4cQm^k7KxsC=^d@}HvnE}Zm2|Cq?uH4ZbLktxFo#f00v!yHc-7)nv5QSf|>`XMN$JL zl~6twkG-VcIlw7CLw+atFNtV5`7?{Z9y}82HY8VZHy1$k$t)rjI(IUqgnq8J1;uMl z3a2?fq!Jpjx?CIG*=ALA8HAx=5Azc0)rMx+4b4;M>Ls!C|j-Dre$JZ z#{S82Vm@vO0=m>-is?&b%Wt0xH(Zx7UWqo=z;)ry`?s%0^(ZRv(`ei%tn$g_^S8Mfl(T0KQ~|ZwT*$!CkrkK$qP(!U2Kuv)YO;6Kgb)nB1 zB;X)p)C3CL3vv|oo&_1_o3an)S zm6>uqaHj!~%zbNngQ777=wo-%!hJ7TMNjJ0>cP#6(NwZ4d&)9&S4+EMH=~kb%H(H7N9SG?L z2e#W{b}<&d_Ly;)z+1#+{6Z5K2dhdRCnB$nKVWg8V%i{_IJY3Rx)Bh4e!6-r*j&HR zZJCHh(^k9Xy7lzRW8I?W7F{(4>E@pVL#PErn!h}JiV97EIFpsRjklHYsR!C{1{aRG zVSd8xVhw(eoq;NyXO>2($nt1{uAR$c`RpLvR*&?M$K(X&%3l@YRrn1c9kNy4DB$TR^fmWv=8NL=5Ny7OA zU>0dIFHq%g6K<%ts?garNZ-M4aHCG3j1@fM2^_aEIse_}veoGm zDlQwOYtaP{U@NgkWfkW|Y2YX_255c{Wfc#pR2aNmYz7_^%@n3b-qQgt(232RmK$R7 zerah-_?2!w|2YG{-fy~+`W~%;Z>D;-{ojuKH@V2NZ}E#!#(SN?K)2ewd@AIT1k@`# zYN@mc2W5jSpwa8gjbnOW7nJ3)fHn*fL-ZntPln)+zP0*_0XtmJdaJ!0C69IJrx(5Z z56#AuaQgGZUVMJ%?H40IMz(8pK=1pG$V<;*&l|)0gnk)UCjJ~f_w&2erAUGK#9Wio zRV>OSMc34s!N$MZsxFNxD&2xVGFkYP#{C}zM1Iy~w%)%)#yV)>8=-v2S=f&FqPjWg zWEFZ$Evi5*pq55@&t~a8K7QiP##`Qfbh#Y%?0N4m$Ci1Fg_Zlw@t6pfx2^lvkA1jT z{*jl>0Zx&6MYqrFd92dJaHDRl?rQx)tqU^q{$CnIt z0{ttG)Oat$oU3t+V-H?Wxw`f`0O*qr1kTpr8`*;4v_G|utw~7YBLx`W=PZM1)cVd{ zjZtAr*Ti+S@jT2h;8jC!!>9#1tINAaaV?WPfZcKx37j<57TScLc)qg(HMCMMprz4> zW1txRWo6-jS$_XFgKSQ8dn}qtybs+AVMHVs-#76<^;f0uXm+>3=W&Nh<7+1zxQv5% zOUs`oOVlgl)|Sgh=hk~=2}>4$FFo%kPT}vT@q&+ew<0f!P0%Qx-Fcz=Fdk}&g5>kx zUT46Y|Gu$cDDqUCb7uA1LJjVYKT}lGIG}hFd(R>y(g&d_8!_{Jzkz+TzrN9>rB&<> z#eAmhU)#w2=_T}SVZtc*{WLJcP_jyKn$iT8X~pknB2$X6OcWG#CV+q%`DaU9u25D{7Isd{5v4xN*{mGbH$ z_*YHc`jCpN3^~Fhs9E>IxHVAP>~6cmHlepu1_>YAURxqf-^sCnQEXtyWk2*Gr)7*@ zZI;!G{ZlV(Tf%?|M?v#{pz7ay6s8CUG>W+t~NhZ@H-=u~O?H zi!1 zmu+yb45YO0nes#?XO1W*wKpW!&*(+RPVjX5Kp9u*$9arOn^Ck_3J#1!7qB6Y)b|cd zG7qPv;Y`0P@_TEY%ZFmxr*DiG>^GCf}yOS4i@ zyc`KI*419`!xKi+m2Nd+T*R0cOdBVutLx_6+*!koc88vP5{1hc1>cSIA z6@jb&`LDL}j~FC>D}Xu0B76`{RLSUKv{^vjg-v#>Eaoq3AeWR>f+t534{e$xPjQwE zuJLm}cq8C74_n||ocEA_7=m73iW=+bLzO9xSEShZuy`!gF6q=KG1?&p`7#O*DDWf` zcDzgBNOfhXm_Mtfk96pYXCX^R=I)PEj$>_QR+>5ck$ln2(S-Dzfkk-F8WlFW?`eg5?suT1qpW4u_`uYqZpw0XB|4vY;=DwDEs6iWk@0fN?xe zKcZA5jG#S=x-SlG?I0V=(_${EFFDRk{dKP{V5T15w!CtUymlZ2u zL9`>e#Y^*2v6JfZeMsxm)*u~dArez3BBvuTN3RvnqOFlYF~MYdT%Io$NRuW*&8k+_ zSUUOh6Qd(->|o>|yHU_iuSyES*vWS%0RD-SeEl<4mAh7z+R#W(suGp~@%U6cD?-Qq zEBkpROvGHim~+ehR>EQJJD*;)!=$^nMgsP#o+E1Er(kA!rsYob5H+~SxqrHI!tW(h zE5c`oG$L0fKJQIa=t10{&Jdibz!uxGDiwVFJ<_bzmIWN9=#;V7ov;0*kHHXS;rD0= zGK=p54hOPkknF}9=mM#MH_Q8k1+MvSQc(jAhLyNhi(W0;u4*O!p(23fO)uaIC^F4; zE$|cSeD zT{9<{MbwXEKKA$0;r9`kkFS$aM8DzcNO+#+Nlzu$9kW|4LU`+AfD&PsQ1<{NHXbkp-hRwUYU42yXd1F$N;2G3jMt zep0}VE);G~P?tt#;xmNox|p_l@Su?XpWS5Z^9_1eU7)5V*cfK}B9KHa+n_8TpX?;ekmgf7~D(yi-ICQu|SJeWB9#cv_O+YUMI=BIG7$uR5A1sHpcqOK{RWop-}{cy^4mY-I+L&{fjGND1b}< zH-WoB+F@!;%r(k>r9LY-Rm&ABb645Vc-?MCtu;F@HCnb}W7u0IusUMF(a#S(q1){4 zO&RbHx#6!M-Y#>u>DHu+itu^}QjPl5A{yi()Q87D6|lF&qve3xV7YW5Ahv{Vv-);V z!rYE+bS$bIM;R%cN?E*U4Xp(RJBwCndUWcTB7Wx>5r)l?HZ=oePRl|C)@vN?|89{cFE$?*<0AHpL?uyT40dCcvg$O9_QlH<5MInxAP^w7+@IZEXyW@lU-%-`$B~`E>7I{VVx5`_K(J4Zgc%`nQuo?Oz}F;!Wyb(3E^A42bh)D-q;%!`K!^5QJtB zJ5i^yngKYD21Xoz{pxCvH(FJEQdxP(W(`WQ9XY*gQ8AA7U>VURDat*2fOVzWm#A%+ zJw36Ox%g(roke=5WOPvUlTf!1k7H2EDw1BHQ4u<2X^97*1?ba^l;oIZieki&-AV9J z$=qw{!fk|Mc_ky`z4akb`&u7@h$(D`^0VRBZ8&^gV%mqimmf1fi6KA>=Qx!c)tb8_a{t8Zilq`{FvEY*tcAAVr6}=R$m>uYR7U43>?}Npd<)~G1JP~;QEBGH=3vaD#g3Vj z@bVvo7vHeJwHwnI`O16}7zX;Mgw>??eVoDYJJ1%;m9GE1%cOCq8oRF9QtjxLS4;{M zRWfiroQEfBt%>eJVZqnF4H2#aiP^X51U<*m}1y{b%I`d5fqK;KsXaF40!AiZ? zL{Bt7ZX*}VsK1Fe80F!>(LfiwhQO25Ye@DPNokeWxsb15QGMN&c)G9U^h8G`_c8_i z&CG5Vm=r3;Q?d)>&5g1z(ja~+rw*r2FAsTmb_>rc!A=82zZBs85(C6ls z0QVL{Dl$>Z=t?!0=tkyno%plr$a@H_K#$T9LmW*vVPm}SEd^wrLm5iJ8z1ImX8%%%DRR9 z;`@pHS@~`6-b^il6cc{X!6!g3`<@MELr!1yJl~y3 zW1;Ke!xZ&h(l@Zv6O9ytbEq~@dPo4bU+B=w&~2H`otj{bT_=b@#KcxVk5jM`=~SJT ziY^dia!1F{$qHY&IZ1H$yajA-ej+bzB`=Yt1hy?L{+w;wnh(;Hkis`eKod#LFQ(pl z&E}l{yl{RDd=^y$6{6sFdn#g{@e^+@(Ve;>0xDUYS&q9mmbB{a64exf6aZF1nnB;X z(mC>9^0Z|_y(`VvcT3S_Vx-W7EDI`Cjx{(#uaC_;)V;lbv%YEML6Z{+hf%Qpe+9-0 z9Ut&c8pqRmsla}O3*8$|P54*bZfT9p)USRq9RYQ*RIJ77O4l&=G#M*+YbGCtj294x z5fkCad%GoMsDmt;+I7hWt^<#pcN$vWz0nMwJ;{h4E@I42;6bVj=M~Ad> zfMV^dikFXBv?EayfQ@`=J_icILT~d0Heu1EAxuZNm!6{SQ!<+{Ur?>{C>olSgAZf) zW1)4pz?wRo4HA@+_0=1@7cH|iVCqj+fHQ{tQwVf8)UrE5Q=naVJKkXWBm;>~5n?Ad z=3O5(vEuZTAGm~NP3bIQ(MiK+%S;(s`^K*kR&<=da%u&tAl!}4iK)%qcAfe#pF+9a z=3oljCUMlN#xa4pT#}m>3W!g7|C#m!2pKJ{n|q=H1GH}N+>#53u-b@%wVAk7m%z`6_ko5CFMb_PJr+Vq0u0^6G_BmhJ}8& z!_5Twuo|KEDq^%=9xiq|q(uMymxHAg5z?wJIE&}~ZcJ<1VBIrA0TA({+_IX0DT?sK z3I*9${l5Z0Ye|PJl4|b^&4xf!40PJVk2-@vkarI z2;#&_ccX8$ecylwdYf2Bh^DXcq5FgX+j!{kHA+K#(eBX=d++C%LhmfgVmDazPeE49 zys!*5Gz%MS(d^~PtL8!h6JS)4(HReI@1^9?6WLh5FD*cOU1Bv+-*&-nR^Werp`7hu ztwR!QTLh5ZXNFM^t@C~2E%t0sv7!$+I_f@9dB&o5cSe^rmpzg+w@3ChdcmLc-G21M z5E+;JvFpe!oC2f%Eec*2tHZk6+Iu+T)Gk`Mfz$~1cYDfuV_C0uRaT#-{y$8e19v6R zvaNTVbZpzUZKq?~wz;E@Z5tiiwylnB+x`07ckX!aKh#*OYSuSr6&lgBS(gl+SV&7Z z8tzhA&G!lY($wBoB92lTet_fGZ;g=_lPj(*GUAB^>Q98wNCMoKJz?(2n3z_WB`Uxo zCaM_{4woTA<^fGS(qf?%W!J<%vY%J9g8a3XNNz|qZ5~CPToz6R}LEtFe zxwTCDCYbf#HLySX$0z1KUI(-~`C1H<=8NT5KupsyL=M+}-#v`%rTY0?m3FuJ%~tO< zLBWJnxxSt{DapK@h|hid;FXO+-Ml@&xE2(68FCU8&_EajRD;)MOb@(MlSZI9tugj8 zJsqto5b8EVJQmX;ora97L};(~;9TaX3u)+5CBXnrRl7rK*SQtVS3;-EN_HG&t2Y;o z*7u<4CaP(XXhAN*dE;N5U7#Ek%*_G&pmv70if5ds%+z`zz=oc|&M^~0fY8>M-@C3K z!dGmnp1xl)HvzWA5S}{>{c=rpFuWjzI;Njkii;xs%_z;dr2sO&_b%oKSWoLO2hRWd z6733lg44vfXY#en#(0x5u2!y*tLcNPh~^{Sh~nh+LV*L1??Aw~=6rpu8vdQ0_sJzR zY&%$>kaYV#BANy<>jQruoa_U24<7jeDirvd~Z}eovf?^98`TT zZl;3y87Hs&L!e=6+HK?5#=|3tK}}NKDnIK*CS|2VsF3YdH&Gm7Z|%HVt`()P&|hh^ z=9S}1m;N$S?5s}vPs-Is%ZHbCW}?u&XxM_8v3NHc}XG5-*McAgMrI)44S z{WyW&A)21bH|)o=Z0(=kFYg8W>z&5#^O`W>R?lEDT?Z<76EOGU3-!|57PGKn5rg$kxMKpCbK)t2H#GKA zm-aib*y063Zmkv*tSBb~ubzh?RF`7^5a+HFIVky{t0(&>k0auSszPI%gk)73Nw*5_-MatB5GMh%FNabQkP)jrF(n|`W6!!|Y79GWwkE$X7$NzvZdbax-&v9+r+rc+G&*L_;obs4 z=6-^w%P#izT5r^ivM+Nq{e|W*D4`38p=ie1Q7gD%nx4Q-%Vp5M61IYkL zWU;m@ZB~GU{b|P~;R&99VRy_3?cx970U2vFo~}Cn!=E4Edh_pUSK(4nUVGo%AEs&@ z1w3d^9&RMdMX+4OV|aS;e&+Iu6tZivQ7y_Ck)5b9UE&t_>2_dw$T>b-H0kN3lI~rH zFNgCdjwyV_JK8Ve%34=ji0Z#&N850F3zRmp?q~a6I-1!}Zq9ywF;CSn!a={{*yW~? zS;mt~mNG&lkgc!=P=pu$`4ye8l?_3aj^xp;toFfzz@bQO1h?8>^>Op77wT7^y zH!H16l<#G{7DuF!xyfE`cl@p~t2yjS#@HLDx&;_4R|RV4A>hDI1Ci; z|Ic5DKT%h(27Q~4k4;}}=j$D2 zSTo~~y<=aDS^MQjmajNnqT7iFW@KI4*RJ_(UrCt~y=Q-EpWe<*Cm%GDx$SAF5?ps? zcx9Bb`E3rJsg8W$MV{BPDkxQbE+|Ragy+xq(@Q05q;Ldf3Ft#Aa?fI67^yr`+xB$p6_2pang;p$~i$cf=!$Lk;UvcuZkwWu4M5+o91{K0) zxmub~wb2U(oZwtINCF_3$}o!5jz5$NyO**HMmtWm9V(;r$0~3c$8n-_#exCh zVXexuidE@LjfRtosk^u@1aSGmM;DXQn6&q2{J<-o#4?pG>vk|3sg?G6NmKV9*5C9S zuesK3-1*oD7$OkxT0d`UoeUY#BJGDkUoq)Favd8vf$4xG{kA;k=7p$#itD+jbvLt^ zRzJ8G=?tlc;o_%Pmp^J+ zqQ~AYW;UBfoSsbAg81pfnTMVeGm`pgDo@S)ze81Pd(eE=7wn*GC?y03Ur>osTbH-a z01*af5EB?ruW1gLU-ZV?)tq0S}O!O~Z`Wc#ORq$8*p z6TD2eNG=Xy4#f;PJjZT^E91J(hl8Upo`%4?k_eGMAv89v)RZrW-V{&WxId4c5#khj z91q;DGaf8%?-Bn$scg!m?7(NTHm7}gE$>|QwD&-X~m=s=p4p)wpD&&fC!FGo=I6x{Ib*?I)QcFmNesf6`=+*%Bu}VTvGU-ix zODUar|2fpv436-YyYer`cA>hmqQs54&@F_JV;s4vzb}PY^4Y`vDqdiS#fOf8p}?9% zF#ceRf}rM_*{sTpl(GsaOeSN~);&m)Um+^a;NbTDdJRHUDZZX{-%+CkZi~^6kr2Hy z)ARi^Q!rLoS%6YAS!>MVC9#vnHaagn^~Zgcdy$F5c87WI<1*tyB!hL@KcVcj4gF@{ z%-NyzQcNw{&B0i}I*!kOL_ooI9aM=Uuk)RJV-t+cST*KI!nV^NsWi{Y!0>JNI`{?} z0R0O4wEtVt-kX6BK2zZ+sm*6%=KJdE3c}Cxqg?_lllKSFKZk|6}c*8198e@#YKGq_*TfjxbYV&s4#|ziMgr?fhmmVqYnen4# zCARyg6j(ZZ6webuwf(Dc#rD_zOD&_|$9u|#;Napfz-|B5&7cQPY@Z`|Pp~8r z3XMfYN_E+K^}Z(bTT(iU-GU7ZLxZqJs8mK3r~>lOYh_6N$^LCy-6~vsPEB(OOLhK8fp|!zYFrZGSBVIjG>@W4@$9SMfX0gKQPoklI8I_1?V)n& zVG%Q>v!#nfEMnnvr)ay_%7IKa3{oh??ocCA=_j>OHG>B+(7Eq%{Aug5=6{ZZq%)-$_rp*T&ylI91qtVDBY(Kjpe@ysPJvo0P%F%xjPbf+qL)j?I7 z2Vq!p_(n?pvKw+kjo#gy@jphGIe74P>Np(<|Ja;d_haI)W0>Pe3X1I~54b*4`-2%? zzCE!nfByw(f`1}{A7^Hpo$486?hS+9%dI?FG@2bgHyUriaLdd3$0>-x$_K23aPJoi zpz1Euv8w+%CafWyM)N2R>1jd$@w0`Qg4PU*<5fR=wKA^Q3JOhTanQb|OCvSs{5rUO zDeQ*jzXJ=e54iiY2jxp7)Co?Gx`fblQD@Vm)d9jonHxR4V-#3J;<{%e#^C_W^_4NjRsFFz_4vpi*ORp=3r*Y{?nkM#{EyHE^X61*YFpO`qrm2q12{dSqF!17%}W*2Juzv0hEdhoug%RA2_5OBo-c)} z6clUXC;arJFGs9k$6H1C2OeMrXL~zz@KdveDRxf@i-Jjyr{QT`Kg#3`*}0m;bxI+2 z_RqzN;7no*p~+iD6WkM3%uE)RCJg`oxtnrevikd1Z|i#dFmbpx#^XgGyBL7FF&#-kwN`F z@JE@DWj6P+pW*84hFjuq<;3(=1Z6N(&xkR<)b(9bkbL0i#~429);-|)CPS6UWR&OE zT0c2DEy)&YL>BRlk{XI@1nXQ)C8~Fjx#(-+nB(FIU;XW~O=7&wlLT>jq2RZ3{yQC= z`OiO_Eb|rj z;ZjH)7;%;|ww+-SS32ZE`%K_|!Ek)o6$>{*yKvbg*2Qt+1MeyoNo16ac!ef=raQd1 z+--3UHH8_-R&I!7Jg9+b+R4i4%`6gqEjYx`jtv-8hcl}zX1g$ZR&L01C`6C1%qz?( zsc%`p+T_FYnLSsi+9Hhd60pYz$>fk$POY@@XK@COX2$_%CO_v@>uP0tBb3EG&s0kz zDKcc@f2aUz*=+rYgcHoo`uPY>UhUa3Z6LQGMnA`_;sxO%pqQpY;%LvmU0WU_C{la% z`5fxGveti5|NEKKuF~1E-gRasn+w)6bOsfh3pK_s?|Uv+2fDa~zFUG2Etm3jHiqW-pi&~!tBT>vnv_n4_g*w8 zedho)RCsv5bHI-%K}anqk74|C3rsUwcrXvIrKYb7KRRJ=J3AVUDs{Qku2l2eLqR%$ zjRuH-o+K|9KYc>a2{@KHkdEu1fT*WM`9jg?F{fhODMrd>O;MzZ8PZe84w|Uvq)iC( zWyp~~;yeCb)87P)%!mx(Ag7lk<}nL`^ENw$likx{44U?M*nDk%h59Wq8+_I7scq8W z-y?%oGKbQAM4e>z)uZ$lMW<90s9rq9rsLAdsM=LjNg>vtED21+&{DB|klI-}C1`{>&N50N}dY+Z`|Z*aJFt@SFzP`x^=QD+Pb{xbHuP(!CE{T@1|m$$0a3U{K|Y1%eNieOKJH8=jdm z*IIjIVEFCw-k>vu;Aqd)sxC#U7q`*nXltW+PZ{#OJ`<~L{l_?ZT@5>rz$Qy1#|5W+ zJyL;^jqM3{zyFxR(RzepB?n*W@vd#W@Vw{C(H_q-qRux5YR3K*4s|h_H5;+x(W{dj zRRHxI*#w_Aymi2m7cD z-|PcRossR^{H>%fhoHG-=#1F@AeF9$N!XwK-a64raJh*%yyP!;r1MqyB74aibpxIs zeB-0Z%G*``{&LRE;||{GWqFIHP?9~-cG+W&9fw_YSN7^6E#I60xJUC^G#V(MzY|aA zJGO~*oVQ1IOcNXIbApj;@$5meg#%!bPdVqySaQrB2pNzeB0cF%H6-Jg&})YGe$VIZ3x*F$s-vKQgu~Vw-4l@Rgh%8Vtt%Puuu! z?GKRL{rln2i__zN6jO44e7z`5ZJ}BcC_W%%?P7a)VujB$zR5d`#~ZfDHZGC*CqpY| z0zrr|oKx66*uF-RT6F}LoZKc@fC!TWRA<4KRbw=zuwY#80^IK1}6Hp_`VW(xw6 zPg%QzO+3IED=GH)KA*=B!KOHit+~UeU(H4;Ki65_kf_->$9T)dggmcN+Kcz{$P$QU zvx}VRkIm>29z%O|qX|M`=WRVu@d1@Oo3A5xtEJ`z)qaTGc4i%BwN+eB`}Ss zkf$lsNEq#e=n+9B@{97A<+L|7fUE&30rdsfFprH4cvrGb^954Js)qP!I_q{tly{R5U-Ie7H=PtLq z%V*~rozpgt>5MeO45G!AW$7$9OZdwRs-6~sICR zqFX5=6yhJ|ii(+7B!1)hS#-&+kRBbw-pO(4YVo5pHZ#;zSL7P5XqyOQhj-X zo=7B`jIp%R5|EGhc%*NTs%0QX2$|T;t)~V_osNTpdKJV3#I0sw5jHXd7L4sC2t@4N z=0>KZ;~%cpW9d;Lp3PlWQ#;MD#AODzB{fJG%n-bfmIL!I@FD6|2h_1ww%SN+APtp@ zGgpWLneZEVLX1ocWK$DqVxO5~cM)>4djUowkn|S{0%>;`m6G5RoK)yPqhr^n9?{Il zVyhSQ)gWa8rKa3Z z#UxnMe*MS3h;EIUQY6SWPzZ3g2=jUY` zl1Fb!SY6Bm(H7~HjjFK}85W}%KUJhG5~q%o0O{di8T1vvOcLS=x8s9`=x`}lrg%+k zl6-fuF05TgQ#$xNA?b`}>X}}%kud;Z5eY;Lz9ZKcCI1w=Ch?Vu1hS8cG)xGAwpub~ zSUBQbv!omgq?dt6Ex{o3y!!)cy$@+8>aLh>c481~rX@*r`&=E!oo!z<4)ti)uNpZ3 zV%6UOM56D9puOdF0B%7O+|v_iu4szAE7wrr-yn{9t4_XMt!t}U-R7X; za#B?i&c3om6}W)Baz`<5BTwVHFoo${tP_u``OodC_9yFwSaD=>9|2H;`VathbCF=5 zoka9R!sJ!X_m9moi6xDI?bNc`_&PG{^mt*w0^Zk3p?I*n5O5)k7k6j}&nuL|YGoOu zw@S+_{{d&>1)YX9J*o~uz(m}=%LVKEm&5Swd3rrzZER!Fs1Cw~PQ6S}xU530JhRRO zm&#zQ2k1a5YA}QS1ibHWVl~b)cdBYOG!`x9s^}AM7l&Xy9be;j20qt%h8%=t6;CUW zQfy^2aL!b&iE{@U1BF^kWuXdSWzE$847|x-)jWP>r?Vq<>Z2B)ZZyG2;T8f)-Tc#*! zG`sf9dWm9$$Xhox(T<1N9rven^3|2uuKXj+exM_o-8Thf{$uEr?ezmkzFwogop4N# zE-i&OqQnMC10h~@rLgMZaxD?`;8cgsawdbbsPnK9+Rj?7JtyTy&hyP_u|0uC0sam3Y>#a4|74bbeHi=2rBEzlhC z&$_cDBj|ase$mq8nE2%Pt2r#;$Ws;xZ`W9Mk5ei-W+JI?e9xYlv1x#C{P`}~sow=7j4qg9ak z3-!=#P-MVWvmqo)`vm5sB|UArf#1V;-M?X_`SOs|OZI0>x?}Kt( zKAOf2YMVKuOYjD~L_ArEXQ6{0ld_1f%u}K4UTWGtWpc4aktkSmJA%u#tjbo~zlJ*x zA4@%ShPR-l)BVNSjr#AZ7p(0L!S|iLl`>PGxl}urz2KKhjDDpG$ZTI|*bWzkU4&LR zILURDZGI)#Xl4Z9(oiDWi2cbUKbaXoy}_YFhr6g}BM>R7g(d45F24_}&|l$}soU?h zA5PB*q~p9YK7K=%!n@mR*)LJsFY$3UJwh5kpBsV9bI@CvODkKX70~7|s~NhAv@6O4 zp6H;Iw4kKh8A@^D>OOWi*paN!gCug+z1%!lMQ$pF`PT0=^4s^>oqm#*+aJAJ4csQ6 zAc2=hlDvG938)k++?qw;h9Af>m7W}&=y@D8`D=|mvmTH%BOX#Y1K$u6(Q-H zvKa$=L9T_c;~+ay476NHFz-DR4r|xQs6lx3b(!f{GXM)-mNJ(KeXsP5{DmuVO(@=? z8;ofp@KdRMyuLJ=gIR-R_2*JUs(7AY%!*@^_=1F4^tm#qsLT)ZL}kjiPHb$5Wv}z{ z$Y1f!RNPJcz@JppFXCvozQgTPeLrUA7oK!Ymjt5aP7$8_95$+|Ln07NuJo%fH!iAJ zhMDYsGFynf;y8rA5(B-!IUGRQKh7X{9Ofw8!}NQM8{()K*G-8{$$t4feJ|M{pG5)hvmW0=gkN|26D#i3Qh8m<3H&i~ zmm$dDCO&-f zS%Hee8UE2M4ZP5B4B0ho@b7e=nrvOI`|}=M8lMl$XYR!XtBiWI*u`*?o|iX4x3J{)%00V zkaPOCA#3t7%OC+H(;Y45YMXlG_0c&6{Ax}neF-RH&``&H-6t4UJg!{r$~fJhr&JD%mPJ!3OwwW&?Nkz5}t&5RavG6 zzbLt>{Gpq|9o%qCd?5=yVuwDh-G$tYztXPDZVy|6XCu0aaYxAbyx<;$RS%kPUc+kj zvkBtW5UP2FCIP1?KP^o&PS?J83A)cL`x=Y2E}V6m*@ueNx^leqYC&xGX&Wbx%1nbP zuIcnQ?SoVHiCB3$J_^4|5v`P~4U{uDeopQ3x$E-JJjZFj_~y!rJp!{`96R;6Q-y_J zzv%|&rl%O&!8Gd(-?o1p^&$M8ugfVia3ISNC%O4qg<(B;VJX}jZY9}ouy8S_92JtfA&0=SwT60JjRgJ^s;T@Cjm(`mYJSG%K zBy_an#F=#Q4hV3X!bg}AD|yiF(NWgZ*rE@LfeM__C9}jxNkRkXfih1FES()JC~=AZ zR;>0`eMLW5g-YHol*bI3*xC$dzQ!DGq;pIV0I};H6Mx%VYSObEc*gIyH#ek6p)G#4 z1#-J7A{13G+U2N{+6c%)AyLYYabO-}aK00}zT3GcuOg3Z7ai(Ifcvm3Kg5R1q})iX zZ|}60AdtTUeEnhcx`(c6Y@VW*swFrP8NNfJiJhJ9c-V8x6qOi3q*Uo}yZ41sVg|=y zAJ&n{dmk?KutvIbH`SwIjzTWabJ5Q^AO0?n&t}icH$LHm_U%P-{bz6Biy0%-t(hCy zLD!@UZmcTC)s+i75OzzD6&cNz;c6cj2d+ z+JZJEhLRO3zyC{hi^U8m%?abFPp_+IH0=EoGqfazDV~yzN=H1K(*prO#-^ZxQc5=k zl8`B_ge(g%71ILyTr}_Xozs$W8!|0A7&8&R-@tJSy^=->9YMqGS;R&hUg@lcpaYU) zNStNLZoM&FPtM!eX}h!8Yf;O7BPw;dA<F&%d<8Kcvv ze$QKlUOK-OE0)L)KtI8hNtpE!bhWNGQv&Q_k?IIZy{#!(_2LT=eQe>9&qVfdP=t`ih4nMY>yEXiut{3*!L(M3(zMGAxJ($T zM>tYe^#d%&C3ka}i$n9I%5qtA6-H_w?p>u$f-T)>y{z3!19*pmok|qHVEDWo

jP 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®5>!rwri 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

jP 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 + Pod delete contains chaos to disrupt state of kubernetes resources. Experiments can inject random pod delete failures against specified application. + experiments: + - name: pod-delete + description: "This experiment injects random pod delete failures against specified application." + keywords: + - Kubernetes + - Podtato-head + - Pod + platforms: + - GKE + - Minikube + - Packet(Kubeadm) + - EKS + - AKS + maintainers: + - name: oumkale + email: oumkale@chaosnative.com + provider: + name: ChaosNative + links: + - name: Kubernetes Slack + url: https://slack.kubernetes.io/ + - name: Documentation + url: https://docs.litmuschaos.io/docs/chaoshub/#generic-chaos + icon: + - url: + mediatype: "" diff --git a/scenarios/pod-delete/workflow.yaml b/scenarios/pod-delete/workflow.yaml new file mode 100644 index 0000000..4c39419 --- /dev/null +++ b/scenarios/pod-delete/workflow.yaml @@ -0,0 +1,159 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Workflow +metadata: + generateName: argowf-chaos-pod-delete- + namespace: litmus + labels: + subject: "{{workflow.parameters.appNamespace}}_kube-proxy" +spec: + entrypoint: argowf-chaos + serviceAccountName: argo-chaos + securityContext: + runAsUser: 1000 + runAsNonRoot: true + arguments: + parameters: + - name: adminModeNamespace + value: "litmus" + - name: appNamespace + value: "kube-system" + templates: + - name: argowf-chaos + steps: + - - name: install-experiment + template: install-experiment + - - name: run-chaos + template: run-chaos + - - name: revert-chaos + template: revert-chaos + + - name: install-experiment + inputs: + artifacts: + - name: install-experiment + path: /tmp/pod-delete.yaml + raw: + data: | + apiVersion: litmuschaos.io/v1alpha1 + description: + message: | + Deletes a pod belonging to a deployment/statefulset/daemonset + kind: ChaosExperiment + metadata: + name: pod-delete + spec: + definition: + scope: Namespaced + permissions: + - apiGroups: + - "" + - "apps" + - "batch" + - "litmuschaos.io" + resources: + - "deployments" + - "jobs" + - "pods" + - "pods/log" + - "events" + - "configmaps" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "create" + - "list" + - "get" + - "patch" + - "update" + - "delete" + - apiGroups: + - "" + resources: + - "nodes" + verbs: + - "get" + - "list" + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-delete + command: + - /bin/bash + env: + + - name: TOTAL_CHAOS_DURATION + value: '15' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # provide the kill count + - name: KILL_COUNT + value: '' + + - name: FORCE + value: 'true' + + - name: CHAOS_INTERVAL + value: '5' + + - name: LIB + value: 'litmus' + labels: + name: pod-delete + container: + image: litmuschaos/k8s:latest + command: [sh, -c] + args: + [ + "kubectl apply -f /tmp/pod-delete.yaml -n {{workflow.parameters.adminModeNamespace}}", + ] + + - name: run-chaos + inputs: + artifacts: + - name: run-chaos + path: /tmp/chaosengine.yaml + raw: + data: | + apiVersion: litmuschaos.io/v1alpha1 + kind: ChaosEngine + metadata: + name: kube-proxy-pod-delete-chaos + namespace: {{workflow.parameters.adminModeNamespace}} + labels: + context: "{{workflow.parameters.appNamespace}}_kube-proxy" + spec: + appinfo: + appns: kube-system + applabel: "k8s-app=kube-proxy" + appkind: daemonset + jobCleanUpPolicy: retain + engineState: 'active' + chaosServiceAccount: litmus-admin + experiments: + - name: pod-delete + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: "60" + - name: CHAOS_INTERVAL + value: "10" + - name: FORCE + value: "false" + container: + image: litmuschaos/litmus-checker:latest + args: ["-file=/tmp/chaosengine.yaml","-saveName=/tmp/engine-name"] + + - name: revert-chaos + container: + image: litmuschaos/k8s:latest + command: [sh, -c] + args: + [ + "kubectl delete chaosengine kube-proxy-pod-delete-chaos -n {{workflow.parameters.adminModeNamespace}}", + ] diff --git a/scenarios/pod-delete/workflow_cron.yaml b/scenarios/pod-delete/workflow_cron.yaml new file mode 100644 index 0000000..1311b4e --- /dev/null +++ b/scenarios/pod-delete/workflow_cron.yaml @@ -0,0 +1,163 @@ +apiVersion: argoproj.io/v1alpha1 +kind: CronWorkflow +metadata: + name: argo-chaos-pod-delete-cron-wf + namespace: litmus + labels: + subject: "{{workflow.parameters.appNamespace}}_kube-proxy" +spec: + schedule: "0 * * * *" + concurrencyPolicy: "Forbid" + startingDeadlineSeconds: 0 + workflowSpec: + entrypoint: argowf-chaos + serviceAccountName: argo-chaos + securityContext: + runAsUser: 1000 + runAsNonRoot: true + arguments: + parameters: + - name: adminModeNamespace + value: "litmus" + - name: appNamespace + value: "kube-system" + templates: + - name: argowf-chaos + steps: + - - name: install-experiment + template: install-experiment + - - name: run-chaos + template: run-chaos + - - name: revert-chaos + template: revert-chaos + + - name: install-experiment + inputs: + artifacts: + - name: install-experiment + path: /tmp/pod-delete.yaml + raw: + data: | + apiVersion: litmuschaos.io/v1alpha1 + description: + message: | + Deletes a pod belonging to a deployment/statefulset/daemonset + kind: ChaosExperiment + metadata: + name: pod-delete + spec: + definition: + scope: Namespaced + permissions: + - apiGroups: + - "" + - "apps" + - "batch" + - "litmuschaos.io" + resources: + - "deployments" + - "jobs" + - "pods" + - "pods/log" + - "events" + - "configmaps" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "create" + - "list" + - "get" + - "patch" + - "update" + - "delete" + - apiGroups: + - "" + resources: + - "nodes" + verbs: + - "get" + - "list" + image: "litmuschaos/go-runner:latest" + imagePullPolicy: Always + args: + - -c + - ./experiments -name pod-delete + command: + - /bin/bash + env: + + - name: TOTAL_CHAOS_DURATION + value: '15' + + # Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + # provide the kill count + - name: KILL_COUNT + value: '' + + - name: FORCE + value: 'true' + + - name: CHAOS_INTERVAL + value: '5' + + - name: LIB + value: 'litmus' + labels: + name: pod-delete + container: + image: litmuschaos/k8s:latest + command: [sh, -c] + args: + [ + "kubectl apply -f /tmp/pod-delete.yaml -n {{workflow.parameters.adminModeNamespace}}", + ] + + - name: run-chaos + inputs: + artifacts: + - name: run-chaos + path: /tmp/chaosengine.yaml + raw: + data: | + apiVersion: litmuschaos.io/v1alpha1 + kind: ChaosEngine + metadata: + name: kube-proxy-pod-delete-chaos + namespace: {{workflow.parameters.adminModeNamespace}} + labels: + context: "{{workflow.parameters.appNamespace}}_kube-proxy" + spec: + appinfo: + appns: kube-system + applabel: "k8s-app=kube-proxy" + appkind: daemonset + jobCleanUpPolicy: retain + engineState: 'active' + chaosServiceAccount: litmus-admin + experiments: + - name: pod-delete + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: "60" + - name: CHAOS_INTERVAL + value: "10" + - name: FORCE + value: "false" + container: + image: litmuschaos/litmus-checker:latest + args: ["-file=/tmp/chaosengine.yaml","-saveName=/tmp/engine-name"] + + - name: revert-chaos + container: + image: litmuschaos/k8s:latest + command: [sh, -c] + args: + [ + "kubectl delete chaosengine kube-proxy-pod-delete-chaos -n {{workflow.parameters.adminModeNamespace}}", + ] diff --git a/scenarios/pod-memory-hog/pod-memory-hog.chartserviceversion.yaml b/scenarios/pod-memory-hog/pod-memory-hog.chartserviceversion.yaml new file mode 100644 index 0000000..fc67c5f --- /dev/null +++ b/scenarios/pod-memory-hog/pod-memory-hog.chartserviceversion.yaml @@ -0,0 +1,40 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2021-05-24T10:28:08Z + name: pod-memory-hog + version: 0.1.0 + annotations: + categories: pod-memory-hog + chartDescription: Injects memory chaos on a k8s pod +spec: + displayName: Pod Memory Hog + categoryDescription: > + Pod-Memory-Hog contains chaos to consume memory resouces of specified containers in Kubernetes pods + and revert the chaos + experiments: + - name: pod-memory-hog + description: "Injects memory chaos on a k8s pod" + keywords: + - Kubernetes + - Podtato-head + - Pod + platforms: + - GKE + - Minikube + - Packet(Kubeadm) + - EKS + - AKS + maintainers: + - name: oumkale + email: oumkale@chaosnative.com + provider: + name: ChaosNative + links: + - name: Kubernetes Slack + url: https://slack.kubernetes.io/ + - name: Documentation + url: https://docs.litmuschaos.io/docs/chaoshub/#generic-chaos + icon: + - url: + mediatype: "" diff --git a/scenarios/pod-memory-hog/workflow.yaml b/scenarios/pod-memory-hog/workflow.yaml new file mode 100644 index 0000000..eba531a --- /dev/null +++ b/scenarios/pod-memory-hog/workflow.yaml @@ -0,0 +1,159 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Workflow +metadata: + generateName: argowf-chaos-pod-memory-hog- + namespace: litmus + labels: + subject: "{{workflow.parameters.appNamespace}}_kube-proxy" +spec: + entrypoint: argowf-chaos + serviceAccountName: argo-chaos + securityContext: + runAsUser: 1000 + runAsNonRoot: true + arguments: + parameters: + - name: adminModeNamespace + value: "litmus" + - name: appNamespace + value: "kube-system" + templates: + - name: argowf-chaos + steps: + - - name: install-experiment + template: install-experiment + - - name: run-chaos + template: run-chaos + - - name: revert-chaos + template: revert-chaos + + - name: install-experiment + inputs: + artifacts: + - name: install-experiment + path: /tmp/pod-memory-hog.yaml + raw: + data: | + apiVersion: litmuschaos.io/v1alpha1 + description: + message: | + Injects memory consumption on pods belonging to an app deployment + kind: ChaosExperiment + metadata: + name: pod-memory-hog + spec: + definition: + scope: Namespaced + permissions: + - apiGroups: + - "" + - "batch" + - "litmuschaos.io" + resources: + - "jobs" + - "pods" + - "pods/log" + - "events" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "create" + - "list" + - "get" + - "patch" + - "update" + - "delete" + image: "litmuschaos/go-runner:latest" + args: + - -c + - ./experiments -name pod-memory-hog + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '30' + + - name: CHAOS_INTERVAL + value: '10' + + ## enter the amount of memory in megabytes to be consumed by the application pod + - name: MEMORY_CONSUMPTION + value: '500' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + ## Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + ## env var that describes the library used to execute the chaos + ## default: litmus. Supported values: litmus, powerfulseal, chaoskube + - name: LIB + value: 'litmus' + + - name: TARGET_POD + value: '' + + labels: + name: pod-memory-hog + container: + image: litmuschaos/k8s:latest + command: [sh, -c] + args: + [ + "kubectl apply -f /tmp/pod-memory-hog.yaml -n {{workflow.parameters.adminModeNamespace}}", + ] + + - name: run-chaos + inputs: + artifacts: + - name: run-chaos + path: /tmp/chaosengine.yaml + raw: + data: | + apiVersion: litmuschaos.io/v1alpha1 + kind: ChaosEngine + metadata: + name: kube-proxy-pod-memory-hog-chaos + namespace: {{workflow.parameters.adminModeNamespace}} + labels: + context: "{{workflow.parameters.appNamespace}}_kube-proxy" + spec: + appinfo: + appns: kube-system + applabel: "k8s-app=kube-proxy" + appkind: daemonset + jobCleanUpPolicy: retain + engineState: 'active' + chaosServiceAccount: litmus-admin + experiments: + - name: pod-memory-hog + spec: + components: + env: + - name: TARGET_CONTAINER + value: 'kube-proxy' + + - name: MEMORY_CONSUMPTION + value: '500' + + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + - name: CHAOS_KILL_COMMAND + value: "kill -9 $(ps afx | grep \"[dd] if /dev/zero\" | awk '{print $1}' | tr '\n' ' ')" + container: + image: litmuschaos/litmus-checker:latest + args: ["-file=/tmp/chaosengine.yaml","-saveName=/tmp/engine-name"] + + - name: revert-chaos + container: + image: litmuschaos/k8s:latest + command: [sh, -c] + args: + [ + "kubectl delete chaosengine kube-proxy-pod-memory-hog-chaos -n {{workflow.parameters.adminModeNamespace}}", + ] diff --git a/scenarios/pod-memory-hog/workflow_cron.yaml b/scenarios/pod-memory-hog/workflow_cron.yaml new file mode 100644 index 0000000..9f2100f --- /dev/null +++ b/scenarios/pod-memory-hog/workflow_cron.yaml @@ -0,0 +1,163 @@ +apiVersion: argoproj.io/v1alpha1 +kind: CronWorkflow +metadata: + name: argo-chaos-pod-memory-cron-wf + namespace: litmus + labels: + subject: "{{workflow.parameters.appNamespace}}_kube-proxy" +spec: + schedule: "0 * * * *" + concurrencyPolicy: "Forbid" + startingDeadlineSeconds: 0 + workflowSpec: + entrypoint: argowf-chaos + serviceAccountName: argo-chaos + securityContext: + runAsUser: 1000 + runAsNonRoot: true + arguments: + parameters: + - name: adminModeNamespace + value: "litmus" + - name: appNamespace + value: "kube-system" + templates: + - name: argowf-chaos + steps: + - - name: install-experiment + template: install-experiment + - - name: run-chaos + template: run-chaos + - - name: revert-chaos + template: revert-chaos + + - name: install-experiment + inputs: + artifacts: + - name: install-experiment + path: /tmp/pod-memory-hog.yaml + raw: + data: | + apiVersion: litmuschaos.io/v1alpha1 + description: + message: | + Injects memory consumption on pods belonging to an app deployment + kind: ChaosExperiment + metadata: + name: pod-memory-hog + spec: + definition: + scope: Namespaced + permissions: + - apiGroups: + - "" + - "batch" + - "litmuschaos.io" + resources: + - "jobs" + - "pods" + - "pods/log" + - "events" + - "chaosengines" + - "chaosexperiments" + - "chaosresults" + verbs: + - "create" + - "list" + - "get" + - "patch" + - "update" + - "delete" + image: "litmuschaos/go-runner:latest" + args: + - -c + - ./experiments -name pod-memory-hog + command: + - /bin/bash + env: + - name: TOTAL_CHAOS_DURATION + value: '30' + + - name: CHAOS_INTERVAL + value: '10' + + ## enter the amount of memory in megabytes to be consumed by the application pod + - name: MEMORY_CONSUMPTION + value: '500' + + ## percentage of total pods to target + - name: PODS_AFFECTED_PERC + value: '' + + ## Period to wait before and after injection of chaos in sec + - name: RAMP_TIME + value: '' + + ## env var that describes the library used to execute the chaos + ## default: litmus. Supported values: litmus, powerfulseal, chaoskube + - name: LIB + value: 'litmus' + + - name: TARGET_POD + value: '' + + labels: + name: pod-memory-hog + container: + image: litmuschaos/k8s:latest + command: [sh, -c] + args: + [ + "kubectl apply -f /tmp/pod-memory-hog.yaml -n {{workflow.parameters.adminModeNamespace}}", + ] + + - name: run-chaos + inputs: + artifacts: + - name: run-chaos + path: /tmp/chaosengine.yaml + raw: + data: | + apiVersion: litmuschaos.io/v1alpha1 + kind: ChaosEngine + metadata: + name: kube-proxy-pod-memory-hog-chaos + namespace: {{workflow.parameters.adminModeNamespace}} + labels: + context: "{{workflow.parameters.appNamespace}}_kube-proxy" + spec: + appinfo: + appns: kube-system + applabel: "k8s-app=kube-proxy" + appkind: daemonset + jobCleanUpPolicy: retain + engineState: 'active' + chaosServiceAccount: litmus-admin + experiments: + - name: pod-memory-hog + spec: + components: + env: + - name: TARGET_CONTAINER + value: 'kube-proxy' + + - name: MEMORY_CONSUMPTION + value: '500' + + - name: TOTAL_CHAOS_DURATION + value: '60' # in seconds + + - name: CHAOS_KILL_COMMAND + value: "kill -9 $(ps afx | grep \"[dd] if /dev/zero\" | awk '{print $1}' | tr '\n' ' ')" + container: + image: litmuschaos/litmus-checker:latest + args: ["-file=/tmp/chaosengine.yaml","-saveName=/tmp/engine-name"] + + - name: revert-chaos + container: + image: litmuschaos/k8s:latest + command: [sh, -c] + args: + [ + "kubectl delete chaosengine kube-proxy-pod-memory-hog-chaos -n {{workflow.parameters.adminModeNamespace}}", + ] diff --git a/scenarios/podtato-head/podtato-head.chartserviceversion.yaml b/scenarios/podtato-head/podtato-head.chartserviceversion.yaml new file mode 100644 index 0000000..bc4c726 --- /dev/null +++ b/scenarios/podtato-head/podtato-head.chartserviceversion.yaml @@ -0,0 +1,40 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2021-05-24T10:28:08Z + name: podtato-head + version: 0.1.0 + annotations: + categories: podtato-head + chartDescription: Injects chaos on podtato-head application +spec: + displayName: Podtato-head Chaos + categoryDescription: > + It install podtato-head application, inject chaos on podtato-head, uninstall the application + and revert the chaos + experiments: + - name: pod-delete + description: "Deletes a k8s pod" + keywords: + - Kubernetes + - Podtato-head + - Pod + platforms: + - GKE + - Minikube + - Packet(Kubeadm) + - EKS + - AKS + maintainers: + - name: oumkale + email: oumkale@chaosnative.com + provider: + name: ChaosNative + links: + - name: Kubernetes Slack + url: https://slack.kubernetes.io/ + - name: Documentation + url: https://docs.litmuschaos.io/docs/chaoshub/#generic-chaos + icon: + - url: + mediatype: "" diff --git a/scenarios/podtato-head/workflow.yaml b/scenarios/podtato-head/workflow.yaml new file mode 100644 index 0000000..355456b --- /dev/null +++ b/scenarios/podtato-head/workflow.yaml @@ -0,0 +1,114 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Workflow +metadata: + generateName: argowf-podtato-head-chaos- + namespace: litmus + labels: + subject : "{{workflow.parameters.adminModeNamespace}}_podtato-main" +spec: + entrypoint: argowf-chaos + serviceAccountName: argo-chaos + securityContext: + runAsUser: 1000 + runAsNonRoot: true + arguments: + parameters: + - name: adminModeNamespace + value: "litmus" + templates: + - name: argowf-chaos + steps: + - - name: install-application + template: install-application + - - name: install-chaos-experiments + template: install-chaos-experiments + - - name: pod-delete + template: pod-delete + - - name: revert-chaos + template: revert-chaos + - name: delete-application + template: delete-application + + - name: install-application + container: + image: litmuschaos/litmus-app-deployer:latest + args: ["-namespace={{workflow.parameters.adminModeNamespace}}","-typeName=resilient","-operation=apply","-timeout=400", "-app=podtato-head","-scope=namespace"] + + - name: install-chaos-experiments + container: + image: litmuschaos/k8s:latest + command: [sh, -c] + args: + - "kubectl apply -f https://hub.litmuschaos.io/api/chaos/master?file=charts/generic/experiments.yaml -n + {{workflow.parameters.adminModeNamespace}} ; sleep 30" + + - name: pod-delete + inputs: + artifacts: + - name: pod-delete + path: /tmp/chaosengine.yaml + raw: + data: | + apiVersion: litmuschaos.io/v1alpha1 + kind: ChaosEngine + metadata: + name: podtato-main-pod-delete-chaos + namespace: {{workflow.parameters.adminModeNamespace}} + labels: + context: "{{workflow.parameters.adminModeNamespace}}_podtato-main" + spec: + appinfo: + appns: {{workflow.parameters.adminModeNamespace}} + applabel: 'name=podtato-main' + appkind: 'deployment' + engineState: 'active' + chaosServiceAccount: litmus-admin + jobCleanUpPolicy: 'retain' + components: + runner: + imagePullPolicy: Always + experiments: + - name: pod-delete + spec: + probe: + - name: "check-podtato-main-access-url" + type: "httpProbe" + httpProbe/inputs: + url: "http://podtato-main.{{workflow.parameters.adminModeNamespace}}.svc.cluster.local:9000" + insecureSkipVerify: false + method: + get: + criteria: "==" + responseCode: "200" + mode: "Continuous" + runProperties: + probeTimeout: 1 + interval: 1 + retry: 1 + components: + env: + - name: TOTAL_CHAOS_DURATION + value: '30' + # set chaos interval (in sec) as desired + - name: CHAOS_INTERVAL + value: '10' + # pod failures without '--force' & default terminationGracePeriodSeconds + - name: FORCE + value: 'false' + container: + image: litmuschaos/litmus-checker:latest + args: ["-file=/tmp/chaosengine.yaml","-saveName=/tmp/engine-name"] + + - name: delete-application + container: + image: litmuschaos/litmus-app-deployer:latest + args: ["-namespace={{workflow.parameters.adminModeNamespace}}","-typeName=resilient","-operation=delete","-app=podtato-head"] + + - name: revert-chaos + container: + image: litmuschaos/k8s:latest + command: [sh, -c] + args: + [ + "kubectl delete chaosengine podtato-main-pod-delete-chaos -n {{workflow.parameters.adminModeNamespace}}", + ] \ No newline at end of file diff --git a/scenarios/podtato-head/workflow_cron.yaml b/scenarios/podtato-head/workflow_cron.yaml new file mode 100644 index 0000000..083367b --- /dev/null +++ b/scenarios/podtato-head/workflow_cron.yaml @@ -0,0 +1,118 @@ +apiVersion: argoproj.io/v1alpha1 +kind: CronWorkflow +metadata: + name: argowf-podtato-head-chaos-cron-wf + namespace: litmus + labels: + subject : "{{workflow.parameters.adminModeNamespace}}_podtato-head" +spec: + schedule: "0 * * * *" + concurrencyPolicy: "Forbid" + startingDeadlineSeconds: 0 + workflowSpec: + entrypoint: argowf-chaos + serviceAccountName: argo-chaos + securityContext: + runAsUser: 1000 + runAsNonRoot: true + arguments: + parameters: + - name: adminModeNamespace + value: "litmus" + templates: + - name: argowf-chaos + steps: + - - name: install-application + template: install-application + - - name: install-chaos-experiments + template: install-chaos-experiments + - - name: pod-delete + template: pod-delete + - - name: revert-chaos + template: revert-chaos + - name: delete-application + template: delete-application + + - name: install-application + container: + image: litmuschaos/litmus-app-deployer:latest + args: ["-namespace={{workflow.parameters.adminModeNamespace}}","-typeName=resilient","-operation=apply","-timeout=400", "-app=podtato-head","-scope=namespace"] + + - name: install-chaos-experiments + container: + image: litmuschaos/k8s:latest + command: [sh, -c] + args: + - "kubectl apply -f https://hub.litmuschaos.io/api/chaos/master?file=charts/generic/experiments.yaml -n + {{workflow.parameters.adminModeNamespace}} ; sleep 30" + + - name: pod-delete + inputs: + artifacts: + - name: pod-delete + path: /tmp/chaosengine.yaml + raw: + data: | + apiVersion: litmuschaos.io/v1alpha1 + kind: ChaosEngine + metadata: + name: podtato-main-pod-delete-chaos + namespace: {{workflow.parameters.adminModeNamespace}} + labels: + context: "{{workflow.parameters.adminModeNamespace}}_podtato-main" + spec: + appinfo: + appns: {{workflow.parameters.adminModeNamespace}} + applabel: 'name=podtato-main' + appkind: 'deployment' + engineState: 'active' + chaosServiceAccount: litmus-admin + jobCleanUpPolicy: 'retain' + components: + runner: + imagePullPolicy: Always + experiments: + - name: pod-delete + spec: + probe: + - name: "check-podtato-main-access-url" + type: "httpProbe" + httpProbe/inputs: + url: "http://podtato-main.{{workflow.parameters.adminModeNamespace}}.svc.cluster.local:9000" + insecureSkipVerify: false + method: + get: + criteria: "==" + responseCode: "200" + mode: "Continuous" + runProperties: + probeTimeout: 1 + interval: 1 + retry: 1 + components: + env: + - name: TOTAL_CHAOS_DURATION + value: '30' + # set chaos interval (in sec) as desired + - name: CHAOS_INTERVAL + value: '10' + # pod failures without '--force' & default terminationGracePeriodSeconds + - name: FORCE + value: 'false' + container: + image: litmuschaos/litmus-checker:latest + args: ["-file=/tmp/chaosengine.yaml","-saveName=/tmp/engine-name"] + + - name: delete-application + container: + image: litmuschaos/litmus-app-deployer:latest + args: ["-namespace={{workflow.parameters.adminModeNamespace}}","-typeName=resilient","-operation=delete","-app=podtato-head"] + + - name: revert-chaos + container: + image: litmuschaos/k8s:latest + command: [sh, -c] + args: + [ + "kubectl delete chaosengine podtato-main-pod-delete-chaos -n {{workflow.parameters.adminModeNamespace}}", + ] \ No newline at end of file