使用適用於多個環境的自動 DNS 管理部署 Kubernetes 叢集

管理內部和外部環境的雲端 DNS 策略 (例如開發、測試和生產),不需要自動化解決方案,即可變得複雜且耗時。理想情況下,您的使用者和客戶都應該能夠瀏覽至網域,而您的 DNS 解決方案應導向正確的環境 IP 位址。這個理想的情境非常容易使用,可以防止人為錯誤。

Kubernetes ExternalDNS 提供自動化 DNS 解決方案的功能,可讓使用者輕鬆瀏覽想要的網域,包括全域負載平衡、自動容錯移轉、DNS 型流量管理以及內建安全功能 (例如網域名稱系統安全擴充 (DNSSEC),以協助防止竄改及詐騙攻擊。

此參考架構使用單一 kubernetes 叢集部署搭配 Oracle Cloud Infrastructure DNS Zones 和 Kubernetes ExternalDNS,以設定專為多個環境設計的 DNS 解決方案。

架構

此架構使用部署在 OCI DNS 區域中的 Oracle Cloud Infrastructure Container Engine for Kubernetes (OCI OKE) 叢集,透過負載平衡器為公開的服務保留「記錄」。在此架構中,OKE 叢集有三個工作節點,以及三個不同的命名空間,可用於建置區隔。對於使用單一叢集而非多個叢集的多環境 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 命名空間的一部分。「啟動授權」記錄 (SOA) 定義區域。除非另有指定,否則區域會包含樹狀結構中本身下方的所有標籤。

建議

使用下列建議作為起點。您的需求可能與此處描述的架構不同。
  • 虛擬雲端網路 (VCN)

    建立 VCN 時,請根據計畫要連附至 VCN 中子網路的資源數目,決定所需的 CIDR 區塊數目和每個區塊的大小。使用標準專用 IP 位址空間內的 CIDR 區塊。

    設計子網路時,請考慮流量和安全性需求。將特定層或角色內的所有資源連附至相同的子網路,以作為安全界限。

  • 負載平衡器頻寬

    建立負載平衡器時,您可以選取提供固定頻寬的預先定義資源配置,或指定自訂 (彈性) 資源配置,供您設定頻寬範圍,並讓服務根據流量模式自動調整頻寬。無論使用哪一種方法,您都可以在建立負載平衡器後隨時變更資源配置。

注意事項

在單一 Oracle Cloud Infrastructure Container Engine for Kubernetes 叢集中部署多個環境時,請考慮下列事項。

  • 安全

    請考慮使用 Kubernetes 網路原則來區隔命名空間連線,並使用以角色為基礎的存取控制來控制命名空間管理的存取。

部署

如需將 Kubernetes ExternalDNS 設定為使用 Oracle Cloud Infrastructure DNS 的指示,請參閱 Oracle Cloud Infrastructure 文件中的 "Configuring ExternalDNS to use Oracle Cloud Infrastructure DNS"

探索更多

深入瞭解如何使用自動 DNS 管理部署 Oracle Container Engine for Kubernetes 叢集。

複查下列其他資源:

認可

作者

  • Guido Alejandro Ferreyra