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

3 minutos de lectura
0

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

Descripción corta

Si crea un servicio de Type:LoadBalancer, se permiten las solicitudes de la fuente ** 0.0.0.0/0** de forma predeterminada. Si el balanceador 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.

Resolución

**Nota:**Si recibe errores al ejecutar comandos de la AWS Command Line Interface (AWS CLI), asegúrese de utilizar la versión más reciente de AWS CLI.

Configure su entorno

  1. Cree un clúster de Amazon EKS.

  2. Creeylance nodos de trabajo.

  3. Configura kubectl.

  4. Configure la CLI de AWS.

  5. Configure el AWS Load Balancer Controller.

**Nota:**El AWS Load Balancer Controller admite las siguientes versiones de AWS Network Load Balancer for Services del tipo LoadBalancer: Modo IP NLB (versión 2.0.0 o superior) y modo de instancia NLB (2.2.0 o superior)

**Importante:**Se recomienda utilizar el AWS Load Balancer Controller al aprovisionar un nuevo balanceador de carga de red para servicios del tipo LoadBalancer. Utilice el AWS Load Balancer Controller en lugar del controlador de balanceador en árbol cargas de servicios integrado de Kubernetes.

Restringir las direcciones IP de CIDR

  1. En el archivo de manifiesto de servicio (svc.yaml), agregue el campo** .spec.loadBalancerSourceRanges**. Por ejemplo:
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"
  1. Para aplicar el archivo de manifiesto, ejecute el siguiente comando:
$ kubectl apply -f svc.yaml
  1. Para confirmar que las reglas entrantes del grupo de seguridad se han modificado, ejecute el siguiente comando de la CLI de AWS:
$ aws ec2 describe-security-groups --group-ids sg-XXXXXXXXXXXXXXXXX
...
    "CidrIp": "143.231.0.0/16"
...

Por último, considere lo siguiente:

Si utiliza el modo IP NLB, el campo .spec.loadBalancerSourceRanges se omite de forma predeterminada. En este caso, utilice la siguiente anotación:

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

Esta anotación permite la preservación de la IP del cliente.

Para un servicio con un tipo de balanceador de carga de red, considere el máximo límite de grupos 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.


Información relacionada

Autenticación de clústeres

Servicio de Kubernetes

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 3 años