Como faço para restringir endereços IP CIDR para um serviço do tipo LoadBalancer no Amazon EKS?
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:
- Crie um cluster Amazon EKS.
- Crie, em seguida, inicie os nós de processamento.
- Configure o kubectl.
- Configure o AWS CLI.
- 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
-
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"
-
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>
-
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" ...
-
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
Conteúdo relevante
- Como resolvo os tempos de conexão esgotado quando me conecto ao meu serviço hospedado no Amazon EKS?AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 25 dias