A comprehensive infrastructure-as-code project focused on Kubernetes cluster deployment, automation, and GitOps practices using modern DevOps tools.
This project demonstrates the setup and configuration of Kubernetes environments using various orchestration and automation tools. Each part focuses on different aspects of container orchestration, from basic cluster setup to advanced GitOps workflows.
- Infrastructure as Code: Automate cluster provisioning with Vagrant
- Container Orchestration: Deploy and manage K3s Kubernetes clusters
- GitOps Practices: Implement continuous deployment with ArgoCD
- High Availability: Configure multi-node clusters with proper networking
- Best Practices: Follow industry standards for security and scalability
iot/
βββ p1/ # Part 1: K3s Multi-Node Cluster
βββ p2/ # Part 2: K3s with Applications & Ingress
βββ p3/ # Part 3: GitOps with ArgoCD (Coming Soon)
βββ CONTRIBUTING.md
βββ SECURITY.md
βββ README.md # This file
Status: Completed
Set up a 2-node K3s Kubernetes cluster using Vagrant and VirtualBox/VMware.
Features:
- Automated VM provisioning
- K3s server (master) and worker nodes
- Private network configuration
- Shell script automation
Tech Stack: Vagrant, VirtualBox, K3s, Bash
π Detailed Documentation β
Status: Completed
Deploy multiple applications with services and implement hostname-based routing using Kubernetes Ingress.
Features:
- Three containerized applications (app1, app2, app3)
- ClusterIP services for internal load balancing
- Traefik Ingress Controller with hostname routing
- High availability setup (App 2 with 3 replicas)
- Default backend routing for fallback requests
- Automated deployment via Vagrant provisioning
Tech Stack: K3s, Traefik, Kubernetes Services, Ingress, http-echo
π Detailed Documentation β
Status: Planned
Deploy a K3s cluster in Docker and implement GitOps workflows with ArgoCD.
Planned Features:
- K3D cluster setup
- ArgoCD installation and configuration
- Automated application deployment
- Git-based continuous delivery
Tech Stack: K3D, ArgoCD, Helm, Git
π Documentation: Coming Soon
- Vagrant >= 2.0 - VM automation
- VirtualBox >= 6.0 or VMware Fusion - Virtualization
- Git - Version control
- kubectl - Kubernetes CLI (optional for host machine)
- OS: macOS, Linux, or Windows (WSL2)
- RAM: Minimum 4GB free (8GB+ recommended)
- Disk: Minimum 20GB free space
- CPU: Multi-core processor (2+ cores recommended)
# macOS
brew install vagrant
brew install --cask virtualbox
# Ubuntu/Debian
sudo apt-get install vagrant virtualbox
# Windows (WSL2)
choco install vagrant
choco install virtualbox# Clone the repository
git clone https://github.com/BatuhanKas/iot.git
cd iot
# Navigate to desired part
cd p1
# Start the cluster
vagrant up
# Verify installation
vagrant ssh bkasS -c "sudo kubectl get nodes"- Kubernetes Documentation
- K3s Documentation
- Vagrant Documentation
- ArgoCD Documentation
- GitOps Principles
Contributions are welcome! Please read our Contributing Guidelines before submitting pull requests.
Quick steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat(p2): add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request using our PR template
Batuhan Kas
- GitHub: @BatuhanKas
Eren Demirer
- GitHub: @erendemirer1
Project Repository: Inception of Things
- 42 School for the project concept
- K3s community for lightweight Kubernetes distribution
- HashiCorp for Vagrant and http-echo container
- Traefik Labs for the ingress controller
- Argo Project for GitOps tooling
For security concerns, please review our Security Policy.
| Part | Status | Progress | Description |
|---|---|---|---|
| Part 1 | β Complete | 100% | 2-node K3s cluster (server + worker) |
| Part 2 | β Complete | 100% | Applications with Ingress routing |
| Part 3 | π Planned | 0% | K3D with ArgoCD GitOps |
Last Updated: December 2025
Version: 1.0.0