7.3. 关于使用自定义 VPC
在 OpenShift Container Platform 4.12 中,您可以在 Amazon Web Services(AWS)的现有 Amazon Virtual Private Cloud(VPC)中将集群部署到现有子网中。通过将 OpenShift Container Platform 部署到现有的 AWS VPC 中,您可能会避开新帐户中的限制,或者更容易地利用公司所设置的操作限制。如果您无法获得您自己创建 VPC 所需的基础架构创建权限,请使用这个安装选项。
因为安装程序无法了解您现有子网中还有哪些其他组件,所以无法选择子网 CIDR 。您必须为安装集群的子网配置网络。
7.3.1. 使用 VPC 的要求
安装程序不再创建以下组件:
- 互联网网关
- NAT 网关
- 子网
- 路由表
- VPCs
- VPC DHCP 选项
- VPC 端点
安装程序要求您使用由云提供的 DNS 服务器。不支持使用自定义 DNS 服务器,并导致安装失败。
如果使用自定义 VPC,您必须为安装程序和集群正确配置它及其子网。有关创建和管理 AWS VPC VPC 的更多信息,请参阅 AWS 文档中的 Amazon VPC 控制台向导配置以及处理 VPC 和子网。
安装程序无法:
- 分割网络范围供集群使用。
- 设置子网的路由表。
- 设置 VPC 选项,如 DHCP。
您必须在安装集群前完成这些任务。有关在 AWS VPC 中配置网络的更多信息,请参阅 VPC 的 VPC 网络组件和您的 VPC 的路由表。
您的 VPC 必须满足以下特征:
VPC 不能使用
kubernetes.io/cluster/.*: owned
,Name
, 和openshift.io/cluster
标签。安装程序会修改子网以添加
kubernetes.io/cluster/.*: shared
标签,因此您的子网必须至少有一个可用的空闲标签插槽。请参阅 AWS 文档中的 标签限制 部分,以确认安装程序可以为您指定的每个子网添加标签。您不能使用Name
标签,因为它与 EC2Name
字段重叠,且安装失败。您需要在您的 VPC 中启用
enableDnsSupport
和enableDnsHostnames
属性,以便集群可以使用附加到 VPC 中的 Route 53 区来解析集群内部的 DNS 记录。请参阅 AWS 文档中的您的 VPC 中的 DNS 支持部分 。如果要使用您自己的 Route 53 托管私有区,您必须在安装集群前将现有托管区与 VPC 相关联。您可以使用
install-config.yaml
文件中的platform.aws.hostedZone
字段定义托管区。
如果您在断开连接的环境中工作,则无法访问 EC2、ELB 和 S3 端点的公共 IP 地址。根据您要在安装过程中限制互联网流量的级别,有以下配置选项:
选项 1:创建 VPC 端点
创建 VPC 端点,并将其附加到集群使用的子网。将端点命名为如下:
-
ec2.<aws_region>.amazonaws.com
-
elasticloadbalancing.<aws_region>.amazonaws.com
-
s3.<aws_region>.amazonaws.com
通过这个选项,网络流量在 VPC 和所需的 AWS 服务之间保持私有。
选项 2:创建一个没有 VPC 端点的代理
作为安装过程的一部分,您可以配置 HTTP 或 HTTPS 代理。使用此选项时,互联网流量会通过代理访问所需的 AWS 服务。
选项 3:创建带有 VPC 端点的代理
作为安装过程的一部分,您可以使用 VPC 端点配置 HTTP 或 HTTPS 代理。创建 VPC 端点,并将其附加到集群使用的子网。将端点命名为如下:
-
ec2.<aws_region>.amazonaws.com
-
elasticloadbalancing.<aws_region>.amazonaws.com
-
s3.<aws_region>.amazonaws.com
在 install-config.yaml
文件中配置代理时,将这些端点添加到 noProxy
字段。通过这个选项,代理会阻止集群直接访问互联网。但是,您的 VPC 和所需的 AWS 服务之间网络流量保持私有。
所需的 VPC 组件
您必须提供合适的 VPC 和子网,以便与您的机器通信。
组件 | AWS 类型 | 描述 | |
---|---|---|---|
VPC |
| 您必须提供一个公共 VPC 供集群使用。VPC 使用引用每个子网的路由表的端点,以改进与托管在 S3 中的 registry 的通信。 | |
公共子网 |
| 您的 VPC 必须有 1 到 3 个可用区的公共子网,并将其与适当的入口规则关联。 | |
互联网网关 |
| 您必须有一个公共互联网网关,以及附加到 VPC 的公共路由。在提供的模板中,每个公共子网都有一个具有 EIP 地址的 NAT 网关。这些 NAT 网关允许集群资源(如专用子网实例)访问互联网,而有些受限网络或代理场景则不需要它们。 | |
网络访问控制 |
| 您必须允许 VPC 访问下列端口: | |
端口 | 原因 | ||
| 入站 HTTP 流量 | ||
| 入站 HTTPS 流量 | ||
| 入站 SSH 流量 | ||
| 入站临时流量 | ||
| 出站临时流量 | ||
专用子网 |
| 您的 VPC 可以具有私有子网。提供的 CloudFormation 模板可为 1 到 3 个可用区创建专用子网。如果您使用专用子网,必须为其提供适当的路由和表。 |
7.3.2. VPC 验证
要确保您提供的子网适合您的环境,安装程序会确认以下信息:
- 您指定的所有子网都存在。
- 您提供了私有子网。
- 子网 CIDR 属于您指定的机器 CIDR。
- 您为每个可用区提供子网。每个可用区不包含多于一个的公共子网和私有子网。如果您使用私有集群,为每个可用区只提供一个私有子网。否则,为每个可用区提供一个公共和私有子网。
- 您可以为每个私有子网可用区提供一个公共子网。机器不会在没有为其提供私有子网的可用区中置备。
如果您销毁使用现有 VPC 的集群,VPC 不会被删除。从 VPC 中删除 OpenShift Container Platform 集群时,kubernetes.io/cluster/.*: shared
标签会从使用它的子网中删除。
7.3.3. 权限划分
从 OpenShift Container Platform 4.3 开始,您不需要安装程序置备的基础架构集群部署所需的所有权限。这与您所在机构可能已有的权限划分类似:不同的个人可以在您的云中创建不同的资源。。例如,您可以创建针对于特定应用程序的对象,如实例、存储桶和负载均衡器,但不能创建与网络相关的组件,如 VPC 、子网或入站规则。
您在创建集群时使用的 AWS 凭证不需要 VPC 和 VPC 中的核心网络组件(如子网、路由表、互联网网关、NAT 和 VPN)所需的网络权限。您仍然需要获取集群中的机器需要的应用程序资源的权限,如 ELB 、安全组、S3 存储桶和节点。
7.3.4. 集群间隔离
如果您将 OpenShift Container Platform 部署到现有网络中,集群服务的隔离将在以下方面减少:
- 您可以在同一 VPC 中安装多个 OpenShift Container Platform 集群。
- 整个网络允许 ICMP 入站流量。
- 整个网络都允许 TCP 22 入站流量 (SSH)。
- 整个网络都允许 control plane TCP 6443 入站流量 (Kubernetes API)。
- 整个网络都允许 control plane TCP 22623 入站流量 (MCS) 。