共用方式為


結合容器和無伺服器方法

提示

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

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

雲端原生應用程式通常會實作使用容器和應用程式的服務。 經常有機會可以將某些應用程式的服務公開為 Azure Functions。 不過,將雲端原生應用程式部署至 Kubernetes 後,最好是在這個相同的工具組中使用 Azure Functions。 幸好,您可以將 Azure Functions 包裝在 Docker 容器內,並使用與其餘 Kubernetes 型應用程式相同的流程和工具加以部署。

何時應使用容器與無伺服器?

您的 Azure Function 對其部署平台完全不了解。 在某些情況下,您可能會有特定需求,而且需要自訂執行函式程式碼的環境。 您將需要自訂映像,以支援預設映像不支援的相依性或設定。 在這些情況下,應在自訂 Docker 容器中部署您的函式。

何時應避免使用容器搭配 Azure Functions?

如果您想要使用使用量計費,則不能在容器中執行函式。 此外,如果您將函式部署至 Kubernetes 叢集,您將無法再使用 Azure Functions 所提供的內建調整功能。 您將需要使用 Kubernetes 的調整功能,如本章稍早所述。

如何結合無伺服器和 Docker 容器

若要將 Azure Function 包裝在 Docker 容器中,請安裝 Azure Functions Core Tools,然後執行下列命令:

func init ProjectName --worker-runtime dotnet --docker

建立專案時,它會包含 Dockerfile 和設定為 dotnet 的背景工作角色執行階段。 現在,您可以在本機建立及測試函式。 請使用 docker builddocker run 命令來建置和執行函式。 如需使用 Docker 支援開始建置 Azure Functions 的詳細步驟,請參閱使用自訂映像在 Linux 上建立函式教學課程。

如何使用 KEDA 結合無伺服器和 Kubernetes

在本章中,您已了解 Azure Functions 的平台會自動擴增以符合需求。 不過,將容器化函式部署至 AKS 時,您會失去內建的調整功能。 如需協助,請參閱 Kubernetes-based Event Driven (KEDA)。 它可針對 啟用更精細的自動調整 event-driven Kubernetes workloads,包括容器化函式。

KEDA 會將事件驅動的調整功能提供給 Docker 容器中的 Functions 執行階段。 KEDA 可以從零個執行個體 (未發生任何事件時) 擴增至 n instances 個,視負載而定。 它可以向 Kubernetes 自動調整程式公開自訂計量 (水平 Pod 自動調整程式),以啟用自動調整功能。 搭配 KEDA 使用 Functions 容器,便可在任何 Kubernetes 叢集中複寫無伺服器函式功能。

值得注意的是,KEDA 專案現在是由雲端原生運算基金會 (Cloud Native Computing Foundation ,CNCF) 管理。