Skip to content

A hands-on Kubernetes infrastructure project demonstrating K3s lightweight cluster deployment using Vagrant and VirtualBox. Features include multi-node cluster setup with server and worker nodes (Part 1), application deployments with configurable replicas, ClusterIP services, and Ingress-based routing with hostname-based traffic management (Part 2)

License

Notifications You must be signed in to change notification settings

BatuhanKas/Inception_of_Things

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

53 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Inception of Things (IoT)

A comprehensive infrastructure-as-code project focused on Kubernetes cluster deployment, automation, and GitOps practices using modern DevOps tools.

πŸ“‹ Overview

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.

🎯 Project Goals

  • 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

πŸ—‚οΈ Project Structure

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

πŸ“¦ Parts Overview

Part 1: K3s Cluster with Vagrant βœ…

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 β†’


Part 2: K3s with Applications and Ingress βœ…

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 β†’


Part 3: K3D and GitOps with ArgoCD πŸ”œ

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


πŸ› οΈ Prerequisites

Required Software

  • Vagrant >= 2.0 - VM automation
  • VirtualBox >= 6.0 or VMware Fusion - Virtualization
  • Git - Version control
  • kubectl - Kubernetes CLI (optional for host machine)

System Requirements

  • OS: macOS, Linux, or Windows (WSL2)
  • RAM: Minimum 4GB free (8GB+ recommended)
  • Disk: Minimum 20GB free space
  • CPU: Multi-core processor (2+ cores recommended)

Installation

# macOS
brew install vagrant
brew install --cask virtualbox

# Ubuntu/Debian
sudo apt-get install vagrant virtualbox

# Windows (WSL2)
choco install vagrant
choco install virtualbox

πŸš€ Quick Start

# 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"

πŸ“š Learning Resources

🀝 Contributing

Contributions are welcome! Please read our Contributing Guidelines before submitting pull requests.

Quick steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'feat(p2): add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request using our PR template

πŸ“ License

πŸ‘€ Authors

Batuhan Kas

Eren Demirer

Project Repository: Inception of Things

πŸ™ Acknowledgments

  • 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

πŸ”’ Security

For security concerns, please review our Security Policy.

πŸ“Š Project Status

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

About

A hands-on Kubernetes infrastructure project demonstrating K3s lightweight cluster deployment using Vagrant and VirtualBox. Features include multi-node cluster setup with server and worker nodes (Part 1), application deployments with configurable replicas, ClusterIP services, and Ingress-based routing with hostname-based traffic management (Part 2)

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •