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