本主题介绍了 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 | 允许通过 HTTPS 从 AWS VPC 连接。 |
入站 | 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 替换为在其中运行 GKE on AWS 安装的 AWS EC2 区域。例如 us-west-1.ec2.archive.ubuntu.com/
。
如果您是将 Cloud Service Mesh 与 Prometheus 和 Kiali 搭配使用,请允许从以下网域进行出站访问:
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 隧道连接到节点池(适用于 1.20 版及更低版本的集群)。 |
入站 | TCP | 8132 | 节点池 SG | 允许从节点池进行 Konnectivity 连接(适用于 1.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 到 pod 的通信。 |
入站 | TCP | 22 | 控制层面 SG | 允许从控制平面进行 SSH 隧道传输(适用于 1.20 版及更低版本的集群)。 |
出站 | TCP | 8132 | 控制层面 SG | 允许与控制平面建立 Konnectivity 连接(适用于 1.21 版及更高版本的集群)。 |
入站 | TCP | 443 | 控制层面 SG | 允许从控制层面连接到 Kubelet。 |
入站 | TCP | 10250 | 控制层面 SG | 允许从控制层面连接到 Kubelet。 |
出站 | TCP | 全部 | 此 SG | 允许 pod 到 pod 的通信。 |
出站 | TCP | 80 | 0.0.0.0/0 | 允许出站 HTTP。 |
出站 | TCP | 443 | 0.0.0.0/0 | 允许出站 HTTPS。 |