commit dd249fad69420dc219281394db1bb1c282aff5fd Author: Guillem Hernandez Sola Date: Fri Jan 30 09:44:36 2026 +0100 Added k3s diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..1f76a2f --- /dev/null +++ b/.gitignore @@ -0,0 +1,46 @@ + +# Created by https://www.gitignore.io/api/macos,vagrant,visualstudiocode + +### macOS ### +*.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### Vagrant ### +.vagrant/ +*.box + +### VisualStudioCode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history + +### Ansible ### +*.retry + +# End of https://www.gitignore.io/api/macos,vagrant,visualstudiocode,ansible diff --git a/README.md b/README.md new file mode 100644 index 0000000..506d9e1 --- /dev/null +++ b/README.md @@ -0,0 +1,63 @@ +[![Agile611](https://www.agile611.com/wp-content/uploads/2020/09/cropped-logo-header.png)](http://www.agile611.com/) +# Start Using Kubernetes (k3s) with Vagrant + +Aquest repositori mostra com desplegar un clúster lleuger de Kubernetes (k3s) usant Vagrant per a desenvolupament i proves ràpides. + +**Prerequisits** + +- Vagrant instal·lat +- Un provider de VM (VirtualBox, Parallels, o un provider suportat) +- `curl` i `ssh` disponibles + +Consulteu el `Vagrantfile` per a configuracions específiques del provider. + +**Ràpid Inici** + +1. Arrancar les màquines amb Vagrant: + +```bash +vagrant up +``` + +2. Comprovar l'estat del clúster (ssh a una màquina i utilitzar `kubectl` integrat): + +```bash +vagrant ssh -c "sudo kubectl get nodes" +``` + +3. Parar i eliminar les màquines: + +```bash +vagrant halt +vagrant destroy -f +``` + +**Detalls d'instal·lació** + +Les instruccions d'instal·lació i els scripts utilitzats per configurar k3s estan a [install_k3s.txt](install_k3s.txt). Revisa aquest fitxer per entendre com s'instal·la i s'inicia k3s dins de les VM. + +**Personalitzar** + +Modifica el [Vagrantfile](Vagrantfile) per canviar la mida de la VM, la xarxa o el nombre de nodes. + +**Contribucions i errors** + +Obre un issue o envia un PR amb millores o problemes trobats. + +# Support + +This tutorial is released into the public domain by [Agile611](http://www.agile611.com/) under Creative Commons Attribution-NonCommercial 4.0 International. + +[![License: CC BY-NC 4.0](https://img.shields.io/badge/License-CC_BY--NC_4.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc/4.0/) + + +This README file was originally written by [Guillem Hernández Sola](https://www.linkedin.com/in/guillemhs/) and is likewise released into the public domain. + +Please contact Agile611 for further details. + +* [Agile611](http://www.agile611.com/) +* Laureà Miró 309 +* 08950 Esplugues de Llobregat (Barcelona) + +[![Agile611](https://www.agile611.com/wp-content/uploads/2020/09/cropped-logo-header.png)](http://www.agile611.com/) + diff --git a/Vagrantfile b/Vagrantfile new file mode 100644 index 0000000..a19c701 --- /dev/null +++ b/Vagrantfile @@ -0,0 +1,78 @@ +NUM_WORKER_NODES=2 +IP_NW="192.0.3." +IP_START=10 + +Vagrant.configure("2") do |config| + config.vm.box = "bento/ubuntu-24.04" + config.vm.box_check_update = true + + config.vm.define "master" do |master| + master.vm.hostname = "master-node" + master.vm.network "private_network", ip: IP_NW + "#{IP_START}" + master.vm.provider "virtualbox" do |vb| + vb.memory = 4048 + vb.cpus = 2 + end + master.vm.provision "shell", path: "install_k3s.sh" + master.vm.network :forwarded_port, guest: 8001, host: 8001 + master.vm.network :forwarded_port, guest: 6443, host: 6443 + for i in 30000..32767 + master.vm.network :forwarded_port, guest: i, host: i + end + end + + (1..NUM_WORKER_NODES).each do |i| + + config.vm.define "node0#{i}" do |node| + node.vm.hostname = "worker-node0#{i}" + node.vm.network "private_network", ip: IP_NW + "#{IP_START + i}" + node.vm.provider "virtualbox" do |vb| + vb.memory = 2048 + vb.cpus = 1 + end + end + + end +end + +# Configuració Global +NUM_WORKER_NODES = 2 +IP_NW = "192.0.3." +IP_MASTER = "192.0.3.10" # Fixem la IP del Master per referenciar-la als workers + +Vagrant.configure("2") do |config| + config.vm.box = "bento/ubuntu-24.04" + config.vm.box_check_update = false + + # --- Configuració del MASTER --- + config.vm.define "master" do |master| + master.vm.hostname = "master-node" + master.vm.network "private_network", ip: IP_MASTER + + master.vm.provider "virtualbox" do |vb| + vb.memory = 2048 # Amb 2GB n'hi ha prou per K3s bàsic + vb.cpus = 2 + end + + # Ports importants (API i Ingress HTTP/HTTPS) + master.vm.network :forwarded_port, guest: 6443, host: 6443, id: "k8s-api" + master.vm.network :forwarded_port, guest: 80, host: 8080, id: "ingress-http" # Accedeix a les apps via localhost:8080 + + master.vm.provision "shell", path: "k3s_master.sh" + end + + # --- Configuració dels WORKERS --- + (1..NUM_WORKER_NODES).each do |i| + config.vm.define "node0#{i}" do |node| + node.vm.hostname = "worker-node0#{i}" + node.vm.network "private_network", ip: IP_NW + "#{10 + i}" + + node.vm.provider "virtualbox" do |vb| + vb.memory = 1024 # 1GB per worker + vb.cpus = 1 + end + + node.vm.provision "shell", path: "k3s_worker.sh" + end + end +end diff --git a/k3s_master.sh b/k3s_master.sh new file mode 100644 index 0000000..afed779 --- /dev/null +++ b/k3s_master.sh @@ -0,0 +1,9 @@ + echo "🚀 Instal·lant K3s Server (Master)..." + curl -sfL https://get.k3s.io | sh -s - --node-ip #{IP_MASTER} --flannel-iface eth1 + + echo "🔑 Guardant el Token a la carpeta compartida..." + # Copiem el token a /vagrant (que és la carpeta del teu PC) perquè els workers el vegin + sudo cp /var/lib/rancher/k3s/server/node-token /vagrant/node-token + sudo chmod 644 /vagrant/node-token + + echo "✅ Master llest!" \ No newline at end of file diff --git a/k3s_worker.sh b/k3s_worker.sh new file mode 100644 index 0000000..89ace7f --- /dev/null +++ b/k3s_worker.sh @@ -0,0 +1,10 @@ + echo "⏳ Esperant que el Master generi el token..." + while [ ! -f /vagrant/node-token ]; do sleep 2; done + + K3S_TOKEN=$(cat /vagrant/node-token) + NODE_IP=$(ip addr show eth1 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1) + + echo "🚀 Instal·lant K3s Agent (Worker) connectant a #{IP_MASTER}..." + curl -sfL https://get.k3s.io | K3S_URL=https://#{IP_MASTER}:6443 K3S_TOKEN=$K3S_TOKEN sh -s - --node-ip $NODE_IP --flannel-iface eth1 + + echo "✅ Worker unit al clúster!" \ No newline at end of file