共用方式為


將 eShopOnContainers 部署至 Azure

小提示

此內容摘錄自適用於 Azure 的電子書《架構雲端原生 .NET 應用程式》,該書可在 .NET Docs 上閱讀,或以 PDF 格式免費下載並離線閱讀。

Azure 電子書的雲端原生 .NET 應用程式封面縮圖。

eShopOnContainers 應用程式可以部署到各種 Azure 平臺。 建議的方法是將應用程式部署至 Azure Kubernetes Services (AKS)。 Helm 是 Kubernetes 部署工具,可用來減少部署複雜度。 或者,開發人員可以實作適用於 Kubernetes 的 Azure Dev Spaces,以簡化其開發程式。

Azure Kubernetes Service

若要在 AKS 中裝載 eShop,第一個步驟是建立 AKS 叢集。 若要這樣做,您可以使用 Azure 入口網站,以逐步引導您完成必要的步驟。 您也可以從 Azure CLI 建立叢集,並小心啟用 Role-Based 訪問控制 (RBAC) 和應用程式路由。 eShopOnContainers 的文件詳細說明建立您自己的 AKS 叢集的步驟。 建立之後,您可以從 Kubernetes 儀錶板存取和管理叢集。

您現在可以使用 Helm 將 eShop 應用程式部署到叢集。

使用 Helm 部署至 Azure Kubernetes Service

Helm 是直接搭配 Kubernetes 使用的應用程式套件管理員工具。 其可協助您定義、安裝及升級 Kubernetes 應用程式。 雖然可以使用自訂的 CLI 腳本或簡單的部署檔案,將簡單的應用程式部署到 AKS,但在面對包含許多 Kubernetes 物件的複雜應用程式時,Helm 可以發揮更大的作用。

使用 Helm 時,應用程式會包含稱為 Helm 圖表的文字型組態檔,以宣告方式描述 Helm 套件中的應用程式和組態。 圖表會使用標準 YAML 格式的檔案來描述一組相關的 Kubernetes 資源。 它們會與所描述的應用程式程式代碼一起進行版本設定。 Helm 圖表的範圍從簡單到複雜,取決於其描述的安裝需求。

Helm 是由命令行用戶端工具所組成,此工具會取用 helm 圖表,並將命令啟動至名為 Tiller 的伺服器元件。 Tiller 會與 Kubernetes API 通訊,以確保容器化工作負載的正確布建。 Helm 是由雲端原生運算基礎所維護。

下列 yaml 檔案會顯示 Helm 範本:

apiVersion: v1
kind: Service
metadata:
  name: {{ .Values.app.svc.marketing }}
  labels:
    app: {{ template "marketing-api.name" . }}
    chart: {{ template "marketing-api.chart" . }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
spec:
  type: {{ .Values.service.type }}
  ports:
    - port: {{ .Values.service.port }}
      targetPort: http
      protocol: TCP
      name: http
  selector:
    app: {{ template "marketing-api.name" . }}
    release: {{ .Release.Name }}

請注意範本如何描述一組動態索引鍵/值組。 叫用範本時,以大括弧括住的值會從其他 yaml 型組態檔提取。

您會在 /k8s/helm 資料夾中找到 eShopOnContainers 的 Helm 圖表。 圖 2-6 顯示如何將應用程式的各個元件組織成一個資料夾結構,該結構由 Helm 用於定義與管理部署作業。

eShopOnContainers helm 資料夾 圖 2-6。 eShopOnContainers helm 資料夾。

每個個別元件都是使用 helm install 命令來安裝。 eShop 包含一個「全部部署」腳本,該腳本會循環使用各自的 Helm Chart,並安裝元件。 結果是一個可重複的流程,與應用程式一起在原始碼控制中進行版本管理,小組中的任何人都可以使用一行指令腳本部署到 AKS 叢集。

備註

Helm 第 3 版正式取消對 Tiller 伺服器組件的需求。 如需這項增強功能的詳細資訊,請參閱 Helm 3 中為何遺漏 Tiller?

Azure Functions 和 Logic Apps (無伺服器)

eShopOnContainers 範例包含追蹤在線營銷活動的支援。 Azure 函式可用來追蹤指定活動 ID 的行銷活動詳細資訊。 比起建立完整的微服務,單一 Azure 函式更簡單且足夠。 Azure Functions 具有簡單的建置和部署模型,特別是在 Kubernetes 中設定為執行時。 部署函式是使用 Azure Resource Manager (ARM) 範本和 Azure CLI 撰寫腳本。 此營銷活動服務不直接面向客戶,而且會調用單一操作,因此非常適合使用 Azure Functions。 函式需要最少的組態,包括資料庫連接字串數據和映像基底 URI 設定。 您可以在 Azure 入口網站中設定 Azure Functions。