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

4 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 processamento de qualquer lugar na Internet.

Para restringir a fonte em vez de 0.0.0.0/0, use loadBalancerSourceRanges.

Solução

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Configure seu ambiente

Para configurar seu ambiente, conclua as etapas a seguir:

  1. Crie um cluster Amazon EKS.
  2. Crie, em seguida, inicie os nós de processamento.
  3. Configure o kubectl.
  4. Configure o AWS CLI.
  5. Configure o AWS Load Balancer Controller.
    **Observação:**Para o serviço do tipo LoadBalancer, o AWS Load Balancer Controller oferece suporte ao modo IP do Network Load Balancer (NLB) versão 2.0.0 ou posterior e ao modo de instância NLB 2.2.0 ou posterior.

**Importante:**Para alocar um novo Network Load Balancer para serviços do tipo LoadBalancer, é uma prática recomendada usar o AWS Load Balancer Controller em vez do controlador de balanceador de carga do Kubernetes Service. Para obter a versão mais recente do AWS Balancer Controller, consulte aws-load-balancer-controller no site do GitHub.

Restringir endereços IP CIDR

Escolha um dos métodos a seguir para especificar os loadBalancerSourceRanges.

Use uma anotação

Use uma anotação em seu arquivo de manifesto de serviço (svc.yaml).

Exemplo de anotação:

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

Para obter mais informações, consulte Controle de acesso no site do Kubernetes.

Adicione o campo LoadBalancerSourceRanges

  1. Adicione o campo .spec.loadBalancerSourceRanges em seu arquivo 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. Execute o comando a seguir para aplicar seu arquivo svc.yaml:

    $ kubectl apply -f svc.yaml

    Execute o comando a seguir para verificar os logs do pod do AWS Load Balancer Controller:

    $ kubectl logs -f <aws load balancer controller pod> -n <namespace>
  3. O AWS Load Balancer Controller adiciona os intervalos de origem do balanceador de carga configurados às regras de entrada do grupo de segurança. Execute o comando a seguir para confirmar se as regras de entrada no grupo de segurança foram modificadas:

    $ aws ec2 describe-security-groups --group-ids sg-XXXXXXXXXXXXXXXXX
    ...
        "CidrIp": "143.231.0.0/16"
    ...
  4. Se você usar um balanceador de carga de rede no modo IP, o campo .spec.loadBalancerSourceRanges será ignorado por padrão. Nesse caso, use a anotação a seguir para ativar a preservação do IP do cliente:

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

    Para um serviço com um tipo de balanceador de carga de rede, talvez você queira aumentar 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 processamento. Para obter mais informações, consulte Tráfego de entrada no site do Kubernetes.

    **Observação:**Para um serviço com um tipo de balanceador de carga de rede, talvez você queira aumentar a cota máxima 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 processamento. Por exemplo, você tem nós de processamento em três zonas de disponibilidade. Você adiciona um LoadBalancerSourceRange. Três regras de verificação de integridade (uma por sub-rede) e uma regra LoadBalancerSourceRange são criadas no grupo de segurança do node de trabalho. Os grupos de segurança têm um limite padrão de 60 regras. Você pode aumentar essa cota, mas o número total de grupos de segurança por interface de rede não pode exceder 1000.

Informações relacionadas

Permitir que os usuários acessem seu cluster

AWS OFICIAL
AWS OFICIALAtualizada há 10 meses