For automatically chaos engineering, ShardingSphere Operator supports a CRD named Chaos and build corresponding chaos platform CRD manifest with the attributions contained by the Chaos CRD. It supports Chaos Mesh currently, and is going to support LitmusChaos in future releases.
Please refer to ShardingSphere Operator user manual’s Operator Installation chapter.
It need to be activated by enabling the responding FeatureGate:
helm install [RELEASE_NAME] shardingsphere/apache-shardingsphere-operator-charts --set operator.featureGates.chaos=true
Name | Description | Type | Example |
---|---|---|---|
metadata.name |
Name | string | foo |
metadata.namespace |
Namespace,default ‘default ' | string |
Name | Description | Type | Example |
---|---|---|---|
spec.podChaos.selector.namespaces |
Pod Selector: Namespace | []string | |
spec.podChaos.selector.labelSelectors |
Pod Selector:Labels | map[string]string | |
spec.podChaos.selector.annotationSelectors |
Pod Selector:Annotations | map[string]string | |
spec.podChaos.selector.nodes |
Pod Selector:Node | []string | |
spec.podChaos.selector.pods |
Pod Selector:Pod | map[string][]string | |
spec.podChaos.selector.nodeSelectors |
Pod Selector:NodeSelector | map[string]string | |
spec.podChaos.selector.expressionSelectors |
Pod Selector:ExpressionSelector | []metav1.LabelSelectorRequirement | |
spec.podChaos.action |
PodChaos Type,including PodFailure、ContainerKill、PodKill、CPUStress、MemoryStress | PodChaosAction | PodFailure |
spec.podChaos.params.podFailure.duration |
PodFailure Duration | string | 1m |
spec.podChaos.params.containerKill.containerNames |
ContainerKill target container names | []string | shardingsphere-proxy |
spec.podChaos.params.podKill.gracePeriod |
PodKill graceful period time | number | 0 |
spec.podChaos.params.cpuStress.duration |
CPU duration | string | 1m |
spec.podChaos.params.cpuStress.cores |
CPU cores | number | 2 |
spec.podChaos.params.cpuStress.load |
CPU load | number | 50 |
spec.podChaos.params.memoryStress.duration |
Memory duration | string | 1m |
spec.podChaos.params.memoryStress.workers |
Memory workers | numbers | 2 |
spec.podChaos.params.memoryStress.consumption |
Memory consumption | string | 50 |
spec.networkChaos.source.namespaces |
Pod Selector:namespace | []string | |
spec.networkChaos.soruce.labelSelectors |
Pod Selector: labels | map[string]string | |
spec.networkChaos.source.annotationSelectors |
Pod Selector: annotations | map[string]string | |
spec.networkChaos.source.nodes |
Pod Selector: node | []string | |
spec.networkChaos.source.pods |
Pod Selector:Pod | map[string][]string | |
spec.networkChaos.source.nodeSelectors |
Pod Selector:NodeSlector | map[string]string | |
spec.networkChaos.source.expressionSelectors |
Pod Selector:ExpressionSelector | []metav1.LabelSelectorRequirement | |
spec.networkChaos.target.namespaces |
Pod Selector:Namespace | []string | |
spec.networkChaos.target.labelSelectors |
Pod Selector:Labels | map[string]string | |
spec.networkChaos.target.annotationSelectors |
Pod Selector:Annotations | map[string]string | |
spec.networkChaos.target.nodes |
Pod Selector:Node | []string | |
spec.networkChaos.target.pods |
Pod Selector:Pod | map[string][]string | |
spec.networkChaos.target.nodeSelectors |
Pod Selector:NodeSelector | map[string]string | |
spec.networkChaos.target.expressionSelectors |
Pod Selector:ExpressionSelector | []metav1.LabelSelectorRequirement | |
spec.networkChaos.action. |
NetworkChaos type,including Delay,Loss,Duplication,Corruption,Partition,Bandwidth | string | 50 |
spec.networkChaos.duration. |
Duration | string | 1m |
spec.networkChaos.direction. |
Traffic direction,including to、from 和 both | string | both |
spec.networkChaos.params.deplay.latency |
Packet delay | string | 100 |
spec.networkChaos.params.loss.loss |
Packet loss | string | 80 |
spec.networkChaos.params.duplicate.duplicate |
Packet duplication | string | 80 |
spec.networkChaos.params.corrupt.corrupt |
Packet Corrupt | string | 80 |
While using PodChaos and NetworkChaos, some parameters need to be setup with annotations according to the difference of chaos platform, such as:
Here is a example of PodChaos which injects CPU Stress:
apiVersion: shardingsphere.apache.org/v1alpha1
kind: Chaos
metadata:
name: cpu-chaos
annotations:
selector.chaos-mesh.org/mode: one
spec:
podChaos:
selector:
labelSelectors:
app: foo
namespaces:
- "default"
params:
cpuStress:
duration: 1m
cores: 2
load: 50
action: "CPUStress"