在連線至 Autonomous Database 的 Kubernetes 部署微服務型應用程式

身為開發人員或應用程式管理員,當您設計與管理雲端原生應用程式時,您需要易於佈建與維護的基礎架構,並讓您專注於設計與業務目標。OCI Kubernetes 引擎 (OKE) 可讓您在雲端部署和執行高可用性且可擴展的微服務型應用程式。

架構

在微服務架構中,每個微服務都會執行簡單的工作,並使用輕量型機制 (例如 REST API 要求) 與從屬端或其他微服務進行通訊。

此參考架構適用於電子商務應用程式,此應用程式由多個部署為 Kubernetes 叢集中 Docker 容器的多語言微服務組成。使用 Oracle Autonomous Transaction Processing 資料庫實現資料持續性。電子商務應用程式的媒體和影像檔儲存在 Oracle Cloud Infrastructure Object Storage 中。

下圖說明架構。



mushop- 基礎架構 -oracle.zip

架構具有下列元件:

  • 地區

    Oracle Cloud Infrastructure 區域是一個本地化地理區域,其中包含一或多個代管可用性網域的資料中心。區域獨立於其他區域,而廣大的距離可以將其分開 (跨國家或大陸)。

  • 可用性網域

    可用性網域是區域內的獨立獨立資料中心。每個可用性網域中的實體資源會與其他可用性網域中的資源隔離,以提供容錯能力。可用性網域不會共用基礎架構,例如電源或冷卻系統,也不會共用內部可用性網域網路。因此,一個可用性網域的故障不應影響該區域中的其他可用性網域。

  • 容錯域

    容錯域結合了可用性網域內的硬體和基礎架構。每個可用性網域都有三個具有獨立電源和硬體的容錯域。OCI Kubernetes 引擎可跨多個容錯域處理叢集中節點的分佈。因此,您的容器化應用程式可防止容錯域內的實體伺服器故障、系統維護和電源故障。

  • 虛擬雲端網路 (VCN) 和子網路

    VCN 是您在 Oracle Cloud Infrastructure 區域中設定的可自訂軟體定義網路。與傳統的資料中心網路一樣,VCN 可讓您控制網路環境。VCN 可以有多個非重疊的 CIDR 區塊,您可以在建立 VCN 之後變更。您可以將 VCN 區隔成子網路,此子網路可以設定區域範圍或可用性網域。每個子網路都是由連續的位址範圍組成,這些位址不會與 VCN 中的其他子網路重疊。您可以在建立子網路後變更其大小。子網路可以是公用或專用。

  • 服務閘道

    服務閘道可讓您從 VCN 存取其他服務,例如 Oracle Cloud Infrastructure Object Storage 。從 VCN 到 Oracle 服務的流量會透過 Oracle 網路結構傳送,不會周遊網際網路。

  • 網路位址轉譯 (NAT) 閘道

    NAT 閘道可讓 VCN 中的專用資源存取網際網路上的主機,而不會對內送網際網路連線公開這些資源。

  • 網際網路閘道

    網際網路網關允許 VCN 中公共子網路與公共網際網路之間的流量。

  • Autonomous Transaction Processing

    Oracle Autonomous Transaction Processing 是一種自主驅動、自主防護、自主修復的資料庫服務,已針對交易處理工作負載進行最佳化。您不需要設定或管理任何硬體,也不需要安裝任何軟體。Oracle Cloud Infrastructure 可處理資料庫的建立、備份、修補、升級和調校。

  • 物件儲存

    OCI Object Storage 可讓您存取任何內容類型的大量結構化和非結構化資料,包括資料庫備份、分析資料,以及影像和影片等豐富內容。您可以直接從網際網路或雲端平台內安全地儲存資料。您可以擴展儲存體,而不會發生任何效能或服務可靠性的降低問題。

    在此架構中,應用程式的媒體資產儲存在 Oracle Cloud Infrastructure Object Storage 中,並儲存在標準儲存類別的儲存桶中。

  • Kubernetes 引擎

    Oracle Cloud Infrastructure Kubernetes Engine ( OCI Kubernetes 引擎OKE) 是完全託管、可擴展且高可用性的服務,可用來將容器化應用程式部署到雲端。您可以指定應用程式所需的運算資源,而 Kubernetes 引擎則會在現有租用戶的 Oracle Cloud Infrastructure 上佈建這些資源。OKE 使用 Kubernetes 將跨主機叢集的容器化應用程式部署、調整規模及管理自動化。

    下圖顯示此架構中容器化微服務之間的互動:



    mushop-infrastructure-expand-oracle.zip

    公用網際網路的流量會由 DNS 服務透過 Web 應用程式防火牆 (WAF) 遞送至負載平衡器,以將內送要求轉送至傳入 (Nginx) 微服務。傳入微服務會將流量傳送至路由器 (Traefik) 微服務。根據要求的性質,路由器微服務會將它們路由到應用程式中適當的微服務。除了與其他微服務互動之外,許多微服務也與 Oracle Cloud Infrastructure 服務互動: OCI Object StorageOCI API GatewayOCI FunctionsOCI Email DeliveryOCI StreamingOracle Autonomous Database

