Al usar AWS re:Post, aceptas las AWS re:Post Términos de uso

¿Cómo puedo restringir las direcciones IP de CIDR para un servicio de tipo LoadBalancer en Amazon EKS?

4 minutos de lectura
0

Quiero restringir las direcciones IP CIDR de un servicio de tipo LoadBalancer en Amazon Elastic Kubernetes Service (Amazon EKS).

Breve descripción

Si crea un servicio de tipo LoadBalancer, se permiten las solicitudes de la fuente 0.0.0.0/0 de forma predeterminada. Si el equilibrador de carga se encuentra en una subred pública, entonces las solicitudes se envían a los nodos de trabajo desde cualquier lugar de Internet.

Para restringir la fuente en lugar de 0.0.0.0/0, utilice loadBalancerSourceRanges.

Resolución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Troubleshoot AWS CLI errors. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.

Configurar el entorno

Para configurar el entorno, siga estos pasos:

  1. Cree un clúster de Amazon EKS.
  2. Cree y, a continuación, lance nodos de trabajo.
  3. Configure kubectl.
  4. Configure la AWS CLI.
  5. Configure el AWS Load Balancer Controller.
    Nota: Para el servicio de tipo LoadBalancer, el AWS Load Balancer Controller admite la versión 2.0.0 o posterior del modo IP del equilibrador de carga de red (NLB) y el modo de instancia NLB 2.2.0 o posterior.

Importante: Para asignar un nuevo equilibrador de carga de red a los servicios del tipo LoadBalancer, se recomienda usar el AWS Load Balancer Controller en lugar del controlador del equilibrador de carga de Kubernetes Service. Para obtener la versión más reciente de AWS Balancer Controller, consulte aws-load-balancer-controller en el sitio web de GitHub.

Restringir las direcciones IP de CIDR

Elija uno de los siguientes métodos para especificar loadBalancerSourceRanges.

Use una anotación

Use una anotación en su archivo de manifiesto de servicio (svc.yaml).

Ejemplo de anotación:

service.beta.kubernetes.io/load-balancer-source-ranges: 143.231.0.0/16

Para obtener más información, consulte Access control en el sitio web de Kubernetes.

Agregue el campo loadBalancerSourceRanges

  1. Agregue el campo .spec.loadBalancerSourceRanges en su archivo svc.yaml:

    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: nginx
      name: nginx
      annotations:
        service.beta.kubernetes.io/aws-load-balancer-type: "external"
        service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "instance"
        service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing"
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: nginx
      type: LoadBalancer
      loadBalancerSourceRanges:
      - "143.231.0.0/16"
  2. Ejecute el siguiente comando para aplicar el archivo svc.yaml:

    $ kubectl apply -f svc.yaml

    Ejecute el siguiente comando para comprobar los registros del pod de AWS Load Balancer Controller:

    $ kubectl logs -f <aws load balancer controller pod> -n <namespace>
  3. El AWS Load Balancer Controller agrega los rangos de fuente del equilibrador de carga configurados en las reglas de entrada del grupo de seguridad. Para confirmar que las reglas de entrada del grupo de seguridad se han modificado, ejecute el siguiente comando de la AWS CLI:

    $ aws ec2 describe-security-groups --group-ids sg-XXXXXXXXXXXXXXXXX
    ...
        "CidrIp": "143.231.0.0/16"
    ...
  4. Si utiliza el modo IP del equilibrador de carga de red, el campo .spec.loadBalancerSourceRanges se omite de forma predeterminada. En este caso, utilice la siguiente anotación para activar la preservación de la IP del cliente:

    service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: preserve_client_ip.enabled=true

    Para un servicio con un tipo de equilibrador de carga de red, es posible que desee aumentar el límite máximo del grupo de seguridad. Para cada puerto de nodo y rango CIDR de subred, el controlador crea reglas en el grupo de seguridad del nodo de trabajo. Para obtener más información, consulte Ingress traffic en el sitio web de Kubernetes.

    Nota: Para un servicio con un tipo de equilibrador de carga de red, es posible que desee aumentar la cuota máxima del grupo de seguridad. Para cada puerto de nodo y rango CIDR de subred, el controlador crea reglas en el grupo de seguridad del nodo de trabajo. Por ejemplo, tiene nodos de trabajo en tres zonas de disponibilidad. Añade un loadBalancerSourceRange. Se crean tres reglas de comprobación de estado (una por subred) y una regla loadBalancerSourceRange en el grupo de seguridad del nodo de trabajo. Los grupos de seguridad tienen un límite predeterminado de 60 reglas. Puede aumentar esta cuota, pero el número total de grupos de seguridad por interfaz de red no puede superar los 1000.

Información relacionada

Administración de acceso

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 10 meses