Amazon EKS에서 LoadBalancer 유형 서비스에 대한 CIDR IP 주소를 제한하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 6월 10일

Amazon Elastic Kubernetes Service(Amazon EKS)에서 LoadBalancer 유형 서비스에 대한 CIDR IP 주소를 제한하려고 합니다.

간략한 설명

type:LoadBalancer 서비스를 생성하는 경우 소스 0.0.0.0/0의 요청이 기본적으로 허용됩니다. 로드 밸런서가 퍼블릭 서브넷에 있는 경우 인터넷의 모든 위치에서 작업자 노드로 요청이 라우팅됩니다.

해결 방법

환경 설정

1.    Amazon ECS 클러스터를 생성합니다.

2.    작업자 노드를생성하고 시작합니다.

3.    kubectl을 설정합니다.

4.    AWS CLI(AWS 명령줄 인터페이스)를 생성합니다.

CIDR IP 주소 제한

1.    서비스 매니페스트 파일(svc.yaml)에서 .spec.loadBalancerSourceRanges 필드를 추가합니다. 다음 예제를 참조하십시오.

apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx
  name: nginx
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  type: LoadBalancer
  loadBalancerSourceRanges:
  - "143.231.0.0/16"

2.    매니페스트 파일을 적용하려면 다음 명령을 실행합니다.

$ kubectl apply -f svc.yaml

3.    보안 그룹의 인바운드 규칙이 수정되었는지 확인하려면 다음 AWS CLI 명령을 실행합니다.

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

마지막으로 다음을 고려하십시오.

Kubernetes 버전 1.14 이하의 경우 Network Load Balancer를 사용하는 서비스의 .spec.loadBalancerSourceRanges 필드만 업데이트하려면 CIDR 범위에 대한 서비스 리소스를 다시 생성해야 합니다. 이러한 변경 사항은 작업자 노드의 보안 그룹 규칙에 반영됩니다.

참고: 서비스 리소스를 다시 생성하면 Network Load Balancer가 다시 프로비저닝되고 로드 밸런서에 대한 새 IP 주소가 생성됩니다.

Network Load Balancer 유형을 사용하는 서비스의 경우 최대 보안 그룹 제한을 고려하십시오. Kubernetes Control Plane은 작업자 노드의 보안 그룹에 각 노드 포트 및 CIDR 범위에 대한 세 가지 규칙(트래픽, 상태 및 MTU)을 생성합니다.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?