使用针对多个环境的自动 DNS 管理部署 Kubernetes 集群

如果没有自动化解决方案,管理内部和外部环境的云 DNS 策略(例如开发、测试和生产)会变得复杂而耗时。理想情况下,您的用户和客户都应该能够导航到域,而您的 DNS 解决方案应该指向正确的环境的 IP 地址。这种理想的情况是用户友好的,可以防止人为错误。

Kubernetes ExternalDNS 提供了自动执行 DNS 解决方案的功能,可帮助用户轻松导航到所需的域,包括全局负载平衡、自动故障转移、基于 DNS 的流量管理以及域名系统安全扩展 (Domain Name System Security Extensions,DNSSEC) 等内置安全功能,以帮助防止篡改和欺骗攻击。

此参考架构使用带有 Oracle Cloud Infrastructure DNS 区域和 Kubernetes ExternalDNS 的单个 kubernetes 集群部署来配置专为多个环境设计的 DNS 解决方案。

体系结构

此架构使用部署在 OCI DNS 区域中的 Oracle Cloud Infrastructure Container Engine for Kubernetes (OCI OKE) 集群,通过负载平衡器为暴露的服务保留“A 记录”。在此体系结构中,OKE 群集具有三个 worker 节点和三个用于部署隔离的不同名称空间。将此体系结构用于使用单个群集而不是多个群集的多环境 OKE 部署。

下图说明了此参考体系结构。



多租户 -oke-dns-architecture.zip

每个环境(开发、测试和生产)都有自己的一组 kubernetes 组件,例如名称空间、pod 和服务。Kubernetes ExternalDNS 允许为外部公开的 kubernetes 服务自动创建和管理 DNS 记录。这使得外部客户机更容易访问集群中的服务。kubernetes 组件路由到 Kubernetes ExternalDNS,然后创建指向 OCI 中每个服务负载平衡器的“一条记录”。

下图说明了此软件体系结构。



kubernetes- 外部 -dns.zip

该体系结构具有以下组成部分:

  • 区域

    Oracle Cloud Infrastructure 区域是一个本地化的地理区域,其中包含一个或多个称为可用性域的数据中心。区域独立于其他区域,远距离可以区分它们(跨国家甚至大陆)。

  • 可用性域

    可用性域是区域中的独立数据中心。每个可用性域中的物理资源与其他可用性域中的资源隔离,从而提供容错功能。可用性域不共享基础设施(例如电源或冷却设备),也不共享内部可用性域网络。因此,一个可用性域出现故障不会影响区域中的其他可用性域。

  • 容错域

    容错域是可用性域内硬件和基础设施的一组。每个可用性域具有三个具有独立电源和硬件的故障域。在多个容错域之间分配资源时,应用可以承受容错域内的物理服务器故障、系统维护和电源故障。

  • 虚拟云网络 (VCN) 和子网

    VCN 是您在 Oracle Cloud Infrastructure 区域中设置的可定制软件定义网络。与传统的数据中心网络一样,VCN 允许您完全控制您的网络环境。一个 VCN 可以具有多个不重叠的 CIDR 块,您可以在创建 VCN 后更改这些块。您可以将 VCN 细分为多个子网,这些子网可以限定在某个区域或可用性域中。每个子网包含一系列不与 VCN 中的其他子网重叠的地址。您可以在创建后更改子网的大小。子网可以是公共子网,也可以是专用子网。

  • 负载平衡器

    Oracle Cloud Infrastructure Load Balancing 服务提供从单个入口点到后端多个服务器的自动流量分配。

  • 安全列表

    对于每个子网,您可以创建安全规则来指定必须允许进出子网的通信的源、目的地和类型。

  • 适用于 Kubernetes 的容器引擎

    Oracle Cloud Infrastructure Container Engine for Kubernetes 是一个完全托管、可扩展且高度可用的服务,可用于将容器化应用部署到云端。您可以指定应用所需的计算资源,并且 Container Engine for Kubernetes 可在现有租户的 Oracle Cloud Infrastructure 上预配这些资源。Container Engine for Kubernetes 使用 Kubernetes 自动部署、扩展和管理跨主机集群的容器化应用。

  • DNS

    Oracle Cloud Infrastructure 域名系统 (DNS) 服务是一个高度可扩展的全球任播域名系统 (DNS) 网络,可提供增强的 DNS 性能、可恢复性和可扩展性,让最终用户能够随时随地快速连接到客户的应用。

  • 公共/专用 DNS 区域

    借助 Oracle Cloud Infrastructure DNS 服务,您可以管理区域。区域是 DNS 名称空间的一部分。授权起始记录 (Start of Authority,SAA) 定义区域。除非另有指定,否则区域在其自身下方包含所有标签。

推荐

使用以下建议作为起点。您的要求可能不同于此处所述的体系结构。
  • 虚拟云网络 (VCN)

    创建 VCN 时,根据您计划附加到 VCN 中的子网的资源数确定所需的 CIDR 块数和每个块的大小。使用标准专用 IP 地址空间内的 CIDR 块。

    设计子网时,请考虑流量和安全要求。将特定层或角色内的所有资源连接到同一子网,该子网可以充当安全边界。

  • Load Balancer 带宽

    创建负载平衡器时,您可以选择提供固定带宽的预定义配置,也可以指定定制(灵活)配置来设置带宽范围,并让服务根据流量模式自动缩放带宽。使用任一方法,都可以在创建负载平衡器后随时更改配置。

注意事项

在单个 Oracle Cloud Infrastructure Container Engine for Kubernetes 集群中部署多个环境时,请考虑以下事项。

  • 安全

    考虑使用 Kubernetes 网络策略来隔离名称空间连接,并依赖基于角色的访问控制来控制对名称空间管理的访问。

部署

有关将 Kubernetes ExternalDNS 配置为使用 Oracle Cloud Infrastructure DNS 的说明,请参阅 Oracle Cloud Infrastructure 文档中的“配置 ExternalDNS 以使用 Oracle Cloud Infrastructure DNS”

浏览更多

详细了解如何使用自动 DNS 管理部署 Oracle Container Engine for Kubernetes 集群。

查看以下附加资源:

确认

作者

  • Guido Alejandro Ferreyra