obzev0

obzev0 : Chaos Engineering Tool

Obzev0 is a chaos engineering tool designed to help you test the resilience of your systems by simulating real-world failures. It allows you to define and execute chaos experiments to uncover weaknesses in your infrastructure and applications.

Tech Stack

Obzev0 is built using a microservices architecture, with the following components:

Features

Latency Injection

Packet Manipulation

Traffic Monitoring with eBPF

Self-cleaning TCP Proxy for Testing

Dynamic Configuration

Metrics Exposure to Prometheus

Installation

Prerequisites

Install with Helm

  1. Add the Helm repository:
    helm repo add obzev0 https://lumbrjx.github.io/obzev0/chart
    helm repo update
    
  2. Install Obzev0:
    helm install obzev0 obzev0/obzev0
    

Install obzevMini (for non-Kubernetes environments)

Download the binary:

curl -o obzevMini https://raw.githubusercontent.com/lumbrjx/obzev0/main/cmd/cli/obzevMini
chmod +x obzevMini

Build from Source

  1. Clone the repository:
    git clone https://github.com/lumbrjx/obzev0.git
    cd obzev0
    
  2. For Helm and Kubernetes:
    • Build the DaemonSet:
      make build-daemon TAG=<tag>
      
    • Build the controller:
      make build-controller TAG=<tag>
      
    • Package Helm chart:
      make package-chart
      

      Make sure to give your docker image the “latest” tag and push it to a container registry.

  3. For obzevMini:
    • Build the binary:
      make build-cli
      

Usage

Helm

  1. Install the chart:
    helm install <release-name> obzev0/obzev0
    
  2. Grant controller permissions:
    kubectl create clusterrolebinding permissive-binding \
      --clusterrole=cluster-admin \
      --serviceaccount=controller-system:controller-controller-manager
    
  3. Label nodes:
    • Control plane:
      kubectl label nodes <node-name> node-role.kubernetes.io/control-plane=""
      
    • Worker nodes:
      kubectl label nodes <node-name> node-role.kubernetes.io/worker=""
      
  4. Apply Custom Resource:

The chart folder already contains a Custom Resource and you still can define your own one. here’s the CR file and apply the changes by running:

kubectl apply -f path/to/CR/file

run locally with kind

after clonning the repo you can run the following command and have everything done for you:

make all TAG=latest

it will use a simple dummy express server you can access it here and the service

obzevMini

  1. Launch the Daemon Docker container:
    docker run -p 50051:50051 lumbrjx/obzev0-grpc-daemon:latest
    
  2. Initialize configuration:
    obzevMini init -Addr=127.0.0.1:50051 -dist=path/to/destination/folder/
    
  3. Apply configuration:
    obzevMini apply -path=path/to/configuration/file
    

Contributing

We welcome contributions to Obzev0! Whether you’re fixing bugs, adding features, or improving documentation, your contributions are valuable.

For questions or discussions, contact the project maintainers at kaibitayeb01@gmail.com.