feat(cassandra-chart): Adding cassandra pod-delete chart (#209)

Signed-off-by: shubhamchaudhary <shubham.chaudhary@mayadata.io>
This commit is contained in:
Shubham Chaudhary
2020-04-14 20:26:13 +05:30
committed by GitHub
parent 4459e2673f
commit c6bd629b84
9 changed files with 326 additions and 0 deletions

View File

@@ -0,0 +1,43 @@
apiVersion: litmuchaos.io/v1alpha1
kind: ChartServiceVersion
metadata:
createdAt: 2020-04-14T10:28:08Z
name: cassandra-pod-delete
version: 0.1.0
annotations:
categories: Cassandra
vendor: CNCF
support: https://slack.kubernetes.io/
spec:
displayName: cassandra-pod-delete
categoryDescription: |
This experiment causes (forced/graceful) pod failure of random replicas of an cassandra statefulset.
It tests statefulset sanity (replica availability & uninterrupted service) and recovery workflows of the cassandra pod
keywords:
- Kubernetes
- Cassandra
- Pod
platforms:
- GKE
- Konvoy
- Packet(Kubeadm)
- Minikube
- EKS
maturity: alpha
maintainers:
- name: Shubham Chaudhary
email: shubham.chaudhary@mayadata.io
minKubeVersion: 1.12.0
provider:
name: Mayadata
links:
- name: Source Code
url: https://github.com/litmuschaos/litmus/tree/master/experiments/cassandra/cassandra-pod_delete
- name: Documentation
url: https://docs.litmuschaos.io/docs/cassandra-pod-delete/
- name: Video
url:
icon:
- url:
mediatype: ""
chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/cassandra/cassandra-pod-delete/experiment.yaml

View File

@@ -0,0 +1,57 @@
apiVersion: litmuschaos.io/v1alpha1
kind: ChaosEngine
metadata:
name: cassandra-chaos
namespace: default
spec:
appinfo:
appns: 'default'
applabel: 'app=cassandra'
appkind: 'statefulset'
# It can be true/false
annotationCheck: 'true'
# It can be active/stop
engineState: 'active'
#ex. values: ns1:name=percona,ns2:run=nginx
auxiliaryAppInfo: ''
chaosServiceAccount: cassandra-pod-delete-sa
monitoring: false
# It can be delete/retain
jobCleanUpPolicy: 'delete'
experiments:
- name: cassandra-pod-delete
spec:
components:
env:
# set chaos duration (in sec) as desired
- name: TOTAL_CHAOS_DURATION
value: '15'
# set chaos interval (in sec) as desired
- name: CHAOS_INTERVAL
value: '15'
# pod failures without '--force' & default terminationGracePeriodSeconds
- name: FORCE
value: 'false'
# provide cassandra service name
# default service: cassandra
- name: CASSANDRA_SVC_NAME
value: 'cassandra'
# provide the keyspace replication factor
- name: KEYSPACE_REPLICATION_FACTOR
value: '3'
# provide cassandra port
# default port: 9042
- name: CASSANDRA_PORT
value: '9042'
# SET THE CASSANDRA_LIVENESS_CHECK
# IT CAN BE `enabled` OR `disabled`
- name: CASSANDRA_LIVENESS_CHECK
value: ''

View File

@@ -0,0 +1,103 @@
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Deletes a pod belonging to a casandra statefulset
kind: ChaosExperiment
metadata:
name: cassandra-pod-delete
version: 0.1.0
spec:
definition:
scope: Namespaced
permissions:
- apiGroups:
- ""
- "apps"
- "batch"
- "litmuschaos.io"
resources:
- "deployments"
- "statefulsets"
- "jobs"
- "pods"
- "pods/log"
- "pods/exec"
- "services"
- "events"
- "configmaps"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
- apiGroups:
- ""
resources:
- "nodes"
verbs:
- "get"
- "list"
image: "litmuschaos/ansible-runner:latest"
args:
- -c
- ansible-playbook ./experiments/cassandra/pod-delete/pod_delete_ansible_logic.yml -i /etc/ansible/hosts -vv; exit 0
command:
- /bin/bash
env:
- name: ANSIBLE_STDOUT_CALLBACK
value: 'default'
# 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: ''
# 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'
- name: CHAOS_INTERVAL
value: '15'
# SET THE CASSANDRA_LIVENESS_CHECK
# IT CAN BE `enabled` OR `disabled`
- name: CASSANDRA_LIVENESS_CHECK
value: ''
## 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: ''
labels:
name: cassandra-pod-delete

View File

@@ -0,0 +1,38 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: cassandra-pod-delete-sa
namespace: default
labels:
name: cassandra-pod-delete-sa
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: cassandra-pod-delete-sa
labels:
name: cassandra-pod-delete-sa
rules:
- apiGroups: ["","litmuschaos.io","batch","apps"]
resources: ["pods","deployments","statefulsets","pods/log","pods/exec","services","events","jobs","configmaps","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: cassandra-pod-delete-sa
labels:
name: cassandra-pod-delete-sa
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cassandra-pod-delete-sa
subjects:
- kind: ServiceAccount
name: cassandra-pod-delete-sa
namespace: default

View File

@@ -0,0 +1,37 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: cassandra-pod-delete-sa
namespace: default
labels:
name: cassandra-pod-delete-sa
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
name: cassandra-pod-delete-sa
namespace: default
labels:
name: cassandra-pod-delete-sa
rules:
- apiGroups: ["","litmuschaos.io","batch","apps"]
resources: ["pods","deployments","statefulsets","services","pods/log","pods/exec","events","jobs","chaosengines","chaosexperiments","chaosresults"]
verbs: ["create","list","get","patch","update","delete"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
name: cassandra-pod-delete-sa
namespace: default
labels:
name: cassandra-pod-delete-sa
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: cassandra-pod-delete-sa
subjects:
- kind: ServiceAccount
name: cassandra-pod-delete-sa
namespace: default

View File

@@ -0,0 +1,43 @@
apiVersion: litmuchaos.io/v1alpha1
kind: ChartServiceVersion
metadata:
createdAt: 2020-04-14T10:28:08Z
name: cassandra
version: 0.1.0
annotations:
categories: Kubernetes
chartDescription: Injects cassandra kubernetes chaos
spec:
displayName: Cassandra Chaos
categoryDescription: >
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:
- cassandra-pod-delete
keywords:
- Kubernetes
- Pod
- Cassandra
- Statefulset
maintainers:
- name: ksatchit
email: karthik.s@mayadata.io
minKubeVersion: 1.12.0
provider:
name: Mayadata
links:
- name: Kubernetes Website
url: https://kubernetes.io
- name: Cassandra Website
url: http://cassandra.apache.org/
- name: Source Code
url: https://github.com/kubernetes/kubernetes
- name: Kubernetes Slack
url: https://slack.kubernetes.io/
- name: Documentation
url: https://docs.litmuschaos.io/docs/chaoshub/#cassandra-chaos
icon:
- url:
mediatype: image/png
chaosexpcrdlink: https://raw.githubusercontent.com/litmuschaos/chaos-charts/master/charts/cassandra/experiments.yaml

View File

@@ -0,0 +1,5 @@
packageName: cassandra
experiments:
- name: cassandra-pod-delete
CSV: cassandra-pod-delete.chartserviceversion.yaml
desc: "cassandra-pod-delete"

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB