From 7496f19df20306f791dddec007357ed54133f8b9 Mon Sep 17 00:00:00 2001 From: xguefer Date: Wed, 30 Jul 2025 00:20:54 +0200 Subject: [PATCH] actualizado metallb con ejemplos --- redes_internet.md | 69 ++++++++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 30 deletions(-) diff --git a/redes_internet.md b/redes_internet.md index d06a633..1883859 100644 --- a/redes_internet.md +++ b/redes_internet.md @@ -115,13 +115,13 @@ MetalLB permite asignar IPs flotantes de tu red LAN a servicios `LoadBalancer`, kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.5/config/manifests/metallb-native.yaml ``` -Esto crea el namespace `metallb-system` y los pods necesarios. +Esto crea el namespace `metallb-system` y despliega los pods necesarios. --- -## b) Declara múltiples pools de IP +## b) Define un pool con múltiples rangos -Puedes crear varios pools (por ejemplo, uno para producción y otro para test, o para diferentes VLANs/segmentos). Los pools se definen en el objeto `IPAddressPool`. +En lugar de crear múltiples `IPAddressPool` por separado, puedes declarar varios rangos de IP en un **solo** `IPAddressPool`. Esto simplifica la gestión. **Ejemplo: `metallb/ipaddresspool.yaml`** @@ -129,20 +129,12 @@ Puedes crear varios pools (por ejemplo, uno para producción y otro para test, o apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: - name: pool-produccion + name: pool-general namespace: metallb-system spec: addresses: - - 192.168.1.100-192.168.1.110 ---- -apiVersion: metallb.io/v1beta1 -kind: IPAddressPool -metadata: - name: pool-lab - namespace: metallb-system -spec: - addresses: - - 192.168.2.100-192.168.2.110 + - 192.168.1.100-192.168.1.110 # Rango 1: producción + - 192.168.2.100-192.168.2.110 # Rango 2: laboratorio ``` **Ejemplo: `metallb/l2advertisement.yaml`** @@ -151,7 +143,7 @@ spec: apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: - name: advert-all + name: advert-general namespace: metallb-system spec: {} ``` @@ -172,46 +164,63 @@ kubectl apply -k metallb/ --- -## c) Asigna un pool concreto a un Service (anotaciones) +## c) Asignar una IP concreta al Service (`loadBalancerIP`) -Por defecto, los Services `LoadBalancer` usan cualquier pool disponible. Para forzar el uso de un pool específico, **añade esta anotación al Service**: +Puedes indicar directamente la IP deseada usando el campo `loadBalancerIP`, y MetalLB la asignará si pertenece a uno de los rangos definidos. + +### ✅ Ejemplo 1: Asignación explícita con `loadBalancerIP` ```yaml apiVersion: v1 kind: Service metadata: - name: ejemplo-prod - annotations: - metallb.universe.tf/address-pool: pool-produccion + name: nginx-prod spec: selector: - app: ejemplo + app: nginx ports: - port: 80 targetPort: 80 type: LoadBalancer + loadBalancerIP: 192.168.1.105 # IP concreta del pool ``` -* Cambia `pool-produccion` por el nombre de pool que quieras usar. +No es necesario usar anotaciones si la IP está incluida en el `IPAddressPool`. -Al crear el Service, MetalLB le asignará una IP **solo de ese pool**. +### ✅ Ejemplo 2: Sin IP explícita (MetalLB elige una disponible) + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: nginx-lab +spec: + selector: + app: nginx + ports: + - port: 8080 + targetPort: 80 + type: LoadBalancer +``` + +MetalLB seleccionará automáticamente una IP libre de **cualquier** rango declarado en el pool. --- -## d) Comprobar el resultado +## d) Verificar los resultados ```bash kubectl get svc ``` -Verás la IP asignada en la columna `EXTERNAL-IP`. +Verás la IP externa asignada en la columna `EXTERNAL-IP`. --- -> **Notas:** -> -> * Puedes definir tantos pools como necesites, uno por segmento/VLAN/uso. -> * Puedes versionar los manifiestos de MetalLB en una carpeta específica del repositorio (`metallb/`). +## 📜 Notas importantes ---- +- Puedes declarar varios rangos en un solo `IPAddressPool`. +- No necesitas anotaciones para indicar qué pool usar si especificas directamente una IP con `loadBalancerIP`. +- Es buena práctica versionar todos los manifiestos en una carpeta `metallb/` dentro de tu repo Git. +- El uso de múltiples pools por separado sigue siendo válido, pero es innecesario si no quieres asignar pools por nombre con anotaciones.