이 주제에서는 AWS용 GKE에서 클러스터에 대한 AWS 보안 그룹 규칙을 관리하고 노드 풀 및 제어 영역 복제본에 대해 방화벽 규칙을 수정하는 방법을 설명합니다.
보안 그룹 및 호스팅된 DNS
AWS에서 제공하는 DNS 대신 호스팅된 DNS 서버를 사용하는 경우 제어 영역 및 노드 풀 보안 그룹이 TCP 및 UDP 포트 53에서 아웃바운드 트래픽을 허용해야 합니다.
제어 영역 보안 그룹
제어 영역 보안 그룹은 각 제어 영역 복제본의 인바운드 및 아웃바운드 TCP 트래픽을 위해 방화벽 규칙을 정의합니다.
제어 영역은 AWS 네트워크 부하 분산기(NLB) 뒤에 있는 세 개의 EC2 인스턴스로 구성됩니다. 이러한 인스턴스는 다른 노드, 노드 풀 노드, NLB의 etcd 인스턴스에서 연결하도록 허용합니다. 또한 제어 영역 인스턴스는 Google 및 AWS 서비스에 대해 아웃바운드 HTTPS 연결을 수행합니다.
AWS용 GKE는 모든 제어 영역 인스턴스에 대해 관리되는 제어 영역 보안 그룹을 만들고 연결합니다. 이 그룹의 규칙은 수정하지 않아야 합니다. 보안 그룹 규칙을 더 추가해야 할 경우에는 대신 클러스터를 만들 때 제어 영역에 연결할 추가 보안 그룹 ID를 지정합니다.
기본 제어 영역 보안 그룹 규칙
다음은 AWS용 GKE가 제어 영역에 연결하는 기본 규칙입니다. 이러한 규칙은 사용자의 보안 그룹과 정확하게 일치하지 않습니다. 표의 각 행은 여러 AWS 보안 그룹 규칙으로 확장될 수 있습니다.
유형 | 프로토콜 | 포트 | 주소 범위 또는 SG | 설명 |
---|---|---|---|---|
인바운드 | TCP(클러스터 버전 1.26 미만) | 443 | VPC 기본 CIDR 범위 | 노드 풀 노드에서 HTTPS를 허용합니다. |
인바운드 | TCP(클러스터 버전 1.26 이상) | 443 | 노드 풀의 서브넷 CIDR 범위 | 노드 풀 노드에서 HTTPS를 허용합니다(노드 풀에서 사용하는 서브넷당 규칙 하나). |
인바운드 | TCP | 2380 | 제어 영역 SG | 제어 영역 etcd 복제를 허용합니다. |
인바운드 | TCP | 2381 | 제어 영역 SG | 제어 영역 etcd 이벤트 복제를 허용합니다. |
인바운드 | TCP(클러스터 버전 1.26 미만) | 8132 | VPC 기본 CIDR 범위 | 노드 풀의 Konnectality 연결을 허용합니다. |
인바운드 | TCP(클러스터 버전 1.26 이상) | 8132 | 노드 풀의 서브넷 CIDR 범위 | 노드 풀 노드에서 Konnectivity 연결을 허용합니다(노드 풀에서 사용하는 서브넷당 규칙 하나). |
인바운드 | TCP | 11872 | 제어 영역 CIDR 범위 | 부하 분산기의 HTTP 상태 확인 |
아웃바운드 | TCP | 443 | 0.0.0.0/0 | 아웃바운드 HTTPS를 허용합니다. |
아웃바운드 | TCP | 2380 | 제어 영역 SG | 제어 영역 etcd 복제를 허용합니다. |
아웃바운드 | TCP | 2381 | 제어 영역 SG | 제어 영역 etcd 이벤트 복제를 허용합니다. |
노드 풀 보안 그룹
노드 풀 보안 그룹은 노드 풀의 VM에서 인바운드 및 아웃바운드 TCP 트래픽에 대해 방화벽 규칙을 정의합니다.
AWS용 GKE는 관리되는 노드 풀 보안 그룹을 만들고 이를 모든 노드 풀 인스턴스에 연결합니다. 이 그룹의 규칙은 수정하지 않아야 합니다. 보안 그룹 역할을 더 추가해야 할 경우에는 대신 노드 풀을 만들 때 인스턴스에 연결할 추가 보안 그룹 ID를 지정합니다.
기본적으로 노드 풀 VM에는 열린 포트가 없습니다. 수신 트래픽을 허용하려면 노드 풀을 만들 때 노드 풀 보안 그룹을 추가하고 보안 그룹을 통해 노드 풀에 대해 원하는 인바운드/아웃바운드 규칙을 관리합니다.
기본 노드 풀 보안 그룹 규칙
다음은 AWS용 GKE가 노드 풀에 연결하는 기본 규칙입니다. 이러한 규칙은 사용자의 보안 그룹과 정확하게 일치하지 않습니다. 표의 각 행은 여러 AWS 보안 그룹 규칙으로 확장될 수 있습니다.
유형 | 프로토콜 | 포트 | 주소 범위 또는 SG | 설명 |
---|---|---|---|---|
인바운드 | TCP | 전체 | 노드 풀 SG | 포드 간 통신을 허용합니다. |
아웃바운드 | TCP | 전체 | 노드 풀 SG | 포드 간 통신을 허용합니다. |
아웃바운드 | TCP | 443 | 0.0.0.0/0 | 아웃바운드 HTTPS를 허용합니다. |
아웃바운드 | TCP | 8132 | 제어 영역 SG | 제어 영역에 대해 Konnectivity 연결을 허용합니다. |
아웃바운드 | TCP | 8132 | 제어 영역 CIDR 범위 | 제어 영역에 대해 Konnectivity 연결을 허용합니다. |
VPC 보조 CIDR 블록의 노드 풀
AWS용 GKE 버전 1.26 이상에서는 보조 VPC CIDR 블록의 서브넷을 사용하여 노드 풀을 지원하는 데 필요한 보안 그룹 규칙을 자동으로 만들고 관리합니다. 이러한 버전 중 하나를 사용하는 경우에는 커스텀 보안 그룹을 만들거나 수동으로 업데이트할 필요가 없습니다.
하지만 관리형 제어 영역 보안 그룹을 만들 때 이전 버전의 AWS용 GKE에서는 보조 VPC CIDR 블록의 서브넷을 사용하여 노드 풀을 지원하는 규칙을 만들지 않습니다.
이러한 제한을 해결하기 위해서는 제어 영역에 대해 커스텀 보안 그룹을 만듭니다. --security-group-ids
플래그를 사용하여 클러스터를 만들 때 보안 그룹 ID를 전달합니다. 또는 클러스터의 보안 그룹을 업데이트할 수 있습니다.
다음 규칙을 사용하여 보안 그룹을 만듭니다.
유형 | 프로토콜 | 포트 | 주소 범위 또는 SG | 설명 |
---|---|---|---|---|
인바운드 | TCP | 443 | 노드 풀 범위(VPC 보조 CIDR 블록) | 노드 풀 노드에서 HTTPS를 허용합니다. |
인바운드 | TCP | 8132 | 노드 풀 범위(VPC 보조 CIDR 블록) | 노드 풀의 Konnectality 연결을 허용합니다. |