From 784662296bb20d76c656767aac877d8effa63ed6 Mon Sep 17 00:00:00 2001 From: UDIT GAURAV <35391335+uditgaurav@users.noreply.github.com> Date: Sun, 14 Jun 2020 19:15:15 +0530 Subject: [PATCH] feat(chart): Add charts for kubelet service kill experiment (#239) Signed-off-by: Udit Gaurav --- .../generic/generic.chartserviceversion.yaml | 1 + charts/generic/generic.package.yaml | 4 ++ charts/generic/icons/kubelet-service-kill.png | Bin 0 -> 3634 bytes .../generic/kubelet-service-kill/engine.yaml | 27 ++++++++ .../kubelet-service-kill/experiment.yaml | 61 ++++++++++++++++++ ...elet-service-kill.chartserviceversion.yaml | 45 +++++++++++++ charts/generic/kubelet-service-kill/rbac.yaml | 37 +++++++++++ charts/generic/pod-memory-hog/engine.yaml | 2 +- 8 files changed, 176 insertions(+), 1 deletion(-) create mode 100644 charts/generic/icons/kubelet-service-kill.png create mode 100644 charts/generic/kubelet-service-kill/engine.yaml create mode 100644 charts/generic/kubelet-service-kill/experiment.yaml create mode 100644 charts/generic/kubelet-service-kill/kubelet-service-kill.chartserviceversion.yaml create mode 100644 charts/generic/kubelet-service-kill/rbac.yaml diff --git a/charts/generic/generic.chartserviceversion.yaml b/charts/generic/generic.chartserviceversion.yaml index 4d0020f..729c961 100644 --- a/charts/generic/generic.chartserviceversion.yaml +++ b/charts/generic/generic.chartserviceversion.yaml @@ -25,6 +25,7 @@ spec: - disk-fill - node-memory-hog - pod-memory-hog + - kubelet-service-kill keywords: - Kubernetes diff --git a/charts/generic/generic.package.yaml b/charts/generic/generic.package.yaml index f643922..8434511 100644 --- a/charts/generic/generic.package.yaml +++ b/charts/generic/generic.package.yaml @@ -36,3 +36,7 @@ experiments: - 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" + \ No newline at end of file diff --git a/charts/generic/icons/kubelet-service-kill.png b/charts/generic/icons/kubelet-service-kill.png new file mode 100644 index 0000000000000000000000000000000000000000..a5b0950cd546b4d73482562af3fa7f127d0048ca GIT binary patch literal 3634 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 literal 0 HcmV?d00001 diff --git a/charts/generic/kubelet-service-kill/engine.yaml b/charts/generic/kubelet-service-kill/engine.yaml new file mode 100644 index 0000000..2cfc807 --- /dev/null +++ b/charts/generic/kubelet-service-kill/engine.yaml @@ -0,0 +1,27 @@ +apiVersion: litmuschaos.io/v1alpha1 +kind: ChaosEngine +metadata: + name: nginx-chaos + namespace: default +spec: + # It can be true/false + annotationCheck: 'false' + # 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: kubelet-service-kill-sa + monitoring: false + # It can be delete/retain + jobCleanUpPolicy: 'delete' + experiments: + - name: kubelet-service-kill + spec: + components: + env: + - name: TOTAL_CHAOS_DURATION + value: '90' # in seconds diff --git a/charts/generic/kubelet-service-kill/experiment.yaml b/charts/generic/kubelet-service-kill/experiment.yaml new file mode 100644 index 0000000..14d4f1e --- /dev/null +++ b/charts/generic/kubelet-service-kill/experiment.yaml @@ -0,0 +1,61 @@ +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 + version: 0.1.0 +spec: + definition: + scope: Cluster + permissions: + - apiGroups: + - "" + - "batch" + - "apps" + - "litmuschaos.io" + resources: + - "jobs" + - "pods" + - "pods/log" + - "events" + - "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/kubelet_service_kill/kubelet_service_kill_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: '90' # in seconds + + # Period to wait before injection of chaos in sec + - name: RAMP_TIME + value: '' + + - name: LIB + value: 'litmus' + labels: + name: kubelet-service-kill diff --git a/charts/generic/kubelet-service-kill/kubelet-service-kill.chartserviceversion.yaml b/charts/generic/kubelet-service-kill/kubelet-service-kill.chartserviceversion.yaml new file mode 100644 index 0000000..62739b5 --- /dev/null +++ b/charts/generic/kubelet-service-kill/kubelet-service-kill.chartserviceversion.yaml @@ -0,0 +1,45 @@ +apiVersion: litmuchaos.io/v1alpha1 +kind: ChartServiceVersion +metadata: + createdAt: 2020-06-13T10:28:08Z + name: kubelet-service-kill + version: 0.1.0 + annotations: + categories: Kubernetes + vendor: CNCF + support: https://slack.kubernetes.io/ +spec: + displayName: kubelet-service-kill + categoryDescription: | + kubelet-service-kill contains killing kubelet 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 kubelet service kill. + - The application node should be healthy once chaos is stopped and the services are reaccessable. + + keywords: + - Kubernetes + - Kubelet + - Node + - Service + platforms: + - GKE + - Packet(Kubeadm) + - Minikube + - EKS + maturity: alpha + maintainers: + - name: Udit Gaurav + email: udit.gaurav@mayadata.io + minKubeVersion: 1.12.0 + provider: + name: Mayadata + links: + - name: Source Code + url: https://github.com/litmuschaos/litmus/tree/master/experiments/generic/kubelet_service_kill + - name: Documentation + url: https://docs.litmuschaos.io/docs/kubelet-service-kill/ + - name: Video + url: + icon: + - base64data: "" + mediatype: "" + chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/generic/kubelet-service-kill/experiment.yaml diff --git a/charts/generic/kubelet-service-kill/rbac.yaml b/charts/generic/kubelet-service-kill/rbac.yaml new file mode 100644 index 0000000..5c6139f --- /dev/null +++ b/charts/generic/kubelet-service-kill/rbac.yaml @@ -0,0 +1,37 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: kubelet-service-kill + namespace: default + labels: + name: kubelet-service-kill +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRole +metadata: + name: kubelet-service-kill + labels: + name: kubelet-service-kill +rules: +- apiGroups: ["","litmuschaos.io","batch","apps"] + resources: ["pods","jobs","pods/log","events","chaosengines","chaosexperiments","chaosresults"] + verbs: ["create","list","get","patch","update","delete"] +- apiGroups: [""] + resources: ["nodes"] + verbs: ["get","list"] +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + name: kubelet-service-kill + labels: + name: kubelet-service-kill +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: kubelet-service-kill +subjects: +- kind: ServiceAccount + name: kubelet-service-kill + namespace: default diff --git a/charts/generic/pod-memory-hog/engine.yaml b/charts/generic/pod-memory-hog/engine.yaml index 0f91f57..69731ca 100644 --- a/charts/generic/pod-memory-hog/engine.yaml +++ b/charts/generic/pod-memory-hog/engine.yaml @@ -31,7 +31,7 @@ spec: # Enter the amount of memory in megabytes to be consumed by the application pod # default: 500 (Megabytes) - name: MEMORY_CONSUMPTION - value: '' + value: '500' - name: TOTAL_CHAOS_DURATION value: '60' # in seconds