이 주제에서는 GKE on AWS에 필요한 AWS 보안 그룹(SG)에 대해 설명합니다.
관리 서비스를 설치하거나 기존 AWS VPC를 사용하는 경우 anthos-gke
가 보안 그룹을 만듭니다. 추가 보안 그룹 ID 목록을 사용하여 AWSCluster 및 AWSNodePool CRD를 구성할 수 있습니다.
다음 다이어그램은 GKE on AWS가 보안 그룹을 사용하여 Google Cloud 및 AWS 서비스에 연결하는 방법을 보여줍니다.
관리 서비스 보안 그룹
관리 서비스 보안 그룹을 사용하면 HTTPS로 관리 서비스 API에 액세스할 수 있습니다. 배스천 호스트가 구성된 경우 배스천 보안 그룹에서 인바운드가 허용됩니다.
기존 AWS VPC에 GKE on AWS 환경을 만드는 경우 다음 연결을 허용하는 보안 그룹이 있어야 합니다.
유형 | 프로토콜 | 포트 | 주소 | 설명 |
---|---|---|---|---|
인바운드 | TCP | 443 | VPC CIDR | AWS VPC에서 HTTPS를 허용합니다. |
인바운드 | TCP | 22 | 배스천 호스트 SG | 배스천 호스트에서 SSH 터널링 허용(전용 VPC에만 포함) |
아웃바운드 | TCP | 80 | 0.0.0.0/0 | 아웃바운드 HTTP를 허용합니다. |
아웃바운드 | TCP | 443 | 0.0.0.0/0 | 아웃바운드 HTTPS를 허용합니다. |
아웃바운드 도메인 액세스
관리 서비스에는 다음 도메인에 대한 아웃바운드 액세스가 필요합니다.
gkeconnect.googleapis.com
gkehub.googleapis.com
oauth2.googleapis.com
storage.googleapis.com
www.googleapis.com
gcr.io
k8s.gcr.io
EC2-REGION.ec2.archive.ubuntu.com
EC2-REGION을 AWS용 GKE 설치가 실행되는 AWS EC2 리전으로 바꿉니다. 예를 들면 us-west-1.ec2.archive.ubuntu.com/
입니다.
Prometheus 및 Kiali와 함께 Cloud Service Mesh를 사용하는 경우 다음 도메인에서 아웃바운드 액세스를 허용합니다.
docker.io
quay.io
배스천 호스트 보안 그룹(선택사항)
이 그룹에서 허용되는 배스천 호스트 보안 그룹 연결을 사용하여 GKE on AWS 관리 서비스 및 사용자 클러스터에 연결합니다. 이 그룹은 선택사항이며 anthos-gke
를 사용하여 전용 VPC에 GKE on AWS 설치를 만드는 경우에만 포함됩니다.
유형 | 프로토콜 | 포트 | 주소 | 설명 |
---|---|---|---|---|
인바운드 | TCP | 22 | AWSManagementService 구성에 있는 bastionAllowedSSHCIDRBlocks 의 CIDR 블록입니다. |
배스천 호스트에 대해 SSH를 허용합니다. |
아웃바운드 | TCP | 22 | 0.0.0.0/0 | 아웃바운드 SSH를 허용합니다. |
아웃바운드 | TCP | 80 | 0.0.0.0/0 | 아웃바운드 HTTP를 허용합니다. |
아웃바운드 | TCP | 443 | 0.0.0.0/0 | 아웃바운드 HTTPS를 허용합니다. |
제어 영역 보안 그룹
제어 영역 보안 그룹은 제어 영역 노드와 관리 서비스 간, 제어 영역 노드와 노드 풀 간의 연결을 허용합니다.
제어 영역은 AWS 네트워크 부하 분산기(NLB) 뒤에 있는 세 개의 EC2 인스턴스로 구성됩니다. 이러한 인스턴스는 다른 노드, 노드 풀 노드, NLB의 etcd 인스턴스에서 연결하도록 허용합니다. GKE on AWS 구성요소를 업데이트하기 위해 모든 아웃바운드 HTTP/HTTPS 트래픽이 허용됩니다.
AWSCluster 정의에 보안 그룹 ID를 지정합니다.
유형 | 프로토콜 | 포트 | 주소 | 설명 |
---|---|---|---|---|
인바운드 | TCP | 2380 | 이 SG | 제어 영역 etcd 복제를 허용합니다. |
인바운드 | TCP | 2381 | 이 SG | 제어 영역 etcd 이벤트 복제를 허용합니다. |
인바운드 | TCP | 443 | 노드 풀 SG | 노드 풀 노드에서 HTTPS를 허용합니다. |
인바운드 | TCP | 443 | AWS VPC CIDR 범위 | 부하 분산기 및 관리 서비스에서 HTTPS를 허용합니다. |
인바운드 | TCP | 11872 | AWS VPC CIDR 범위 | 부하 분산기의 HTTP 상태 확인 |
아웃바운드 | TCP | 22 | 노드 풀 SG | 노드 풀에 대한 SSH 터널링을 허용합니다(클러스터 v1.20 이하). |
인바운드 | TCP | 8132 | 노드 풀 SG | 노드 풀의 Konnectivity 연결을 허용합니다(클러스터 v1.21 이상). |
아웃바운드 | TCP | 80 | 0.0.0.0/0 | 아웃바운드 HTTP를 허용합니다. |
아웃바운드 | TCP | 443 | 0.0.0.0/0 | 아웃바운드 HTTPS를 허용합니다. |
아웃바운드 | TCP | 2380 | 이 SG | 제어 영역 etcd 복제를 허용합니다. |
아웃바운드 | TCP | 2381 | 이 SG | 제어 영역 etcd 이벤트 복제를 허용합니다. |
아웃바운드 | TCP | 10250 | 노드 풀 SG | 제어 영역에서 Kubelet으로의 연결을 허용합니다. |
노드 풀 보안 그룹
노드 풀 보안 그룹은 제어 영역 및 다른 노드에서의 연결을 허용합니다. AWSNodePool 정의에 보안 그룹 ID를 지정합니다.
유형 | 프로토콜 | 포트 | 주소 | 설명 |
---|---|---|---|---|
인바운드 | TCP | 전체 | 이 SG | pod 간 통신을 허용합니다. |
인바운드 | TCP | 22 | 제어 영역 SG | 제어 영역의 SSH 터널링을 허용합니다(클러스터 v1.20 이하). |
아웃바운드 | TCP | 8132 | 제어 영역 SG | 제어 영역에 대해 Konnectivity 연결을 허용합니다(클러스터 v1.21 이상). |
인바운드 | TCP | 443 | 제어 영역 SG | 제어 영역에서 Kubelet으로의 연결을 허용합니다. |
인바운드 | TCP | 10250 | 제어 영역 SG | 제어 영역에서 Kubelet으로의 연결을 허용합니다. |
아웃바운드 | TCP | 전체 | 이 SG | pod 간 통신을 허용합니다. |
아웃바운드 | TCP | 80 | 0.0.0.0/0 | 아웃바운드 HTTP를 허용합니다. |
아웃바운드 | TCP | 443 | 0.0.0.0/0 | 아웃바운드 HTTPS를 허용합니다. |