29 / 95 · 05 Performance & Chaos Engineering · Litmus Chaos Experiments← prev⊞ allnext →☰ Read as one page
5.6Automating Litmus in CI/CD
Integrate chaos experiments into your deployment pipeline so that resilience is validated on every release:
# .github/workflows/chaos-gate.yml
name: Chaos Resilience Gate
on:
push:
branches: [main]
jobs:
chaos-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup kubectl
uses: azure/setup-kubectl@v3
- name: Deploy to staging
run: kubectl apply -f k8s/staging/
- name: Wait for rollout
run: kubectl rollout status deployment/checkout-service -n staging --timeout=300s
- name: Run pod-delete chaos experiment
run: |
kubectl apply -f chaos/experiments/pod-delete.yaml
kubectl apply -f chaos/engines/checkout-pod-delete.yaml
- name: Wait for chaos completion
run: |
kubectl wait --for=condition=complete \
chaosresult/checkout-chaos-pod-delete \
-n staging --timeout=600s
- name: Validate chaos result
run: |
VERDICT=$(kubectl get chaosresult checkout-chaos-pod-delete \
-n staging -o jsonpath='{.status.experimentStatus.verdict}')
echo "Chaos experiment verdict: $VERDICT"
if [ "$VERDICT" != "Pass" ]; then
echo "FAIL: System did not survive chaos experiment"
exit 1
fi