Skip to content

πŸ› οΈ Complete Workshop Setup Guide

Welcome to the CI/CD Chaos Workshop Setup Guide! This comprehensive guide will prepare your environment for all phases and scenariosβ€”from local Python testing to advanced Kubernetes GitOps with ArgoCD and Argo Rollouts.

🎯 Goal: Get your environment battle-ready to defeat the Chaos Agent in every scenario! πŸ•ΆοΈ


πŸ“‹ Prerequisites Checklist

πŸ’» Hardware Requirements

  • RAM: 8GB+ (16GB recommended for Kubernetes/ArgoCD scenarios)
  • Storage: 10GB+ free disk space
  • Network: Reliable internet connection
  • Access: Administrator/root access

πŸ› οΈ Software Requirements

  • Python: 3.10+ for automation and testing
  • Docker: Desktop or Engine for containerization
  • Kubernetes: Local cluster (Docker Desktop, Minikube, Kind, or cloud)
  • Git: Version control
  • Node.js: For frontend demos (optional but recommended)

🎯 Workshop Goals

  • Build chaos-resistant CI/CD pipelines
  • Master Testcontainers for reliable testing
  • Deploy to Kubernetes with confidence
  • Implement GitOps with ArgoCD and Argo Rollouts
  • Defeat the Chaos Agent in all scenarios! πŸ”₯

🐍 Step 1: Install Python 3.10+

πŸͺŸ Windows Installation

  1. Download Python
  2. Go to python.org/downloads
  3. Download Python 3.10 or higher
  4. Important: Check "Add Python to PATH" during installation

  5. Verify Installation cmd python --version # Should show: Python 3.10.x or higher

🍎 macOS Installation

Option A: Using Homebrew (Recommended)

# Install Homebrew first if you don't have it
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Install Python
brew install python@3.10

Option B: Download from python.org - Visit python.org/downloads - Download the macOS installer - Run the installer

Verify Installation

python3 --version
# Should show: Python 3.10.x or higher

🐧 Linux Installation

Ubuntu/Debian

# Update package list
sudo apt update

# Install Python 3.10
sudo apt install python3.10 python3.10-venv python3-pip

# Verify installation
python3.10 --version

CentOS/RHEL

# Install Python 3.10
sudo yum install python3.10 python3-pip

# Verify installation
python3.10 --version

🐳 Step 2: Install Docker Desktop

πŸͺŸ Windows Installation

  1. Download Docker Desktop
  2. Go to docker.com/products/docker-desktop
  3. Download Docker Desktop for Windows
  4. Run the installer
  5. Important: Enable WSL 2 if prompted

  6. Start Docker Desktop

  7. Launch Docker Desktop from Start Menu
  8. Wait for the whale icon to stop animating
  9. Docker is ready when the icon is static

  10. Verify Installation cmd docker --version docker run hello-world

🍎 macOS Installation

  1. Download Docker Desktop
  2. Go to docker.com/products/docker-desktop
  3. Download Docker Desktop for Mac
  4. Drag Docker to Applications folder
  5. Launch Docker Desktop

  6. Verify Installation bash docker --version docker run hello-world

🐧 Linux Installation

Install Docker using convenience script

# Install Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# Add your user to docker group (log out and back in)
sudo usermod -aG docker $USER

# Start Docker service
sudo systemctl start docker
sudo systemctl enable docker

# Verify installation
docker --version
docker run hello-world

☸️ Step 3: Choose Your Kubernetes Cluster

🐳 Docker Desktop Kubernetes (Easiest)

Perfect if you already installed Docker Desktop above!

  1. Enable Kubernetes
  2. Open Docker Desktop
  3. Go to Settings β†’ Kubernetes
  4. Check "Enable Kubernetes"
  5. Click "Apply & Restart"

  6. Verify Installation bash kubectl version --client kubectl cluster-info

The most popular local Kubernetes cluster

Install Minikube:

Windows:

# Using Chocolatey
choco install minikube

# Or download manually from: https://minikube.sigs.k8s.io/docs/start/

macOS:

# Using Homebrew
brew install minikube

Linux:

# Download and install
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

Start and Verify:

minikube start
kubectl version --client
minikube status

🐳 Kind (Kubernetes in Docker)

Lightweight Kubernetes cluster using Docker

Install Kind:

Windows:

# Using Chocolatey
choco install kind

macOS:

# Using Homebrew
brew install kind

Linux:

# Download and install
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind

Create Cluster and Verify:

kind create cluster --name chaos-workshop
kubectl version --client
kind get clusters

☁️ Cloud Kubernetes (GKE/EKS/AKS)

For cloud-based development


🎯 Step 4: Install kubectl (Kubernetes CLI)

πŸͺŸ Windows Installation

# Using Chocolatey
choco install kubernetes-cli

# Or download from: https://kubernetes.io/docs/tasks/tools/install-kubectl/

🍎 macOS Installation

# Using Homebrew
brew install kubectl

# Or using curl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl

🐧 Linux Installation

# Download kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

Verify kubectl Installation:

kubectl version --client

πŸ“¦ Step 5: Clone Workshop Repository

Install Git (if not already installed)

Windows: Download from git-scm.com

macOS:

brew install git

Linux:

sudo apt install git  # Ubuntu/Debian
sudo yum install git  # CentOS/RHEL

Clone the workshop repository

git clone https://github.com/vellankikoti/ci-cd-chaos-workshop.git
cd ci-cd-chaos-workshop

🐍 Step 6: Set Up Python Virtual Environment

Create a virtual environment

# Windows
python -m venv venv

# macOS/Linux
python3 -m venv venv

Activate the virtual environment

Windows:

venv\Scripts\activate

macOS/Linux:

