Cuestionario de AWS Load Balancer Controller
Este cuestionario evalúa tu comprensión de la arquitectura de AWS Load Balancer Controller, la configuración de ALB/NLB y las operaciones.
Preguntas del cuestionario
1. ¿Qué componente existente de Kubernetes reemplaza AWS Load Balancer Controller?
A. kube-proxy B. in-tree AWS cloud provider C. CoreDNS D. CNI plugin
Mostrar respuesta
Respuesta: B. in-tree AWS cloud provider
Explicación: AWS Load Balancer Controller reemplaza la funcionalidad de load balancer del in-tree AWS cloud provider existente de Kubernetes:
- Más funcionalidades (configuración avanzada de ALB, NLB)
- Actualizaciones y correcciones de errores más rápidas
- Mejor integración con servicios de AWS
El in-tree provider solo admitía ELB Classic básico, mientras que AWS Load Balancer Controller admite todas las funcionalidades de ALB y NLB.
2. ¿Cuál es la diferencia correcta entre las anotaciones de target type ip e instance en ALB Ingress?
A. ip apunta directamente a la IP del Pod, instance enruta a través de NodePort B. ip enruta a través de NodePort, instance apunta directamente a la IP del Pod C. Ambas opciones se comportan de la misma manera D. ip admite solo IPv4, instance admite solo IPv6
Mostrar respuesta
Respuesta: A. ip apunta directamente a la IP del Pod, instance enruta a través de NodePort
Explicación: Comparación de Target Type:
| Target Type | Comportamiento | Ventajas | Desventajas |
|---|---|---|---|
ip | Registra directamente la IP del Pod | Baja latencia, eficiente | Requiere VPC CNI |
instance | Enruta al NodePort del Node | Universal | Salto adicional |
Al usar el tipo ip, se requiere AWS VPC CNI y las IP de los Pods se registran directamente en el Target Group.
3. ¿Por qué se requiere IRSA (IAM Roles for Service Accounts) para AWS Load Balancer Controller?
A. Para la comunicación de Pod a Pod B. Para que el controller llame a las API de AWS para crear/administrar recursos C. Para la autenticación del API server de Kubernetes D. Para la administración de certificados TLS
Mostrar respuesta
Respuesta: B. Para que el controller llame a las API de AWS para crear/administrar recursos
Explicación: AWS Load Balancer Controller necesita llamar a las API de AWS para:
- Crear y administrar ALB/NLB
- Crear Target Groups y registrar targets
- Configurar Listeners y reglas
- Administrar security groups
- Consultar certificados ACM
Con IRSA vinculando IAM Role a Service Account:
- Los Pods pueden autenticarse en la API de AWS
- Se aplica el principio de mínimo privilegio
- Se conceden permisos a Pods específicos, no a Nodes completos
4. ¿Cómo se consolidan varios recursos de Ingress en un único ALB?
A. Desplegarlos en el mismo namespace B. Usar la anotación alb.ingress.kubernetes.io/group.name C. Usar el mismo IngressClass D. ALB siempre admite solo un Ingress
Mostrar respuesta
Respuesta: B. Usar la anotación alb.ingress.kubernetes.io/group.name
Explicación: Funcionalidad de Ingress Group:
# Ingress 1
metadata:
annotations:
alb.ingress.kubernetes.io/group.name: my-app-group
alb.ingress.kubernetes.io/group.order: "1"
---
# Ingress 2
metadata:
annotations:
alb.ingress.kubernetes.io/group.name: my-app-group
alb.ingress.kubernetes.io/group.order: "2"Beneficios:
- Ahorro de costos de ALB (varios servicios comparten un ALB)
- Administración centralizada
- Control de prioridad de reglas mediante la especificación de orden
5. ¿Cuál es la anotación para implementar TLS termination en un Service NLB?
A. service.beta.kubernetes.io/aws-load-balancer-ssl-cert B. alb.ingress.kubernetes.io/certificate-arn C. service.beta.kubernetes.io/aws-load-balancer-tls-termination D. nlb.kubernetes.io/ssl-certificate
Mostrar respuesta
Respuesta: A. service.beta.kubernetes.io/aws-load-balancer-ssl-cert
Explicación: Configuración de TLS termination de NLB:
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: "external"
service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "ip"
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:acm:..."
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "443"
spec:
type: LoadBalancer
ports:
- port: 443
targetPort: 8080alb.ingress.kubernetes.io/certificate-arn es la anotación para ALB Ingress.
6. ¿Cuál es el propósito principal del CRD TargetGroupBinding?
A. Crear automáticamente nuevos Target Groups B. Conectar Target Groups de AWS existentes con Services de Kubernetes C. Definir reglas de ALB Listener D. Crear automáticamente security groups
Mostrar respuesta
Respuesta: B. Conectar Target Groups de AWS existentes con Services de Kubernetes
Explicación: Casos de uso de TargetGroupBinding:
- Migración de infraestructura existente - Aprovechar Target Groups existentes
- Uso compartido entre varios clusters - Usar un ALB/NLB en varios clusters
- Cuando se necesita la administración directa de Target Groups
apiVersion: elbv2.k8s.aws/v1beta1
kind: TargetGroupBinding
metadata:
name: my-tgb
spec:
targetGroupARN: arn:aws:elasticloadbalancing:...
serviceRef:
name: my-service
port: 80
targetType: ip7. ¿Cuál es la anotación para integrar WAF v2 con ALB Ingress?
A. alb.ingress.kubernetes.io/waf-acl-id B. alb.ingress.kubernetes.io/wafv2-acl-arn C. alb.ingress.kubernetes.io/web-acl D. alb.ingress.kubernetes.io/firewall-rules
Mostrar respuesta
Respuesta: B. alb.ingress.kubernetes.io/wafv2-acl-arn
Explicación: Integración de AWS WAF v2:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/wafv2-acl-arn: arn:aws:wafv2:us-east-1:ACCOUNT:regional/webacl/my-acl/xxxFuncionalidades de WAF v2:
- Protección contra inyección SQL y XSS
- Limitación de tasa
- Bloqueo/autorización según IP
- Reglas personalizadas
Se requiere la configuración enableWafv2: true al instalar el controller.
8. ¿Cuáles son las etiquetas para el descubrimiento automático de subnet en AWS Load Balancer Controller?
A. kubernetes.io/cluster/<cluster-name>=owned B. kubernetes.io/role/elb=1 (pública), kubernetes.io/role/internal-elb=1 (privada) C. aws:cloudformation:stack-name D. Name=kubernetes-subnet
Mostrar respuesta
Respuesta: B. kubernetes.io/role/elb=1 (pública), kubernetes.io/role/internal-elb=1 (privada)
Explicación: Reglas de etiquetado de subnet:
# Public subnets (for internet-facing ALB/NLB)
kubernetes.io/role/elb=1
# Private subnets (for internal ALB/NLB)
kubernetes.io/role/internal-elb=1
# Cluster ownership (optional)
kubernetes.io/cluster/<cluster-name>=shared or ownedSin estas etiquetas, el controller podría no encontrar las subnets adecuadas y la creación del load balancer fallará.
9. ¿Cuál es la anotación para habilitar Sticky Sessions en ALB Ingress?
A. alb.ingress.kubernetes.io/sticky-sessions=true B. alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true C. alb.ingress.kubernetes.io/session-affinity=cookie D. alb.ingress.kubernetes.io/cookie-based-routing=true
Mostrar respuesta
Respuesta: B. alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true
Explicación: Configuración de Sticky Session:
metadata:
annotations:
alb.ingress.kubernetes.io/target-group-attributes: >-
stickiness.enabled=true,
stickiness.lb_cookie.duration_seconds=3600Se configura como atributos de Target Group:
stickiness.enabled=true- Habilitarstickiness.lb_cookie.duration_seconds- Duración de validez de la cookiestickiness.type- lb_cookie o app_cookie
Las Sticky Sessions son útiles para aplicaciones heredadas que necesitan mantener el estado de la sesión.
10. ¿Cómo se conserva la IP de origen del cliente en NLB?
A. Usar service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*" B. Usar externalTrafficPolicy: Local C. Ambos métodos son posibles D. NLB siempre conserva la IP del cliente
Mostrar respuesta
Respuesta: C. Ambos métodos son posibles
Explicación: Métodos para conservar la IP del cliente:
- Proxy Protocol v2:
annotations:
service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*"
service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: proxy_protocol_v2.enabled=true- La aplicación debe admitir Proxy Protocol
- externalTrafficPolicy: Local:
spec:
externalTrafficPolicy: Local- Enruta solo a Pods en el mismo Node sin saltos adicionales
- Es posible una distribución desigual del tráfico
- IP Target Type (modo ip):
annotations:
service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: preserve_client_ip.enabled=true11. ¿Cuál es la anotación para redirigir HTTP a HTTPS en ALB Ingress?
A. alb.ingress.kubernetes.io/actions.ssl-redirect B. alb.ingress.kubernetes.io/ssl-redirect: "443" C. alb.ingress.kubernetes.io/force-ssl-redirect: "true" D. alb.ingress.kubernetes.io/http-to-https: "true"
Mostrar respuesta
Respuesta: B. alb.ingress.kubernetes.io/ssl-redirect: "443"
Explicación: Configuración de redirección SSL:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
alb.ingress.kubernetes.io/ssl-redirect: "443"
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:...Comportamiento:
- Redirige con 301 las solicitudes que llegan a HTTP(80) hacia HTTPS(443)
- Recomendado como práctica recomendada de seguridad
- Requiere certificado ACM
12. ¿Cuál NO es algo que se debe verificar cuando AWS Load Balancer Controller no está creando un ALB?
A. Verificar los permisos de IAM B. Verificar las etiquetas de subnet C. Verificar la especificación de IngressClass D. Verificar los logs de kube-proxy
Mostrar respuesta
Respuesta: D. Verificar los logs de kube-proxy
Explicación: Aspectos que se deben verificar cuando falla la creación de ALB:
- Permisos de IAM: Si el IAM Role de Service Account tiene los permisos requeridos
- Etiquetas de subnet:
kubernetes.io/role/elb=1okubernetes.io/role/internal-elb=1 - IngressClass: Especificar
ingressClassName: albo mediante anotación - Logs del controller:
kubectl logs -n kube-system deployment/aws-load-balancer-controller - Eventos de Ingress:
kubectl describe ingress <name>
kube-proxy maneja el enrutamiento de Service ClusterIP/NodePort y no está relacionado con la creación de ALB.