將 eShopOnContainers 部署至 Azure
eShopOnContainers 應用程式可以部署到各種 Azure 平台。 建議的方法是將應用程式部署至 Azure Kubernetes Services (AKS)。 Helm 是 Kubernetes 部署工具,可用來降低部署複雜度。 開發人員可以選擇性地實作適用於 Kubernetes 的 Azure Dev Spaces,以簡化其開發流程。
Azure Kubernetes Service
若要在 AKS 中裝載 eShop,第一個步驟是建立 AKS 叢集。 若要這樣做,您可以使用 Azure 入口網站,這會引導您完成必要的步驟。 您也可以從 Azure CLI 建立叢集,其負責啟用角色型存取控制 (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 用來定義和管理部署的資料夾結構。
圖 2-6。 eShopOnContainers Helm 資料夾。
每個個別元件都會使用 helm install
命令來安裝。 eShop 包含 "deploy all" 指令碼,其會迴圈使用其各自的 Helm 圖表來安裝元件。 結果是可重複的流程,使用原始程式碼控制中的應用程式建立版本,讓小組上的任何人都可以使用單行指令碼命令部署至 AKS 叢集。
請注意,Helm 第 3 版正式移除 Tiller 伺服器元件的需求。 如需這項增強功能的詳細資訊,請參閱此處。
Azure Functions 和 Logic Apps (無伺服器)
eShopOnContainers 範例包含追蹤線上行銷活動的支援。 Azure Function 可用來追蹤指定行銷活動識別碼的行銷活動詳細資料。 單一 Azure Function 比建立完整的微服務更為簡單且足夠。 Azure Functions 具有簡單的建置和部署模型,特別是設定為在 Kubernetes 中執行時。 部署函式是使用 Azure Resource Manager (ARM) 範本和 Azure CLI 編寫指令碼。 此行銷活動服務不用面向客戶,而且只叫用單一作業,使其成為 Azure Functions 的絕佳候選項目。 函式有最低設定的需求,其中包括資料庫連接字串資料和映像基礎 URI 設定。 您可以在 Azure 入口網站中設定 Azure Functions。