This repository is a playground for SRE and reliable monitoring setup for demo purpose. E2E solution runs in local k8 clusters provisioned with kind.
- kind
- with kube-proxy
- CNI
- kindnet
- x86_64
- arm64
- cilium
- x86_64
- arm64
- kindnet
- CNI
- without kube-proxy
- CNI
- cilium
- x86_64
- arm64
- cilium
- CNI
- with kube-proxy
- fluent-bit ➡️ Loki
- with kube-proxy
- without kube-proxy
- Loki
- OpenTelemetry ➡️ Jaeger
- workload traces
- kubernetes controleplane traces
- Prometheus
- kubernetes components metrics
- workload metrics
- node metrics
- cilium metrics
- nginx-ingress
- with kube-proxy
- without kube-proxy
- cilium
- with kube-proxy
- without kube-proxy
- Metallb
- load testing
- hipster
- chaos testing
- gremlin
- chaos-mesh
- hipster
- network-faults
- bandwidth trip
- delay
- partition
- pod-faults
- container kill
- pod failure
- pod kill
- stress-conditions
- cpu stress
- memory stress
- network-faults
- hipster
1. Docker
2. Kind
3. kubectl
4. helm
There are two options here (Option 1.1 & 1.2). First using DNSMASQ for DNS resolution. It helps in avoiding host file entries update. Or you can use traditional ways of updating hostfile entries.
# The script installs dnsmasq and registers a local dns server "sre-playground.devops.nakednerds.net"
./dns/setup.sh
command: sudo vi /etc/hosts
entries:
127.0.0.1 hipstershop.sre-playground.devops.nakednerds.net
127.0.0.1 grafana.sre-playground.devops.nakednerds.net
127.0.0.1 prometheus.sre-playground.devops.nakednerds.net
127.0.0.1 chaostest.sre-playground.devops.nakednerds.net
127.0.0.1 hubble.sre-playground.devops.nakednerds.net
127.0.0.1 jaeger.sre-playground.devops.nakednerds.net
git clone https://github.com/rkdutta/sre-playground.git
./bootstrap.sh <cluster-name> <CNI> <w/o kube-proxy>
./bootstrap.sh sre-playground kindnet with-kubeproxy
./bootstrap.sh sre-playground cilium without-kubeproxy
hipstershop.sre-playground.devops.nakednerds.net
hubble.sre-playground.devops.nakednerds.net
grafana.sre-playground.devops.nakednerds.net
User ID: admin
Password: prom-operator
prometheus.sre-playground.devops.nakednerds.net
hipstershop.sre-playground.devops.nakednerds.net/loadgen/
jaeger.sre-playground.devops.nakednerds.net/jaeger/
chaostest.sre-playground.devops.nakednerds.net
# Generate user access token
kubectl -n platform create token chaos-dashboard
# Trigger testing
kubectl apply -f chaos-mesh/workflows/chaos-workflow.yaml
kubectl apply -f chaos-mesh/experiments/pod-faults/container-kill.yaml
./reset.sh
(Note: Control plane components and CNI will not be deleted)
./teardown.sh