Apache Traffic Control es una plataforma de código abierto que permite construir y gestionar redes de entrega de contenido (CDN) a gran escala. Diseñada para ser altamente distribuida, escalable y redundante, satisface las necesidades de operadores de cualquier tamaño, desde startups hasta grandes proveedores de servicios.
Es una solución integral para desplegar CDNs modernas, basada en Apache Traffic Server como sistema de caché. Su arquitectura modular incluye componentes clave que permiten una gestión eficiente y automatizada del tráfico.
Empresas líderes como Comcast, Cisco, Cox y Qwilt utilizan Apache Traffic Control para distribuir más de 30 petabytes de contenido diariamente, demostrando su capacidad y confiabilidad en entornos de producción exigentes.
Antes de comenzar, asegúrate de tener instalado y configurado lo siguiente:
kubectl
con permisos adecuados.Apache Traffic Control consta de varios componentes que trabajan en conjunto. A continuación, se describen los pasos para desplegarlos:
Traffic Ops es el componente central de ATC, proporcionando una API RESTful para la configuración y gestión de la CDN.
Archivo traffic-ops-deployment.yaml
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: traffic-ops
spec:
replicas: 1
selector:
matchLabels:
app: traffic-ops
template:
metadata:
labels:
app: traffic-ops
spec:
containers:
- name: traffic-ops
image: apache/traffic_ops:latest
ports:
- containerPort: 443
env:
- name: TO_DB_SERVER
value: "traffic-ops-db"
- name: TO_DB_USER
value: "trafficops"
- name: TO_DB_PASSWORD
value: "password"
- name: TO_DB_NAME
value: "traffic_ops"
---
apiVersion: v1
kind: Service
metadata:
name: traffic-ops
spec:
selector:
app: traffic-ops
ports:
- protocol: TCP
port: 443
targetPort: 443
Aplica el archivo con:
kubectl apply -f traffic-ops-deployment.yaml
Traffic Ops requiere una base de datos PostgreSQL.
Archivo traffic-ops-db-deployment.yaml
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: traffic-ops-db
spec:
replicas: 1
selector:
matchLabels:
app: traffic-ops-db
template:
metadata:
labels:
app: traffic-ops-db
spec:
containers:
- name: traffic-ops-db
image: postgres:15
env:
- name: POSTGRES_USER
value: "trafficops"
- name: POSTGRES_PASSWORD
value: "password"
- name: POSTGRES_DB
value: "traffic_ops"
ports:
- containerPort: 5432
---
apiVersion: v1
kind: Service
metadata:
name: traffic-ops-db
spec:
selector:
app: traffic-ops-db
ports:
- protocol: TCP
port: 5432
targetPort: 5432
Aplica el archivo con:
kubectl apply -f traffic-ops-db-deployment.yaml
Traffic Portal proporciona una interfaz web para la gestión de la CDN.
Archivo traffic-portal-deployment.yaml
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: traffic-portal
spec:
replicas: 1
selector:
matchLabels:
app: traffic-portal
template:
metadata:
labels:
app: traffic-portal
spec:
containers:
- name: traffic-portal
image: apache/traffic_portal:latest
ports:
- containerPort: 443
env:
- name: TP_TO_URL
value: "https://traffic-ops"
---
apiVersion: v1
kind: Service
metadata:
name: traffic-portal
spec:
selector:
app: traffic-portal
ports:
- protocol: TCP
port: 443
targetPort: 443
Aplica el archivo con:
kubectl apply -f traffic-portal-deployment.yaml
Traffic Router dirige a los usuarios al mejor servidor de caché disponible.
Archivo traffic-router-deployment.yaml
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: traffic-router
spec:
replicas: 2
selector:
matchLabels:
app: traffic-router
template:
metadata:
labels:
app: traffic-router
spec:
containers:
- name: traffic-router
image: apache/traffic_router:latest
ports:
- containerPort: 80
- containerPort: 443
env:
- name: TR_TO_URL
value: "https://traffic-ops"
---
apiVersion: v1
kind: Service
metadata:
name: traffic-router
spec:
selector:
app: traffic-router
ports:
- protocol: TCP
port: 80
targetPort: 80
- protocol: TCP
port: 443
targetPort: 443
Aplica el archivo con:
kubectl apply -f traffic-router-deployment.yaml
Traffic Monitor supervisa la salud de los servidores de caché.
Archivo traffic-monitor-deployment.yaml
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: traffic-monitor
spec:
replicas: 1
selector:
matchLabels:
app: traffic-monitor
template:
metadata:
labels:
app: traffic-monitor
spec:
containers:
- name: traffic-monitor
image: apache/traffic_monitor:latest
ports:
- containerPort: 80
env:
- name: TM_TO_URL
value: "https://traffic-ops"
---
apiVersion: v1
kind: Service
metadata:
name: traffic-monitor
spec:
selector:
app: traffic-monitor
ports:
- protocol: TCP
port: 80
targetPort: 80
Aplica el archivo con:
kubectl apply -f traffic-monitor-deployment.yaml
Para exponer los servicios de ATC externamente, puedes utilizar un controlador Ingress. A continuación, se muestra un ejemplo utilizando NGINX Ingress Controller:
Archivo traffic-control-ingress.yaml
:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: traffic-control-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- host: traffic-control.example.com
http:
paths:
- path: /portal
pathType: Prefix
backend:
service:
name: traffic-portal
port:
number: 443
- path: /ops
pathType: Prefix
backend:
service:
name: traffic-ops
port:
number: 443
Aplica el archivo con:
kubectl apply -f traffic-control-ingress.yaml
Asegúrate de que el controlador Ingress esté instalado y configurado correctamente en tu clúster.
Verifica que todos los pods estén en estado Running
:
kubectl get pods
Accede a la interfaz web de Traffic Portal mediante el dominio configurado en el recurso Ingress (por ejemplo, https://traffic-control.example.com/portal
).
Si continúas navegando consideramos que aceptas la política del sitio. Más información X Cerrar