source venv/bin/activate

Verify activation

# You should see (venv) at the start of your prompt
which python  # macOS/Linux
where python  # Windows

πŸ“š Step 7: Install Required Packages

Upgrade pip

pip install --upgrade pip

Install workshop dependencies

pip install -r requirements.txt

Install additional packages

pip install docker
pip install kubernetes
pip install jenkins
pip install jinja2
pip install weasyprint
pip install mkdocs
pip install mkdocs-material

Verify installations

python -c "import pytest, testcontainers, docker, kubernetes, fastapi, uvicorn; print('βœ… All packages installed successfully!')"

🎯 Step 8: Install Node.js (for frontend demos)

🍎 macOS Installation

brew install node

πŸͺŸ Windows Installation

Download from nodejs.org

🐧 Linux Installation

Ubuntu/Debian:

curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs

CentOS/RHEL:

curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash -
sudo yum install -y nodejs

Verify Node.js installation

node --version
npm --version

πŸš€ Step 9: Install ArgoCD CLI (Optional, for advanced GitOps)

🍎 macOS Installation

brew install argocd

🐧 Linux Installation

curl -sSL -o argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
chmod +x argocd
sudo mv argocd /usr/local/bin/

πŸͺŸ Windows Installation

choco install argocd-cli

πŸ”„ Step 10: Install Argo Rollouts Plugin (Optional, for advanced rollout UI)

🍎 macOS Installation

brew install argo-rollouts

🐧 Linux Installation

curl -sLO https://github.com/argoproj/argo-rollouts/releases/latest/download/kubectl-argo-rollouts-linux-amd64
chmod +x kubectl-argo-rollouts-linux-amd64
sudo mv kubectl-argo-rollouts-linux-amd64 /usr/local/bin/kubectl-argo-rollouts

πŸͺŸ Windows Installation

choco install argo-rollouts

πŸ§ͺ Step 11: Test Your Setup

Test Python

python --version

Test Docker

docker run hello-world

Test Kubernetes

kubectl version --client
kubectl cluster-info

Test Testcontainers

python -c "
from testcontainers.core.container import DockerContainer
from testcontainers.core.waiting_utils import wait_for_logs

# Test Redis container
with DockerContainer('redis:alpine') as redis:
    redis.with_exposed_ports(6379)
    redis.start()
    print('βœ… Testcontainers working!')
"

Test Node.js

node --version
npm --version

πŸŽ‰ Step 12: You're Ready!

🎊 Congratulations! You're Ready for Chaos!

If all tests pass, you're ready to battle the Chaos Agent in every scenario!

πŸš€ Next Steps:

  1. βœ… Read the Workshop Overview
  2. βœ… Start with Phase 1: Test Mayhem
  3. βœ… Prepare to defeat chaos! πŸ”₯

πŸ†˜ Troubleshooting

Common Issues & Solutions

🐳 Docker not starting

Windows: - Make sure WSL 2 is enabled - Check Docker Desktop is running

macOS: - Check Docker Desktop is running - Restart Docker Desktop if needed

Linux:

sudo systemctl start docker
sudo systemctl enable docker

☸️ Kubernetes connection issues

Minikube:

minikube start

Kind:

kind create cluster

Docker Desktop: - Enable Kubernetes in Docker Desktop settings

🐍 Python package issues

  • Make sure your virtual environment is activated
  • Try: pip install --upgrade pip setuptools wheel
  • Check Python version: python --version

πŸ” Permission errors

Windows: - Run as Administrator

Linux/macOS: - Use sudo where needed - Check file permissions and ownership

Still Stuck?

  1. Check the Troubleshooting Guide
  2. Ask in the workshop Discord/Slack
  3. Open an issue on GitHub

🎯 Quick Verification Checklist

Final Verification

Before the workshop starts, make sure you can run:

βœ… Python works

python --version

βœ… Docker works

docker run hello-world

βœ… Kubernetes works

kubectl version --client

βœ… Virtual environment is active

echo $VIRTUAL_ENV  # Should show path to venv

βœ… Packages are installed

python -c "import pytest, testcontainers, docker, kubernetes, fastapi, uvicorn; print('Ready!')"

βœ… Node.js works (optional)

node --version
npm --version

Ready Message

If all βœ… pass, you're ready to create some chaos! 🧨


πŸ“Š Workshop Phases Overview

Phase 1: Testcontainers

  • Goal: Master reliable testing with containers
  • Skills: Python testing, Docker integration, database testing
  • Duration: 30 minutes

Phase 2: Jenkins

  • Goal: Build chaos-resistant CI/CD pipelines
  • Skills: Jenkins automation, pipeline scripting, error handling
  • Duration: 45 minutes

Phase 3: Docker

  • Goal: Containerize applications and handle Docker chaos
  • Skills: Docker builds, multi-stage builds, image optimization
  • Duration: 40 minutes

Phase 4: Kubernetes

  • Goal: Deploy to Kubernetes and survive chaos
  • Skills: K8s deployments, auto-scaling, GitOps with ArgoCD
  • Duration: 60 minutes

🎯 Success Criteria

βœ… Complete Setup Checklist:

  • βœ… Python 3.10+ installed and working
  • βœ… Docker Desktop/Engine installed and running
  • βœ… Kubernetes cluster accessible (local or cloud)
  • βœ… kubectl configured and working
  • βœ… Git installed and configured
  • βœ… Virtual environment created and activated
  • βœ… All Python packages installed
  • βœ… Node.js installed (for frontend demos)
  • βœ… ArgoCD CLI installed (for GitOps scenarios)
  • βœ… Argo Rollouts plugin installed (for advanced rollouts)
  • βœ… All verification tests passing