Practica final

This commit is contained in:
Guillem Hernandez Sola
2026-06-26 07:36:10 +02:00
parent b15f1b239d
commit c28b14bc37
19 changed files with 249 additions and 107 deletions

88
boxes/debian/README.md Normal file
View File

@@ -0,0 +1,88 @@
# Debian Vagrant — Descripció i ús
Aquest directori inclou una infraestructura Vagrant per muntar màquines Debian que suporten un petit clúster k3s d'estudi.
Contingut
- `Vagrantfile` — Fitxer principal per crear les màquines virtuals (controlador i agents).
- `.vagrant/` — Estat local de Vagrant (no versionar).
- `shared/` — Conté fitxers compartits entre host i les VM:
- `k3s.yaml` — Fitxer kubeconfig generat pel clúster k3s dins les VM.
- `token` — Token d'unió per a workers (k3s join token).
Prerequisits
- Instal·lar `Vagrant` i un provider (ex. VirtualBox). Si fas servir `libvirt` o un altre provider, configura'l prèviament.
- Xarxa i permisos per crear màquines virtuals.
Com arrencar el lab
1. Situa't a la carpeta `debian`:
```bash
cd debian
```
2. Inicia totes les màquines:
```bash
vagrant up
```
3. Opcional — iniciar només una màquina concreta (ex.: `server`):
```bash
vagrant up server
```
Accedir al kubeconfig
- Un cop el clúster està operatiu, trobaràs el `kubeconfig` generat a `shared/k3s.yaml`. Per usar-lo localment, pots fer:
```bash
export KUBECONFIG=$PWD/shared/k3s.yaml
kubectl get nodes
```
o copiar-lo al teu fitxer de kubeconfig:
```bash
cp shared/k3s.yaml ~/.kube/config
```
Ús del token
- El fitxer `shared/token` conté normalment el token per unir workers al clúster. No el comparteixis públicament.
Neteja i aturada
- Aturar màquines:
```bash
vagrant halt
```
- Destruir màquines i alliberar recursos:
```bash
vagrant destroy -f
```
Consells i consideracions
- No versionis la carpeta `.vagrant` ni fitxers sensibles (secrets, tokens) al repositori.
- Si utilitzes un provider diferent de VirtualBox (ex. libvirt), assegura't d'haver instal·lat i configurat el plugin de Vagrant corresponent.
- Si el `kubeconfig` mostra nodes en estat NotReady, comprova que les VM tenen connectivitat i que k3s està en execució (`vagrant ssh server` i `sudo systemctl status k3s`).
Vols que:
- faci un `git commit` d'aquest `README.md`?
- o que generi instruccions més detallades per personalitzar la topologia (nombre d'agents, recursos, etc.)?
# Suport
Aquest tutorial és publicat al domini públic per [Agile611](http://www.agile611.com/) sota la llicència 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/)
Aquest fitxer README va ser escrit originalment per [Guillem Hernández Sola](https://www.linkedin.com/in/guillemhs/) i també és publicat al domini públic.
Si us plau, contacta amb Agile611 per a més detalls.
* [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/)

53
boxes/debian/Vagrantfile vendored Normal file
View File

@@ -0,0 +1,53 @@
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
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
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
cp /var/lib/rancher/k3s/server/token /vagrant_shared
cp /etc/rancher/k3s/k3s.yaml /vagrant_shared
sleep 10
kubectl taint nodes server node-role.kubernetes.io/master=true:NoSchedule
SHELL
agent_script = <<-SHELL
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 = "bento/debian-13"
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

View File

View File

@@ -0,0 +1,18 @@
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJlRENDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUzTnpJeE1EWTVOVGt3SGhjTk1qWXdNakkyTVRFMU5UVTVXaGNOTXpZd01qSTBNVEUxTlRVNQpXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUzTnpJeE1EWTVOVGt3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFTa0VpUnNYUTF5VGU2Tk1ZRnZZM0xuKzdUQldBZzFUNEo3R25lZzc2Wi8KUGtrQ1pqZzc0VEZrMlpuYjJGYTV2cjJDRGltcGxvNCtlUmU1OTZydHRFU2hvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVTBZbGV4cC9wbmREZzYzc1hKRXIwCi8wKzJzVjB3Q2dZSUtvWkl6ajBFQXdJRFNRQXdSZ0loQVBseFpTd2QrRFN3L3VKMmhqTWpHTVRwZGhDbVVONUYKeEQwT1k3SllNTmNZQWlFQXNuNE9NVExSSkNxQzVweFNUVDFTQzJoQklLa1RjYVp3VmtCMHZEWWc3dFk9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
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: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJrVENDQVRlZ0F3SUJBZ0lJUm1pMm81RnNpVmN3Q2dZSUtvWkl6ajBFQXdJd0l6RWhNQjhHQTFVRUF3d1kKYXpOekxXTnNhV1Z1ZEMxallVQXhOemN5TVRBMk9UVTVNQjRYRFRJMk1ESXlOakV4TlRVMU9Wb1hEVEkzTURJeQpOakV4TlRVMU9Wb3dNREVYTUJVR0ExVUVDaE1PYzNsemRHVnRPbTFoYzNSbGNuTXhGVEFUQmdOVkJBTVRESE41CmMzUmxiVHBoWkcxcGJqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJCZktxK2ZTOG5vR01XV0kKdnFTd2hBSkdMeUdlSXlOajc2UzE5b2l6Ym5NT21lV0dTWUxvdVcrTER5cFhYSjNQVWl1djdCU1gzUHZEcTFGYgpQbUZsM25LalNEQkdNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVRCZ05WSFNVRUREQUtCZ2dyQmdFRkJRY0RBakFmCkJnTlZIU01FR0RBV2dCU2ZINjB0Z2FRZGpFRW1hTkdUaWVlT21QZjNFREFLQmdncWhrak9QUVFEQWdOSUFEQkYKQWlFQStGNlR5Vk1DbVJSdmExOVM2ZEszSkNXUy9Rek1UNDBteDUyN01GU0s1QklDSUVrVGdOeEFoMmRjdGY3QgprV09QQ1FZY3JCejIzNGZZN0w0T3NSbHhuSlVRCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkakNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdFkyeHAKWlc1MExXTmhRREUzTnpJeE1EWTVOVGt3SGhjTk1qWXdNakkyTVRFMU5UVTVXaGNOTXpZd01qSTBNVEUxTlRVNQpXakFqTVNFd0h3WURWUVFEREJock0zTXRZMnhwWlc1MExXTmhRREUzTnpJeE1EWTVOVGt3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFRL0kxcEZXTFZ2d0F0N2ppYlVnZmt5QXZhdE92UmpKRHJ6SzkvajJkT1cKQkpPS2U3NGtBbzVSbi9vb0lCM1AvYUh0U3FHY1BUVUhReTNnWG1HeExYaG1vMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVW54K3RMWUdrSFl4QkptalJrNG5uCmpwajM5eEF3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnRGMzSmJHMFpsN1I0eUhObjlmNlBWRDBOR0Z1UVo5NjEKZksxZllJVURNQjhDSUc4bEIvODRYa3lINjFpcjdVS0ZyN0dnR095MnNHTE1NdU9MSmZiRWQ3MzAKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
client-key-data: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUxnRzlEd21neFg0Q0pLSDNRUXlsZkp2b01TS0kxYTN6YzRSUEdYUHBPQmxvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFRjhxcjU5THllZ1l4WllpK3BMQ0VBa1l2SVo0akkyUHZwTFgyaUxOdWN3Nlo1WVpKZ3VpNQpiNHNQS2xkY25jOVNLNi9zRkpmYys4T3JVVnMrWVdYZWNnPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo=

View File

@@ -0,0 +1 @@
K10f81f3b04b499101f26c80ff7a104605967fd6b9eee3cbd3677e4bc8b3d2a00d4::server:bd6aec9d68aadcf32bd806048147e267