¿Cómo puedo restringir las direcciones IP de CIDR para un servicio de tipo LoadBalancer en Amazon EKS?
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:
- Cree un clúster de Amazon EKS.
- Cree y, a continuación, lance nodos de trabajo.
- Configure kubectl.
- Configure la AWS CLI.
- 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
-
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"
-
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>
-
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" ...
-
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
Contenido relevante
- OFICIAL DE AWSActualizada hace 9 meses
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 10 meses
- OFICIAL DE AWSActualizada hace 2 años