개별 Pods에 보안 그룹 할당 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 설명서에 기여하고 싶으신가요? 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다. 여러분의 기여는 모두를 위한 더 나은 사용자 설명서를 만드는 데 도움이 됩니다.

개별 Pods에 보안 그룹 할당

적용 대상: Amazon EC2 인스턴스가 있는 Linux 노드

적용 대상: 프라이빗 서브넷

Pods의 보안 그룹은 Amazon EC2 보안 그룹을 Kubernetes Pods와 통합합니다. Amazon EC2 보안 그룹을 사용하여 여러 Amazon EC2 인스턴스 유형 및 Fargate 에서 실행 중인 노드에 배포하는 Pods와의 인바운드 및 아웃바운드 네트워크 트래픽을 허용하는 규칙을 정의할 수 있습니다. 이 기능에 대한 자세한 설명은 포드에 대한 보안 그룹 소개 블로그 게시물을 참조하세요.

Amazon VPC CNI plugin for Kubernetes 기능과의 호환성

다음 기능과 함께 Pods에 대한 보안 그룹을 사용할 수 있습니다.

고려 사항

Pods의 보안 그룹을 배포하기 전에 다음 제한 사항 및 조건을 고려하세요.

  • Pods의 보안 그룹은 Windows 노드에서 사용할 수 없습니다.

  • Pods의 보안 그룹은 Amazon VPC CNI 플러그인 버전 1.16.0 이상을 사용하여 Amazon EC2 노드가 포함된 IPv6 제품군에 대해 구성된 클러스터에서 사용할 수 있습니다. Amazon VPC CNI 플러그인 버전 1.7.7 이상을 사용하여 Fargate 노드만 포함하는 IPv6 제품군에 대해 구성된 클러스터에서 Pods의 보안 그룹을 사용할 수 있습니다. 자세한 내용은 클러스터, Pods, 및 서비스에 대한 IPv6 주소에 대해 알아보기 섹션을 참조하세요.

  • Pods에 대한 보안 그룹은 대다수 Nitro 기반 Amazon EC2 인스턴스 패밀리에서 지원하지만, 패밀리의 모든 세대에서 지원하지는 않습니다. 예를 들면 m5, c5, r5, m6g, c6gr6g 인스턴스 패밀리와 세대는 지원됩니다. t 패밀리의 인스턴스 유형은 지원되지 않습니다. 지원되는 인스턴스 유형의 전체 목록은 GitHub의 limits.go 파일을 참조하세요. 노드는 해당 파일에 IsTrunkingCompatible: true가 있는 나열된 인스턴스 유형 중 하나여야 합니다.

  • 또한 Pod 보안 정책을 사용하여 Pod 변이에 대한 액세스를 제한하는 경우 psp가 할당된 role에 대한 Kubernetes ClusterRoleBindingeks:vpc-resource-controller Kubernetes 사용자를 지정해야 합니다. 기본 Amazon EKS psp, roleClusterRoleBinding을 사용하는 경우 eks:podsecuritypolicy:authenticated ClusterRoleBinding입니다. 예를 들어, 다음 예와 같이 사용자를 subjects: 섹션에 추가합니다.

    [...] subjects: - kind: Group apiGroup: rbac.authorization.k8s.io name: system:authenticated - apiGroup: rbac.authorization.k8s.io kind: User name: eks:vpc-resource-controller - kind: ServiceAccount name: eks-vpc-resource-controller
  • Pods의 보안 그룹 및 사용자 지정 네트워킹을 함께 사용하는 경우 Pods에 대해 보안 그룹에서 지정한 보안 그룹이 ENIConfig에 지정된 보안 그룹 대신 사용됩니다.

  • 버전 1.10.2 이하의 Amazon VPC CNI 플러그인을 사용하고 Pod 사양에 terminationGracePeriodSeconds 설정이 포함된 경우 설정 값은 0이 될 수 없습니다.

  • 버전 1.10 이하의 Amazon VPC CNI 플러그 인이나 기본 설정인 POD_SECURITY_GROUP_ENFORCING_MODE=strict로 버전 1.11를 사용하는 경우, externalTrafficPolicyLocal로 설정한 인스턴스 대상을 사용하는 유형 NodePortLoadBalancer의 Kubernetes 서비스는 보안 그룹을 할당하는 Pods에서 지원하지 않습니다. 인스턴스 대상에 로드 밸런서를 사용하는 데 대한 자세한 내용은 TCP 및 Network Load Balancers를 사용한 UDP 트래픽 라우팅 섹션을 참조하세요.

  • 버전 1.10 이하의 Amazon VPC CNI 플러그 인이나 기본 설정인 POD_SECURITY_GROUP_ENFORCING_MODE=strict로 버전 1.11를 사용하는 경우, 소스 NAT는 보안 그룹이 할당된 Pods에서 아웃바운드 트래픽에 대해 사용 중지되므로 아웃바운드 보안 그룹 규칙이 적용됩니다. 인터넷에 액세스하려면 보안 그룹이 할당된 Pods는 NAT 게이트웨이 또는 인스턴스로 구성된 프라이빗 서브넷에 배포된 노드에서 실행해야 합니다. 퍼블릭 서브넷에 배포된 보안 그룹이 할당된 Pods는 인터넷에 액세스할 수 없습니다.

    POD_SECURITY_GROUP_ENFORCING_MODE=standard로 설정된 버전 1.11 이상의 플러그 인을 사용하는 경우 VPC 외부로 향하는 Pod 트래픽은 인스턴스의 기본 네트워크 인터페이스의 IP 주소로 변환됩니다. 이 트래픽의 경우 Pod’s 보안 그룹의 규칙이 아닌 기본 네트워크 인터페이스에 대한 보안 그룹의 규칙이 사용됩니다.

  • 연결된 보안 그룹이 있는 Pods를 통해 Calico 네트워크 정책을 사용하려면 버전 1.11.0 이상의 Amazon VPC CNI 플러그 인을 사용하고 POD_SECURITY_GROUP_ENFORCING_MODE=standard로 설정해야 합니다. 그렇지 않으면 연결된 보안 그룹이 있는 Pods에서 주고받는 트래픽 흐름에는 Calico 네트워크 정책이 적용되지 않으며 Amazon EC2 보안 그룹으로만 적용이 제한됩니다. Amazon VPC CNI 버전을 업데이트하려면 Amazon VPC CNI를 통해 Pods에 IP 할당 섹션을 참조하세요.

  • NodeLocal DNSCache를 사용하는 클러스터에서 보안 그룹을 사용하는 Amazon EC2 노드에서 실행되는 Pods는 POD_SECURITY_GROUP_ENFORCING_MODE=standard로 설정된 버전 1.11.0 이상의 Amazon VPC CNI 플러그 인에서만 지원됩니다. Amazon VPC CNI 플러그인 버전을 업데이트하려면 Amazon VPC CNI를 통해 Pods에 IP 할당 섹션을 참조하세요.

  • Pods의 보안 그룹은 변동이 많은 Pods의 경우 Pod 시작 지연 시간 증가로 이어질 수 있습니다. 이는 리소스 컨트롤러의 속도 제한 때문입니다.

  • EC2 보안 그룹 범위는 Pod 수준입니다. 자세한 내용은 보안 그룹을 참조하세요.

    POD_SECURITY_GROUP_ENFORCING_MODE=standardAWS_VPC_K8S_CNI_EXTERNALSNAT=false를 설정하면 VPC 외부의 엔드포인트로 향하는 트래픽은 Pod’s의 보안 그룹이 아닌 노드의 보안 그룹을 사용합니다.