將微服務部署到 Kubernetes 叢集

在微服務架構中,每個微服務都會使用輕量型機制 (例如 REST API 要求) 執行簡單的作業,並與從屬端或其他微服務通訊。您可以使用最適合其執行之工作的程式設計語言來編碼每個微服務。以微服務為基礎的應用程式在部署和維護上較為方便。

架構

此參照架構顯示部署為 Oracle Cloud Infrastructure 之 Kubernetes 叢集中 Docker 容器的 Python Flask 和 Redis 微服務。容器會從 Oracle Cloud Infrastructure Registry 提取 Docker 映像檔。

下圖說明此參考架構。

microservices-oci.png 的描述如下
microservices-oci.png 圖解描述

microservices-oci-oracle.zip

架構包含下列元件:

  • 區域

    Oracle Cloud Infrastructure 區域是包含一或多個資料中心 (稱為可用性網域) 的本地化地理區域。區域與其他區域無關,而且大型距離可以區隔 (跨國家或甚至洲)。

  • 可用性網域

    可用性網域是區域內獨立的獨立資料中心。每個可用性網域中的實體資源都會與其他可用性網域中的資源隔離,以提供容錯。可用性網域不會共用基礎設施 (例如電力或散熱冷卻系統) 或內部可用性網域網路。因此,一個可用網域發生故障並不會影響該區域中的其他可用網域。

  • 容錯域

    容錯域是可用性網域內的一組硬體和基礎設施。每個可用性網域都有三個具有獨立電源和硬體的容錯域。當您將資源分配到多個容錯域時,應用程式可能會容許容錯域內的實體伺服器故障、系統維護和電源故障。

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

    VCN 是您在 Oracle Cloud Infrastructure 區域中設定的可自訂軟體定義網路。VCN 就像傳統資料中心網路一樣,可讓您完整控制網路環境。VCN 可以有多個非重疊的 CIDR 區塊,供您在建立 VCN 之後變更。您可以將 VCN 區隔為子網路,子網路範圍可為區域或可用性網域。每個子網路均包含一個未與 VCN 中其他子網路重疊的連續位址範圍。您可以在建立子網路之後變更子網路的大小。子網路可以是公用或專用。

  • Container Engine for Kubernetes

    Oracle Cloud Infrastructure Container Engine for Kubernetes 是一項完全受管理、可擴展的高可用性服務,可用來將容器化應用系統部署至雲端。您可以指定應用程式所需的運算資源,以及 Container Engine for Kubernetes 在現有租用戶的 Oracle Cloud Infrastructure 上佈建這些資源。Container Engine for Kubernetes 使用 Kubernetes 將跨主機叢集的容器化應用程式部署、擴展及管理自動化。

  • 登錄

    Oracle Cloud Infrastructure Registry 是一個 Oracle 管理的登錄檔,可讓您簡化開發至生產環境的工作流程。登錄可讓您輕鬆地儲存、共用和管理開發人工因素,例如 Docker 影像。Oracle Cloud Infrastructure 的高可用性與可擴充性架構可確保您可以可靠地部署和管理應用程式。

建議

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

  • VCN

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

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

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

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

    使用區域子網路。

    為了簡單起見,此架構使用公用子網路代管 Container Engine for Kubernetes。您也可以使用專用子網路。在此情況下,請使用 NAT 閘道來允許從叢集存取公用網際網路。

  • Container Engine for Kubernetes

    在此架構中,工作節點會使用 VM.Standard2.1 資源配置,而且會在 Oracle Linux 上執行。兩個工作節點可用來代管兩個不同的微服務,但您最多可以在每個叢集上建立 1000 個節點。

  • 登錄

    我們使用 Oracle Cloud Infrastructure Registry 作為專用 Docker 登錄以供內部使用,將 Docker 映像檔發送至登錄並從登錄提取。您也可以使用它作為公用 Docker 登錄檔,讓任何具有網際網路存取權的使用者,以及從登錄檔中的公用儲存庫提取影像的適當 URL。

注意事項

  • 擴展性

    您可以根據負載來更新 Kubernetes 叢集中的工作節點數目,以擴展應用程式。同樣地,您可以減少叢集中的工作節點數目來進行擴展。在 Kubernetes 叢集上建立服務時,您可以建立負載平衡器,在指派給該服務的節點之間分配服務流量。

  • 應用程式可用性

    容錯域可在單一可用性網域內提供最佳復原能力。您也可以在多個可用性網域中部署執行相同作業的執行處理或節點。此設計會透過簡介冗餘來移除單一失敗點。

  • 可管理性

    此架構使用兩個微服務。Python Flask 微服務是一種簡單的 Web 應用程式,可執行 CRUD 作業。另一個微服務是 Redis 記憶體內資料庫。Python -Flask 微服務會與 Redis 微服務通訊以擷取資料。

  • 安全

    使用限制誰可存取貴公司 Oracle Cloud Infrastructure 資源和存取方式的原則。

    Container Engine for Kubernetes 已與 Oracle Cloud Infrastructure Identity and Access Management (IAM) 整合。IAM 提供原生 Oracle Cloud Infrastructure 識別功能的簡易驗證。

部署

GitHub 提供部署 OKE 叢集所需的程式碼。此程式碼不會部署微服務。

只要按一下即可將程式碼提取至 Oracle Cloud Infrastructure Resource Manager ,接著建立堆疊並進行部署。或者,您也可以從 GitHub 將程式碼下載到電腦、自訂程式碼,然後使用 Terraform CLI 部署架構。

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

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

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

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

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

變更日誌

此日誌會列出重大變更: