diff --git a/Vagrantfile b/Vagrantfile index 2f182f0..b770a35 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -1,46 +1,52 @@ -# Configuració Global -NUM_WORKER_NODES = 2 -IP_NW = "10.0.3." # Use the 10.0.3.x subnet for eth1 -IP_controlplane = "10.0.3.15" # Control plane IP for eth1 +server_ip = "192.168.33.10" + +agents = { "agent1" => "192.168.33.11", + "agent2" => "192.168.33.12", + "agent3" => "192.168.33.13" } + +server_script = <<-SHELL + apk add --no-cache curl sudo nano + export INSTALL_K3S_EXEC="--bind-address=#{server_ip} --node-external-ip=#{server_ip} --flannel-iface=eth1" + curl -sfL https://get.k3s.io | sh - + echo "Sleeping for 10 seconds to wait for k3s to start" + sleep 10 + sudo chown vagrant:vagrant /etc/rancher/k3s/k3s.yaml + cp /var/lib/rancher/k3s/server/token /vagrant_shared + cp /etc/rancher/k3s/k3s.yaml /vagrant_shared +SHELL + +agent_script = <<-SHELL + apk add --no-cache curl + export K3S_TOKEN_FILE=/vagrant_shared/token + export K3S_URL=https://#{server_ip}:6443 + export INSTALL_K3S_EXEC="--flannel-iface=eth1" + curl -sfL https://get.k3s.io | sh - +SHELL Vagrant.configure("2") do |config| - - config.vm.define "controlplane" do |controlplane| - controlplane.vm.box = "bento/ubuntu-24.04" - controlplane.vm.network "private_network", ip: IP_controlplane # eth1 IP - controlplane.vm.hostname = "controlplane" - controlplane.vm.synced_folder ".", "/home/vagrant/sync", type: "rsync" - controlplane.vm.provision :shell, :path => "k3s_control.sh" - - # Forward necessary ports - controlplane.vm.network :forwarded_port, guest: 80, host: 80 - controlplane.vm.network :forwarded_port, guest: 8080, host: 8080 - controlplane.vm.network :forwarded_port, guest: 6443, host: 6443 - controlplane.vm.network :forwarded_port, guest: 8472, host: 8472 # Flannel - controlplane.vm.network :forwarded_port, guest: 10250, host: 10250 # Kubelet - controlplane.vm.network :forwarded_port, guest: 10256, host: 10256 # Kube Proxy + config.vm.box = "generic/alpine318" - # Forward NodePort range - for i in 30000..32767 - controlplane.vm.network :forwarded_port, guest: i, host: i + config.vm.define "server", primary: true do |server| + server.vm.network "private_network", ip: server_ip + server.vm.synced_folder "./shared", "/vagrant_shared" + server.vm.hostname = "server" + server.vm.provider "virtualbox" do |vb| + vb.memory = "2048" + vb.cpus = "2" end - - controlplane.vm.provider "virtualbox" do |vb| - vb.memory = 2048 # Memoria RAM asignada - vb.cpus = 2 # Número de CPUs asignades - end + server.vm.provision "shell", inline: server_script end - # --- Configuració dels WORKERS --- - (1..NUM_WORKER_NODES).each do |i| - config.vm.define "node0#{i}" do |node| - node.vm.box = "bento/ubuntu-24.04" - node.vm.network "private_network", ip: IP_NW + "#{15 + i}" # eth1 IPs (10.0.3.16 and 10.0.3.17) - node.vm.hostname = "worker-node0#{i}" - node.vm.provider "virtualbox" do |vb| - vb.memory = 1024 # 1GB per worker - vb.cpus = 1 + agents.each do |agent_name, agent_ip| + config.vm.define agent_name do |agent| + agent.vm.network "private_network", ip: agent_ip + agent.vm.synced_folder "./shared", "/vagrant_shared" + agent.vm.hostname = agent_name + agent.vm.provider "virtualbox" do |vb| + vb.memory = "1024" + vb.cpus = "1" end + agent.vm.provision "shell", inline: agent_script end end end \ No newline at end of file diff --git a/alpine/Vagrantfile b/alpine/Vagrantfile deleted file mode 100644 index 7ab543d..0000000 --- a/alpine/Vagrantfile +++ /dev/null @@ -1,52 +0,0 @@ -server_ip = "192.168.33.10" - -agents = { "agent1" => "192.168.33.11", - "agent2" => "192.168.33.12", - "agent3" => "192.168.33.13" } - -server_script = <<-SHELL - apk add --no-cache curl sudo nano - export INSTALL_K3S_EXEC="--bind-address=#{server_ip} --node-external-ip=#{server_ip} --flannel-iface=eth1" - curl -sfL https://get.k3s.io | sh - - echo "Sleeping for 10 seconds to wait for k3s to start" - sleep 10 - sudo chown vagrant:vagrant /etc/rancher/k3s/k3s.yaml - cp /var/lib/rancher/k3s/server/token /vagrant_shared - cp /etc/rancher/k3s/k3s.yaml /vagrant_shared -SHELL - -agent_script = <<-SHELL - apk add --no-cache curl - export K3S_TOKEN_FILE=/vagrant_shared/token - export K3S_URL=https://#{server_ip}:6443 - export INSTALL_K3S_EXEC="--flannel-iface=eth1" - curl -sfL https://get.k3s.io | sh - -SHELL - -Vagrant.configure("2") do |config| - config.vm.box = "generic/alpine314" - - config.vm.define "server", primary: true do |server| - server.vm.network "private_network", ip: server_ip - server.vm.synced_folder "./shared", "/vagrant_shared" - server.vm.hostname = "server" - server.vm.provider "virtualbox" do |vb| - vb.memory = "2048" - vb.cpus = "2" - end - server.vm.provision "shell", inline: server_script - end - - agents.each do |agent_name, agent_ip| - config.vm.define agent_name do |agent| - agent.vm.network "private_network", ip: agent_ip - agent.vm.synced_folder "./shared", "/vagrant_shared" - agent.vm.hostname = agent_name - agent.vm.provider "virtualbox" do |vb| - vb.memory = "1024" - vb.cpus = "1" - end - agent.vm.provision "shell", inline: agent_script - end - end -end \ No newline at end of file diff --git a/alpine/shared/k3s.yaml b/alpine/shared/k3s.yaml deleted file mode 100644 index f951bcf..0000000 --- a/alpine/shared/k3s.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: v1 -clusters: -- cluster: - certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUzTnpFNU5UZ3pNRFV3SGhjTk1qWXdNakkwTVRnek9ESTFXaGNOTXpZd01qSXlNVGd6T0RJMQpXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUzTnpFNU5UZ3pNRFV3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFRRTlyMG9LT0g2ZkVZaWhwVTAvRVhFNWtOSkN2djZzSU4zZ3gxczhlQUgKZGYvdmQ0cXhySnNidjVLNUdYZjcvbzhhVkNRd3dyYUhvcEJUa3pCYkJLekZvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVW1YeUpJbDdsUDV3LzFscWdZc2x3CjlkbnROeGN3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQUxUdkpNQ1VyWGZDeXgzZ0wxaGhkbEo3ZG9CRkdyK3EKSDJ6NWxkUmRNTDVFQWlCSjJDd1QxZWFRV1F4aUVabWVUekdTYW4yVFZjSDJocGpGYk5RY3VjZEFZdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K - server: https://192.168.33.10:6443 - name: default -contexts: -- context: - cluster: default - user: default - name: default -current-context: default -kind: Config -users: -- name: default - user: - client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJrVENDQVRlZ0F3SUJBZ0lJTmhUM3NNV0xaSEF3Q2dZSUtvWkl6ajBFQXdJd0l6RWhNQjhHQTFVRUF3d1kKYXpOekxXTnNhV1Z1ZEMxallVQXhOemN4T1RVNE16QTBNQjRYRFRJMk1ESXlOREU0TXpneU5Gb1hEVEkzTURJeQpOREU0TXpneU5Gb3dNREVYTUJVR0ExVUVDaE1PYzNsemRHVnRPbTFoYzNSbGNuTXhGVEFUQmdOVkJBTVRESE41CmMzUmxiVHBoWkcxcGJqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJOdTlrWEF5VnFoYzRhenoKa2RodW8rUTlrc2J3eUNwRmM4cDY2UFhRZmhPTVVuMzNRUEZ3YTZVSDZBQWZRUkdiRFBtZk1nd2RwemxBV2kwUwpNUjZ1QVA2alNEQkdNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVRCZ05WSFNVRUREQUtCZ2dyQmdFRkJRY0RBakFmCkJnTlZIU01FR0RBV2dCUk5PZFR1TVBlZzVWWXdtYkFwZ2dlRU9FVndJekFLQmdncWhrak9QUVFEQWdOSUFEQkYKQWlBTUVDMG8yazZhQ3ZXZG0wZ1dkYjBJNTJ2T3h1V0JhQ09RZ3FOMVJBK2RqUUloQU5GR2VMM0VkVU5KTFk2WQp5NG5ZM3c1VGFJcytsSUk2bVZpTWtFNSs5a3BiCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdFkyeHAKWlc1MExXTmhRREUzTnpFNU5UZ3pNRFF3SGhjTk1qWXdNakkwTVRnek9ESTBXaGNOTXpZd01qSXlNVGd6T0RJMApXakFqTVNFd0h3WURWUVFEREJock0zTXRZMnhwWlc1MExXTmhRREUzTnpFNU5UZ3pNRFF3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFUNzcrelF0NDBSQ2duZU14eFBLV2t5dWZleStyTE9tNjhiNkZwN2ExOEEKeEd6aGpRTTNjK0VGRnpWVWV2dmZGbUMxRWpBU1psRVV2OEsxOTJOTGdqeXpvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVVRUblU3akQzb09WV01KbXdLWUlICmhEaEZjQ013Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQU9jUERBNW11NXNJbHZ4cDIrcUJmRDlxaGhlVHozeUYKaUFQbHY5OEVzbUlLQWlCM0JEbWVqTXd2UExXQWZ5bDBoZ0NSeC8vTnUxTmk1aVNvb0lhTnF4MUszUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K - client-key-data: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSU1DT04wN3Jrb1lxNFlKc3JGem0yMHdOakZ1RnZ4QzZmSTcyUkVaS05peTBvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFMjcyUmNESldxRnpoclBPUjJHNmo1RDJTeHZESUtrVnp5bnJvOWRCK0U0eFNmZmRBOFhCcgpwUWZvQUI5QkVac00rWjh5REIybk9VQmFMUkl4SHE0QS9nPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo= diff --git a/alpine/shared/token b/alpine/shared/token deleted file mode 100644 index 98e23d5..0000000 --- a/alpine/shared/token +++ /dev/null @@ -1 +0,0 @@ -K106349e1274bcf1422b73b226859adefe8a1e978dd5f43cf9422c4b77c2f336c82::server:741f508710413e9ee1d6b2fe7dc57421 diff --git a/alpine/shared/.gitkeep b/shared/.gitkeep similarity index 100% rename from alpine/shared/.gitkeep rename to shared/.gitkeep diff --git a/shared/k3s.yaml b/shared/k3s.yaml new file mode 100644 index 0000000..c80ff95 --- /dev/null +++ b/shared/k3s.yaml @@ -0,0 +1,18 @@ +apiVersion: v1 +clusters: +- cluster: + certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJlRENDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUzTnpFNU5UazJNelF3SGhjTk1qWXdNakkwTVRrd01ETTBXaGNOTXpZd01qSXlNVGt3TURNMApXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUzTnpFNU5UazJNelF3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFSbWd1VGNpeDU5a1k4Mk12LzVGU1NYc2FZVzFqSVlzdmtjZWN3OUJxSU8KNHc4dEFlRk1oV1FxN1VCdDhoSU8rRUp0WUlnYWxTUWs5WVdKM3pIRmEzY0lvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVVcrcUtQeExoam1jVkFFWGFoY0N4CnNhMkhMZ013Q2dZSUtvWkl6ajBFQXdJRFNRQXdSZ0loQU9HWUtyR25zd1ZHVHBaTm5qaE5GUnNYK2t2azdUVEIKU3FYblYvRWdXd3VGQWlFQXZMY1Byb2Mwd2h0Znk4OStRWEl4cWRQM0Z1ZWN4M096TG9weTVwYm5wMlE9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K + server: https://192.168.33.10:6443 + name: default +contexts: +- context: + cluster: default + user: default + name: default +current-context: default +kind: Config +users: +- name: default + user: + client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJrRENDQVRlZ0F3SUJBZ0lJVlE4VWpFc3dFRzR3Q2dZSUtvWkl6ajBFQXdJd0l6RWhNQjhHQTFVRUF3d1kKYXpOekxXTnNhV1Z1ZEMxallVQXhOemN4T1RVNU5qTTBNQjRYRFRJMk1ESXlOREU1TURBek5Gb1hEVEkzTURJeQpOREU1TURBek5Gb3dNREVYTUJVR0ExVUVDaE1PYzNsemRHVnRPbTFoYzNSbGNuTXhGVEFUQmdOVkJBTVRESE41CmMzUmxiVHBoWkcxcGJqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJPUm11NW5TZEZsMjd0REQKVHZidUlpVGJpR09kaGVpU0FGY2lnWkNESnZFWjRTbzg3djhiV0x5c1kwYnRPMFVpaHllRTdVaG53MWw4L3k5agp4dzJCK2tHalNEQkdNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVRCZ05WSFNVRUREQUtCZ2dyQmdFRkJRY0RBakFmCkJnTlZIU01FR0RBV2dCUUptTGRPbGcwTWo0L1JxRW1SRDMvK21OT1pyVEFLQmdncWhrak9QUVFEQWdOSEFEQkUKQWlCWWZmbDZoYm1TTWlRckJEUHRzckN0ZWRoNm0zaTJucTkzYy8rUElFaldkQUlnZUZiOXNZZEdzYWo1bDVzQQpDY09VU0ZRc1cvUVVBdjBFN3RWbENLTXZaODg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkakNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdFkyeHAKWlc1MExXTmhRREUzTnpFNU5UazJNelF3SGhjTk1qWXdNakkwTVRrd01ETTBXaGNOTXpZd01qSXlNVGt3TURNMApXakFqTVNFd0h3WURWUVFEREJock0zTXRZMnhwWlc1MExXTmhRREUzTnpFNU5UazJNelF3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFUNmdlY25sYzYxN3pwSW0zWUFsNTdJZ3VZbExGcU53KzVLNkhHbGVqSVcKUXdKRWtUajdyaDAwQitRcmNTZFJ5WFJDUi9FRk5sOGdhTGhDaVluK285ZFhvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVUNaaTNUcFlOREkrUDBhaEprUTkvCi9walRtYTB3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnTXFPZ0JBcjl2aEx6QWErVDRJWHh6U1VVT1F0b2FXaWYKV3VXOTlUTkthdk1DSUZMQUl6blQwQXFEdTNxUXVVVWhxc1FlNU1yQUpoUHpqaU5WaHd0M3NKbkMKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo= + client-key-data: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSURncWIzd3pGMkFuY3M3UW5YTGpTcUppd3lZcm9DQzg0bk1LVnQ3MDQwSUJvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFNUdhN21kSjBXWGJ1ME1OTzl1NGlKTnVJWTUyRjZKSUFWeUtCa0lNbThSbmhLanp1L3h0WQp2S3hqUnUwN1JTS0hKNFR0U0dmRFdYei9MMlBIRFlINlFRPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo= diff --git a/shared/token b/shared/token new file mode 100644 index 0000000..c68e2fb --- /dev/null +++ b/shared/token @@ -0,0 +1 @@ +K104df2ab6b6b17d704be68af2b1519a760609b1bde4fad270bcb90ee1f93f036df::server:732912b8e33f50d7dac6222189df941e diff --git a/ubuntu/Vagrantfile b/ubuntu/Vagrantfile new file mode 100644 index 0000000..2f182f0 --- /dev/null +++ b/ubuntu/Vagrantfile @@ -0,0 +1,46 @@ +# Configuració Global +NUM_WORKER_NODES = 2 +IP_NW = "10.0.3." # Use the 10.0.3.x subnet for eth1 +IP_controlplane = "10.0.3.15" # Control plane IP for eth1 + +Vagrant.configure("2") do |config| + + config.vm.define "controlplane" do |controlplane| + controlplane.vm.box = "bento/ubuntu-24.04" + controlplane.vm.network "private_network", ip: IP_controlplane # eth1 IP + controlplane.vm.hostname = "controlplane" + controlplane.vm.synced_folder ".", "/home/vagrant/sync", type: "rsync" + controlplane.vm.provision :shell, :path => "k3s_control.sh" + + # Forward necessary ports + controlplane.vm.network :forwarded_port, guest: 80, host: 80 + controlplane.vm.network :forwarded_port, guest: 8080, host: 8080 + controlplane.vm.network :forwarded_port, guest: 6443, host: 6443 + controlplane.vm.network :forwarded_port, guest: 8472, host: 8472 # Flannel + controlplane.vm.network :forwarded_port, guest: 10250, host: 10250 # Kubelet + controlplane.vm.network :forwarded_port, guest: 10256, host: 10256 # Kube Proxy + + # Forward NodePort range + for i in 30000..32767 + controlplane.vm.network :forwarded_port, guest: i, host: i + end + + controlplane.vm.provider "virtualbox" do |vb| + vb.memory = 2048 # Memoria RAM asignada + vb.cpus = 2 # Número de CPUs asignades + end + end + + # --- Configuració dels WORKERS --- + (1..NUM_WORKER_NODES).each do |i| + config.vm.define "node0#{i}" do |node| + node.vm.box = "bento/ubuntu-24.04" + node.vm.network "private_network", ip: IP_NW + "#{15 + i}" # eth1 IPs (10.0.3.16 and 10.0.3.17) + node.vm.hostname = "worker-node0#{i}" + node.vm.provider "virtualbox" do |vb| + vb.memory = 1024 # 1GB per worker + vb.cpus = 1 + end + end + end +end \ No newline at end of file diff --git a/k3s_control.sh b/ubuntu/k3s_control.sh similarity index 100% rename from k3s_control.sh rename to ubuntu/k3s_control.sh diff --git a/k3s_worker.sh b/ubuntu/k3s_worker.sh similarity index 100% rename from k3s_worker.sh rename to ubuntu/k3s_worker.sh diff --git a/libvirtVagrantfile b/ubuntu/libvirtVagrantfile similarity index 100% rename from libvirtVagrantfile rename to ubuntu/libvirtVagrantfile