編輯

共用方式為


使用 Azure Kubernetes Service 建置NCF 專案

Azure Kubernetes Service (AKS)

本文說明如何在部署 Azure Kubernetes Service (AKS) 之後,概念化、架構、建置及部署使用來自 雲端原生運算基礎 (NCF) 的專案的應用程式。 此架構描述 GitHub 上的NCF 項目應用程式 。 存放庫中的安裝指示提供部署架構的步驟。

架構

顯示建置NCF項目的參考架構架構圖表。

下載此架構的 Visio 檔案。

工作負載是簡單的 Web 應用程式,員工可用來提交和檢視費用報告。 當員工提交費用報告時,員工經理會收到電子郵件。

工作流程

應用程式流程

1. 員工透過 NGINX 輸入存取 Web 應用程式以提交費用。

2.Web 應用程式會呼叫 API 應用程式來擷取員工的經理。

3. Web 應用程式會將建立費用報表所產生的訊息推送至 Knative 訊息代理程式。

4. 費用報告會儲存在 MySQL 中。

5.Knative 會以費用訊息作為承載來觸發電子郵件發送器函式。

6. 電子郵件發送器會建立 SendGrid 訊息。

7. SendGrid 會將電子郵件傳送給擷取的管理員以供檢閱。

DevOps 流程

a. 開發人員在 Visual Studio Code 撰寫或更新程式代碼。

b. 開發人員會將程式代碼從 Visual Studio Code 中的本機工作區推送至 GitHub。

c. Github Webhook 會觸發複製 GitHub 程式代碼的 Tekton 管線。

d. 管線會建置和推送容器映射至 Harbor 登錄。

e. Tekton 會部署 Web 應用程式、API 應用程式和電子郵件發送器應用程式。

f. Prometheus 會擷取應用程式計量。

.g 工程師會監視 Grafana 儀錶板上的計量。

h. DevOps 工程師會監視 Grafana 儀錶板。

基礎結構

i. 以 AKS 基準中呈現的基礎結構為基礎的 AKS 叢集。

ii. 用於叢集記憶體的 Rook Ceph。

iii. Linkerd 服務網格。

iv. Jaeger 用於 Kubernetes 叢集上的整體應用程式追蹤。

叢集作業

您可能會發現使用 GitOps 管理來管理叢集和叢集啟動載入會很有説明。 Flux 是熱門的 GitOps 操作員。 它通常會與 GitHub Actions 配對,以啟用更新指令清單和 Helm 圖表的驗證。

元件

Azure

開放原始碼軟體

  • Kubernetes NCF。 自動化容器化應用程式的部署、調整和管理。
  • Flux。 NCF。 用於基礎結構傳遞的 GitOps 提供者。
  • 新秀 NCF。 提供叢集的記憶體管理。
  • 。 NCF。 映像的容器登錄。
  • Linkerd。 NCF。 與 OpenFaaS、NGINX、Prometheus 和 Jaeger 整合的服務網格。
  • Prometheus。 NCF。 擷取應用程式計量。
  • 傑格 NCF。 在 Kubernetes 叢集上提供整體應用程式追蹤。
  • Knative。 NCF。 用來建置無伺服器和事件驅動應用程式。 部署電子郵件發送器函式。
  • MySQL。 儲存費用報表的資料庫。
  • NGINX。 員工用來存取 Web 應用程式的 Kubernetes 輸入控制器,以提交費用報告。
  • 泰克頓 持續傳遞基礎專案,用於持續整合/持續部署(CI/CD)。 部署 Web 應用程式、API 應用程式和電子郵件發送器應用程式。
  • Grafana。 應用程式計量的儀錶板。
  • SendGrid。 傳送郵件給經理以進行費用報表檢閱的外部電子郵件服務。
  • GitHub。 程序代碼存放庫。 Tekton 管線使用 GitHub 程式代碼。
  • .NET Core。 用於 Web 前端和 Web API。
  • Flux。 提供 GitOps 管理。

替代項目

此專案使用NCF畢業和孵化專案。 使用的服務可能會有多個替代方案。 如需替代方案, 請參閱NCF 網站。 以下是一些描述其中一些資源的資源:

您可以將各種 Azure 服務視為替代方案。 例如,Web 應用程式路由、Azure Container Registry、Azure Container 儲存體、Azure 監視器、適用於 Prometheus 的 Azure 監視器受控服務、Azure 受控 Grafana。

Microsoft 也支援開放原始碼軟體專案作為 AKS 中的 Managed Addons/Derived 專案,包括 Nginx、Istio、Prometheus、Grafana 和 OpenEBS。

案例詳細資料

您可以在任何 Kubernetes 叢集上部署此架構,而不只是 AKS。 它提供 AKS 平台彈性的其中一個範例。 AKS 可讓您輕鬆地在 Azure 中部署受控 Kubernetes 叢集。

檢閱本文之後,您將能充分瞭解如何部署一般應用程式,這些應用程式大部分是由NCF專案所組成。

潛在使用案例

這些其他使用案例具有類似的設計模式:

  • 建立容器型工作負載的 CI/CD 管線
  • 使用 GitOps for AKS

考量

這些考量能實作 Azure Well-Architected Framework 的要素,其為一組指導原則,可以用來改善工作負載的品質。 如需詳細資訊,請參閱 Microsoft Azure Well-Architected Framework (部分機器翻譯)。

  • 針對 Kubernetes 叢集,您至少需要具有虛擬機 (VM) SKU DS2_v2或更大的 3 節點使用者節點集區。
  • 使用 Azure 受控磁碟的磁碟區無法跨區域連結。 它們必須位於相同的區域。
  • 新秀安裝可能需要 20 到 25 分鐘的時間。 請確定 Ceph 叢集已完全布建,再繼續進行下一個步驟。
  • Jaeger 設定大約需要 5 分鐘。
  • 鏈接器大約需要 12 分鐘的時間才能出現在儀錶板中。

成本最佳化

成本最佳化是關於考慮如何減少不必要的費用,並提升營運效率。 如需詳細資訊,請參閱成本最佳化要素的概觀

您可以使用 Azure 定價計算機 來預估成本。 以下是在 Azure 中執行此專案的一些定價考慮。 適用可忽略的頻寬成本。

虛擬機器擴展集

用於 AKS 叢集的 Azure 虛擬機器擴展集 VM 會產生費用。 如需詳細資訊,請參閱 虛擬機器擴展集 定價

儲存體

儲存體 成本適用於 Rook 安裝所需的每個數據磁碟。 針對此 3 節點 AKS 叢集,Rook 組態會針對每個節點使用兩個數據磁碟:1 GB 磁碟和 200 GB 的磁碟。 如需詳細資訊,請參閱 儲存體 成本定價

負載平衡器

與此 AKS 叢集相關聯的負載平衡器會產生費用。 如需詳細資訊,請參閱負載平衡器定價

虛擬網路

AKS 叢集所使用的虛擬網路會產生費用。 如需詳細資訊,請參閱虛擬網路價格

部署此案例

Azure/cloud-native-app GitHub 存放庫部署此案例。 請遵循所提供順序中的設定指示,在您的環境中部署NCF項目應用程式。

此存放庫是社群專案。 它會接受並核准提取要求(PR),以取得社群的增強功能和修改。

下一步