Como faço para restringir endereços IP CIDR para um serviço do tipo LoadBalancer no Amazon EKS?

3 minuto de leitura
0

Quero restringir os endereços IP CIDR para um serviço do tipo LoadBalancer no Amazon Elastic Kubernetes Service (Amazon EKS).

Breve descrição

Se você criar um serviço do tipo:LoadBalancer, as solicitações da fonte 0.0.0.0/0 serão permitidas por padrão. Se o balanceador de carga estiver em uma sub-rede pública, as solicitações serão encaminhadas para os nós de trabalho de qualquer lugar na Internet.

Resolução

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), certifique-se de estar usando a versão mais recente da AWS CLI.

Configure seu ambiente

1.    Crie um cluster Amazon EKS.

2.    Crie e lance nós de trabalho.

3.    Configure o kubectl.

4.    Configure o AWS CLI.

5.    Configure o AWS Load Balancer Controller.

**Observação:**o AWS Load Balancer Controller oferece suporte às seguintes versões do AWS Network Load Balancer para serviços do tipo LoadBalancer: Modo ip NLB (versão 2.0.0 ou superior) e modo de instância NLB (2.2.0 ou superior)

Importante: a prática recomendada é usar o AWS Load Balancer Controller ao provisionar um novo Network Load Balancer para serviços do tipo LoadBalancer. Use o AWS Load Balancer Controller em vez do controlador do balanceador de carga do serviço em árvore do Kubernetes.

Restringir endereços IP CIDR

1.    Em seu arquivo de manifesto de serviço (svc.yaml), adicione o campo .spec.loadBalancerSourceRanges. Por exemplo:

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.    Para aplicar o arquivo de manifesto, execute o seguinte comando:

$ kubectl apply -f svc.yaml

3.    Para confirmar que as regras de entrada no grupo de segurança foram modificadas, execute o seguinte comando da AWS CLI:

$ aws ec2 describe-security-groups --group-ids sg-XXXXXXXXXXXXXXXXX
...
    "CidrIp": "143.231.0.0/16"
...

Por fim, considere o seguinte:

Se você usar o modo ip NLB, o campo .spec.loadBalancerSourceRanges será ignorado por padrão. Nesse caso, use a seguinte anotação:

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

Essa anotação permite a preservação do IP do cliente.

Para um serviço com um tipo de Network Load Balancer, considere o limite máximo do grupo de segurança. Para cada porta de nó e intervalo CIDR de sub-rede, o controlador cria regras no grupo de segurança do nó de trabalho.


Informações relacionadas

Autenticação de cluster

Serviço Kubernetes

AWS OFICIAL
AWS OFICIALAtualizada há 3 anos