개별 Pod에 보안 그룹 할당
개별 Pod에 보안 그룹 할당
적용 대상: Amazon EC2 인스턴스가 있는 Linux 노드 적용 대상: 프라이빗 서브넷
Pod용 보안 그룹(Security groups for Pods)은 Amazon EC2 보안 그룹을 Kubernetes Pod와 통합합니다. Amazon EC2 보안 그룹을 사용하면 다양한 Amazon EC2 인스턴스 유형과 Fargate에서 실행되는 노드에 배포하는 Pod로 들어오고 나가는 인바운드 및 아웃바운드 네트워크 트래픽을 허용하는 규칙을 정의할 수 있습니다. 이 기능에 대한 자세한 설명은 Introducing security groups for Pods 블로그 게시물을 참조하세요.
출처: 문서
본문
Amazon VPC CNI 플러그인 for Kubernetes 기능과의 호환성
다음 기능과 함께 Pod용 보안 그룹을 사용할 수 있습니다.
- IPv4 소스 네트워크 주소 변환 – 자세한 내용은 Pod에 대한 아웃바운드 인터넷 액세스 활성화를 참조하세요.
- 클러스터, Pod, 서비스의 IPv6 주소 – 자세한 내용은 클러스터, Pod, 서비스의 IPv6 주소 알아보기를 참조하세요.
- Kubernetes 네트워크 정책으로 트래픽 제한 – 자세한 내용은 Kubernetes 네트워크 정책으로 Pod 트래픽 제한을 참조하세요.
고려 사항
Pod용 보안 그룹을 배포하기 전에 다음 제한 사항과 조건을 고려하세요.
- Pod용 보안 그룹은 Windows 노드나 EKS Auto Mode에서는 사용할 수 없습니다.
- Amazon VPC CNI 플러그인 버전 1.16.0 이상을 사용하면 Amazon EC2 노드가 포함된
IPv6패밀리로 구성된 클러스터에서 Pod용 보안 그룹을 사용할 수 있습니다. Amazon VPC CNI 플러그인 버전 1.7.7 이상을 사용하면 Fargate 노드만 포함된IPv6패밀리로 구성된 클러스터에서 Pod용 보안 그룹을 사용할 수 있습니다. 자세한 내용은 클러스터, Pod, 서비스의 IPv6 주소 알아보기를 참조하세요. - Pod용 보안 그룹은 대부분의 Nitro 기반 Amazon EC2 인스턴스 패밀리에서 지원되지만 패밀리의 모든 세대가 지원되는 것은 아닙니다. 예를 들어
m5,c5,r5,m6g,c6g,r6g인스턴스 패밀리와 세대가 지원됩니다.t패밀리의 인스턴스 유형은 지원되지 않습니다. 지원되는 인스턴스 유형의 전체 목록은 GitHub의 limits.go 파일을 참조하세요. 노드는 해당 파일에서IsTrunkingCompatible: true가 있는 나열된 인스턴스 유형 중 하나여야 합니다. - 사용자 지정 네트워킹과 Pod용 보안 그룹을 함께 사용한다면 Pod용 보안 그룹이 지정한 보안 그룹이
ENIConfig에 지정된 보안 그룹 대신 사용됩니다. - Amazon VPC CNI 플러그인 버전
1.10.2이하를 사용하고 Pod 사양에terminationGracePeriodSeconds설정을 포함한다면 이 설정의 값은 0이 될 수 없습니다. - Amazon VPC CNI 플러그인 버전
1.10이하 또는 기본 설정인POD_SECURITY_GROUP_ENFORCING_MODE=strict인 버전1.11을 사용한다면,externalTrafficPolicy가Local로 설정된 인스턴스 대상을 사용하는NodePort및LoadBalancer유형의 Kubernetes 서비스는 보안 그룹을 할당한 Pod에서는 지원되지 않습니다. 인스턴스 대상과 함께 로드 밸런서를 사용하는 방법은 Network Load Balancer로 TCP 및 UDP 트래픽 라우팅을 참조하세요. - Amazon VPC CNI 플러그인 버전
1.10이하 또는 기본 설정인POD_SECURITY_GROUP_ENFORCING_MODE=strict인 버전1.11을 사용한다면, 아웃바운드 보안 그룹 규칙이 적용되도록 보안 그룹이 할당된 Pod의 아웃바운드 트래픽에는 소스 NAT가 비활성화됩니다. 인터넷에 접근하려면 보안 그룹이 할당된 Pod가 NAT 게이트웨이 또는 인스턴스로 구성된 프라이빗 서브넷에 배포된 노드에서 시작되어야 합니다. 퍼블릭 서브넷에 배포된 보안 그룹이 할당된 Pod는 인터넷에 접근할 수 없습니다. POD_SECURITY_GROUP_ENFORCING_MODE=standard를 사용하는 플러그인 버전1.11이상을 사용한다면 VPC 밖으로 나가는 Pod 트래픽은 인스턴스의 기본 네트워크 인터페이스 IP 주소로 변환됩니다. 이 트래픽에는 Pod의 보안 그룹 규칙이 아니라 기본 네트워크 인터페이스의 보안 그룹 규칙이 사용됩니다.- 보안 그룹이 연결된 Pod와 함께 Calico 네트워크 정책을 사용하려면 Amazon VPC CNI 플러그인 버전
1.11.0이상을 사용하고POD_SECURITY_GROUP_ENFORCING_MODE=standard로 설정해야 합니다. 그렇지 않으면 보안 그룹이 연결된 Pod로 오가는 트래픽 흐름은 Calico 네트워크 정책 적용을 받지 않고 Amazon EC2 보안 그룹 적용으로만 제한됩니다. Amazon VPC CNI 버전을 업데이트하려면 Amazon VPC CNI로 Pod에 IP 할당을 참조하세요. - NodeLocal DNSCache를 사용하는 클러스터에서 보안 그룹을 사용하는 Amazon EC2 노드에서 실행되는 Pod는 Amazon VPC CNI 플러그인 버전
1.11.0이상과POD_SECURITY_GROUP_ENFORCING_MODE=standard에서만 지원됩니다. Amazon VPC CNI 플러그인 버전을 업데이트하려면 Amazon VPC CNI로 Pod에 IP 할당을 참조하세요. - Pod용 보안 그룹은 계속 재생성(churn)되는 Pod의 시작 지연 시간을 높일 수 있습니다. 이는 리소스 컨트롤러의 속도 제한(rate limiting) 때문입니다.
- EC2 보안 그룹 범위는 Pod 수준입니다 – 자세한 내용은 보안 그룹(Security group)을 참조하세요.
POD_SECURITY_GROUP_ENFORCING_MODE=standard와AWS_VPC_K8S_CNI_EXTERNALSNAT=false를 설정하면 VPC 밖의 엔드포인트로 향하는 트래픽은 Pod의 보안 그룹이 아니라 노드의 보안 그룹을 사용합니다.