Skip to content

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 TypeComportamientoVentajasDesventajas
ipRegistra directamente la IP del PodBaja latencia, eficienteRequiere VPC CNI
instanceEnruta al NodePort del NodeUniversalSalto 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:

yaml
# 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:

yaml
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: 8080

alb.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:

  1. Migración de infraestructura existente - Aprovechar Target Groups existentes
  2. Uso compartido entre varios clusters - Usar un ALB/NLB en varios clusters
  3. Cuando se necesita la administración directa de Target Groups
yaml
apiVersion: elbv2.k8s.aws/v1beta1
kind: TargetGroupBinding
metadata:
  name: my-tgb
spec:
  targetGroupARN: arn:aws:elasticloadbalancing:...
  serviceRef:
    name: my-service
    port: 80
  targetType: ip

7. ¿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:

yaml
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/xxx

Funcionalidades 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:

bash
# 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 owned

Sin 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:

yaml
metadata:
  annotations:
    alb.ingress.kubernetes.io/target-group-attributes: >-
      stickiness.enabled=true,
      stickiness.lb_cookie.duration_seconds=3600

Se configura como atributos de Target Group:

  • stickiness.enabled=true - Habilitar
  • stickiness.lb_cookie.duration_seconds - Duración de validez de la cookie
  • stickiness.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:

  1. Proxy Protocol v2:
yaml
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
  1. externalTrafficPolicy: Local:
yaml
spec:
  externalTrafficPolicy: Local
  • Enruta solo a Pods en el mismo Node sin saltos adicionales
  • Es posible una distribución desigual del tráfico
  1. IP Target Type (modo ip):
yaml
annotations:
  service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: preserve_client_ip.enabled=true

11. ¿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:

yaml
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:

  1. Permisos de IAM: Si el IAM Role de Service Account tiene los permisos requeridos
  2. Etiquetas de subnet: kubernetes.io/role/elb=1 o kubernetes.io/role/internal-elb=1
  3. IngressClass: Especificar ingressClassName: alb o mediante anotación
  4. Logs del controller: kubectl logs -n kube-system deployment/aws-load-balancer-controller
  5. 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.


Recursos de aprendizaje adicionales ​

Pregunta a la documentación

Enter envía, Shift+Enter añade una línea.