为多个环境部署具有自动 DNS 管理的 Kubernetes 集群
如果没有自动化解决方案,为内部和外部环境(例如开发、测试和生产)管理云 DNS 策略会变得复杂且耗时。理想情况下,您的用户和客户都应该能够导航到域,并且您的 DNS 解决方案应直接指向正确环境的 IP 地址。这种理想的情况是用户友好的,可以防止人为错误。
Kubernetes ExternalDNS 提供了自动化 DNS 解决方案的功能,可帮助用户轻松导航到所需的域,包括高级功能,例如全局负载平衡、自动故障转移、基于 DNS 的流量管理以及内置的安全功能,例如域名系统安全扩展 (Domain Name System Security Extensions,DNSSEC),可帮助防止篡改和欺骗攻击。
此参考架构使用单个 kubernetes 集群部署以及 Oracle Cloud Infrastructure DNS Zones 和 Kubernetes ExternalDNS 来配置专为多个环境设计的 DNS 解决方案。
体系结构
此架构使用部署在 OCI DNS 区域中的 OCI Kubernetes Engine 集群来存储通过负载平衡器公开服务的“A 记录”。在此架构中, OCI Kubernetes Engine (OKE) 集群具有三个 worker 节点和三个不同的名称空间来进行部署隔离。将此体系结构用于使用单个群集而不是多个群集的多环境 OKE 部署。
下图说明了此引用体系结构。
每个环境(开发、测试和生产)都有自己的一组 kubernetes 组件,例如命名空间、pod 和服务。Kubernetes ExternalDNS 允许为外部公开的 kubernetes 服务自动创建和管理 DNS 记录。这样,外部客户机可以更轻松地访问集群中的服务。Kubernetes 组件路由到 Kubernetes ExternalDNS,然后创建指向 OCI 中每个服务负载平衡器的“记录”。
下图说明了此软件体系结构。
该体系结构具有以下组件:
- 区域
Oracle Cloud Infrastructure 区域是包含一个或多个数据中心(称为可用性域)的本地化地理区域。地区独立于其他地区,远距离可以把它们分开(跨越国家甚至大陆)。
- 可用性域
可用性域是区域中的独立数据中心。每个可用性域中的物理资源与其他可用性域中的资源隔离,从而提供容错能力。可用性域不共享电源或冷却设备等基础设施,也不共享内部可用性域网络。因此,一个可用性域出现故障不会影响区域中的其他可用性域。
- 容错域
容错域是可用性域内的一组硬件和基础设施。每个可用性域都有三个容错域,它们具有独立的电源和硬件。在多个容错域之间分配资源时,应用可以承受容错域内的物理服务器故障、系统维护和电源故障。
- 虚拟云网络 (VCN) 和子网
VCN 是一个可定制的软件定义网络,您可以在 Oracle Cloud Infrastructure 区域中设置。与传统的数据中心网络一样,VCN 允许您控制您的网络环境。VCN 可以具有多个不重叠的 CIDR 块,您可以在创建 VCN 后更改这些块。您可以将 VCN 划分为子网,子网可以限定为区域或可用性域。每个子网都包含一系列不与 VCN 中的其他子网重叠的连续地址。可以在创建后更改子网的大小。子网可以是公共子网,也可以是专用子网。
- 负载平衡器
Oracle Cloud Infrastructure Load Balancing 服务提供从单个入口点到后端多个服务器的自动流量分配。
- 安全列表
对于每个子网,可以创建安全规则来指定必须允许进出子网的通信的源、目标和类型。
- OCI Kubernetes 引擎
Oracle Cloud Infrastructure Kubernetes Engine (Kubernetes Engine 或 OKE )是一项完全托管、可扩展的高可用性服务,可用于将容器化应用部署到云中。您可以指定应用所需的计算资源,Kubernetes Engine 在现有租户的 Oracle Cloud Infrastructure 上预配这些资源。OKE 使用 Kubernetes 跨主机集群自动部署、扩展和管理容器化应用。
- DNS
Oracle Cloud Infrastructure 域名系统 (Domain Name System,DNS) 服务是一个高度可扩展的全局任播域名系统 (DNS) 网络,可提供增强的 DNS 性能、可恢复性和可扩展性,以便最终用户随时随地尽快连接到客户应用。
- 公共/专用 DNS 区域
Oracle Cloud Infrastructure DNS 服务支持您管理区域。区域是 DNS 名称空间的一部分。授权开始记录 (Start of Authority,SOA) 定义区域。除非另有说明,否则区域在树中包含其自身下的所有标签。
推荐
- 虚拟云网络 (VCN)
创建 VCN 时,请根据您计划附加到 VCN 中子网的资源数量,确定所需的 CIDR 块数和每个块的大小。使用标准专用 IP 地址空间内的 CIDR 块。
设计子网时,请考虑流量和安全要求。将特定层或角色中的所有资源附加到可以用作安全边界的同一子网。
- 负载平衡器带宽
创建负载平衡器时,您可以选择提供固定带宽的预定义配置,也可以指定定制(灵活)配置,在其中设置带宽范围并允许服务根据流量模式自动扩展带宽。通过任一方法,您都可以在创建负载平衡器后随时更改配置。
注意事项
在单个 OCI Kubernetes Engine 集群中部署多个环境时,请考虑以下事项。
- 安全
考虑使用 Kubernetes 网络策略来隔离名称空间连接,并依靠基于角色的访问控制来控制对名称空间管理的访问。