Lab 8.2 - Enrutamiento basado en rutas
Objetivos del Lab
Al final de este laboratorio, usted será capaz de:
- Configurar el enrutamiento basado en rutas (path-based).
- Enrutar el tráfico hacia diferentes aplicaciones según la ruta.
- Comprender los diferentes pathTypes.
- Probar el enrutamiento con varias rutas.
Duración Estimada
45-60 minutos
Requisitos Previos
- kubectl instalado y configurado.
- Cluster Kubernetes local funcional con Ingress Controller.
- Conocimientos sobre Ingress (Lab 8.1).
Parte 1: Despliegue de Múltiples Aplicaciones
Vamos a desplegar dos aplicaciones diferentes para probar el enrutamiento basado en rutas.
Paso 1.1: Desplegar la Aplicación Frontend
Cree frontend-deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend
spec:
replicas: 2
selector:
matchLabels:
app: frontend
template:
metadata:
labels:
app: frontend
spec:
containers:
- name: nginx
image: nginx:1.20
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: frontend-service
spec:
selector:
app: frontend
ports:
- port: 80
targetPort: 80
Paso 1.2: Desplegar la Aplicación Backend
Cree backend-deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend
spec:
replicas: 2
selector:
matchLabels:
app: backend
template:
metadata:
labels:
app: backend
spec:
containers:
- name: httpd
image: httpd:2.4
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: backend-service
spec:
selector:
app: backend
ports:
- port: 80
targetPort: 80
Aplique los despliegues:
kubectl apply -f frontend-deployment.yaml
kubectl apply -f backend-deployment.yaml
Parte 2: Configuración de Ingress con Enrutamiento basado en rutas
Paso 2.1: Crear el Ingress con Múltiples Rutas
Cree ingress-path-based.yaml:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-based-ingress
spec:
ingressClassName: nginx
rules:
- host: app.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: frontend-service
port:
number: 80
- path: /api
pathType: Prefix
backend:
service:
name: backend-service
port:
number: 80
- path: /backend
pathType: Prefix
backend:
service:
name: backend-service
port:
number: 80
Explicación:
/: Ruta hacia el frontend (página principal)./api: Ruta hacia el backend./backend: Ruta alternativa hacia el backend.
Aplique el Ingress:
kubectl apply -f ingress-path-based.yaml
Parte 3: Personalización de las Aplicaciones para la Prueba
Para visualizar mejor el enrutamiento, personalicemos las respuestas de las aplicaciones.
Paso 3.1: Personalizar el Frontend
Cree un ConfigMap para el frontend:
apiVersion: v1
kind: ConfigMap
metadata:
name: frontend-config
data:
index.html: |
<!DOCTYPE html>
<html>
<head><title>Frontend Application</title></head>
<body>
<h1>Frontend Application</h1>
<p>Usted está en la página principal (/)</p>
<p><a href="/api">Acceder a la API</a></p>
</body>
</html>
Aplique y monte el ConfigMap en el frontend (modifique el Deployment si es necesario).
Paso 3.2: Personalizar el Backend
Cree un ConfigMap para el backend:
apiVersion: v1
kind: ConfigMap
metadata:
name: backend-config
data:
index.html: |
<!DOCTYPE html>
<html>
<head><title>Backend API</title></head>
<body>
<h1>Backend API</h1>
<p>Usted está en la API (/api o /backend)</p>
<p>Este es el servicio backend</p>
</body>
</html>
Parte 4: Prueba del Enrutamiento
Paso 4.1: Configurar el Hostname
Agregue app.local a su archivo /etc/hosts (o equivalente en Windows) apuntando a la IP del Ingress Controller.
Paso 4.2: Probar las Diferentes Rutas
Pruebe el enrutamiento:
# Página principal (debería ir al frontend)
curl http://app.local/
# API (debería ir al backend)
curl http://app.local/api
# Backend alternativo (debería ir al backend)
curl http://app.local/backend
Debería ver diferentes respuestas según la ruta.
Parte 5: Comprender los pathTypes
Los pathType determinan cómo se comparan las rutas:
- Exact: Coincidencia exacta de la ruta.
- Prefix: Coincidencia por prefijo (la más común).
- ImplementationSpecific: Depende de la implementación del Ingress Controller.
Ejemplo con Exact
- path: /api/v1
pathType: Exact
backend:
service:
name: api-v1-service
port:
number: 80
Parte 6: Limpieza
Elimine los recursos:
kubectl delete ingress path-based-ingress
kubectl delete -f frontend-deployment.yaml
kubectl delete -f backend-deployment.yaml
kubectl delete configmap frontend-config backend-config
Resumen del Lab
En este laboratorio, usted ha configurado el enrutamiento basado en rutas con Ingress. Ha aprendido a enrutar el tráfico hacia diferentes aplicaciones según la ruta de la URL, a utilizar diferentes pathTypes y a probar el enrutamiento.
Próximos Pasos
El próximo laboratorio le mostrará cómo configurar TLS/SSL con cert-manager para asegurar las comunicaciones HTTPS.
Lab 8.3: TLS/SSL con Cert-Manager
Lab creado el: diciembre 2024