建議

使用下列建議作為起點。您的需求可能與此處描述的架構不同。
  • VCN

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

    選取未與您要設定專用連線的任何其他網路重疊的 CIDR 區塊 (在 Oracle Cloud Infrastructure 中、您的內部部署資料中心或其他雲端提供者)。

    建立 VCN 之後,您可以變更、新增及移除其 CIDR 區塊。

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

    使用區域子網路。

    附註:

    實作此架構的 Terraform 程式碼會佈建 Oracle 服務網路中的 Oracle Autonomous Transaction Processing 資料庫。如果您偏好只公開資料庫的專用端點,則可以調整 Terraform 程式碼,將資料庫連附至專用子網路,如架構圖所示。
  • OCI Kubernetes 引擎

    在此架構中,Kubernetes 叢集中的工作節點會使用 VM.Standard2.1 資源配置,並在 Oracle Linux 上執行。您最多可以在叢集中建立 1000 個節點。

注意事項

實作此架構時,請考量下列參數的需求:

  • 擴展性

    您可以根據負載更新 Kubernetes 叢集中的工作節點數目,藉此橫向擴展應用程式。同樣地,您可以減少叢集中的工作節點數目來縮減。當您在 Kubernetes 叢集上建立服務時,您可以建立負載平衡器,將服務流量分配給指定給服務的節點。此架構使用負載平衡器來處理內送要求。

  • 應用程式可用性

    容錯域在單一可用性網域內提供抗逆力。您也可以部署在多個可用性網域中執行相同作業的執行處理或節點。此設計透過引入冗餘來移除單一失敗點。在此架構中,Oracle Cloud Infrastructure Kubernetes Engine 負責將節點分散到可用性網域內的容錯域,以及管理 Kubernetes 叢集內可用節點間的微服務分配。

  • 管理功能

    所有微服務都使用 Docker 容器化。這些映像檔會儲存在 Oracle Cloud Infrastructure Registry 服務中。部署是使用 Terraform 自動化的,此部署也會部署其他通用服務,例如 Grafana、Prometheus 和 Helm 圖表。

    您可以使用其他 Oracle Cloud Infrastructure 服務 (例如 OCI API GatewayOCI FunctionsOCI Email Delivery) 來管理後端 API,以及啟用產品相關電子報或電子郵件訂閱。

  • 安全

    OCI Kubernetes 引擎Oracle Cloud Infrastructure Identity and Access Management (IAM) 整合,提供使用原生識別功能的簡易驗證。使用 IAM 原則控制可存取資源的人員及其可執行的動作。

    請考慮使用 Oracle Cloud Infrastructure Web Application Firewall (WAF) 來保護應用程式免於公用網際網路的惡意流量。

    您可以使用 Oracle Cloud Infrastructure Streaming 服務來串流和記錄應用程式層級事件。

    若要保護您的 Kubernetes 加密密碼,您可以將它們儲存在保存庫中,或使用您在 Oracle Cloud Infrastructure Vault 服務中維護的金鑰加密加密加密加密密碼。Kubernetes 叢集可透過 VCN 的服務閘道以私密方式存取保存庫、金鑰及加密密碼,無須向公用網際網路公開存取要求。您在 Oracle Cloud Infrastructure Identity and Access Management 中定義的原則可控管對保存庫的存取。Oracle Cloud Infrastructure Audit 服務可讓您監控和追蹤保存庫受保護金鑰和加密密碼的使用狀況。

部署

GitHub 中提供部署此參考架構所需的代碼。只要按一下即可將程式碼提取至 Oracle Cloud Infrastructure Resource Manager ,然後建立堆疊並進行部署。或者,將程式碼從 GitHub 下載至您的電腦、自訂程式碼,然後使用 Terraform CLI 部署架構。

  • 使用 Oracle Cloud Infrastructure Resource Manager 進行部署:
    1. 按一下 部署至 Oracle Cloud

      如果您尚未登入,請輸入租用戶和使用者證明資料。

    2. 複查並接受條款與條件。
    3. 選取要在其中部署堆疊的區域。
    4. 依照螢幕上的提示和指示建立堆疊。
    5. 建立堆疊之後,按一下 Terraform 動作,然後選取計畫
    6. 等待工作完成,然後複查計畫。

      若要進行任何變更,請返回「堆疊詳細資訊」頁面,按一下編輯堆疊,然後進行必要的變更。然後,再次執行計畫 (Plan) 動作。

    7. 如果不需要進一步變更,請返回「堆疊詳細資訊」頁面,按一下 Terraform 動作,然後選取套用
  • 使用 Terraform CLI 部署:
    1. 請前往 GitHub
    2. 下載程式碼或複製至本機電腦。
    3. 請依照 deploy/complete/README.md 中的指示操作。

變更日誌

此日誌僅列出重大變更: