集成Dapr的 Azure 容器應用


微軟在 Ignite 2021 大會上發布了預覽版的Azure Container Apps,這是一個完全托管的無服務器容器運行時,用於大規模構建和運行現代應用程序。從2021 年 11 月 2 日起,Azure 容器應用程序可在公共預覽中使用。雖在服務到達 GA 之前,Azure Container Apps 可能會發生變化。因此我們可以用來學習,不建議用於生產。

Azure Container Apps是什么?

image

  • kubernetes 是目前最為強大的應用程序平台調度器,然而他很復雜,有着陡峭的學習曲線,雲原生計算基金會(CNCF)聯合Linux基金會推出了皆在考察相關從業者對Kubernetes的開發知識了解程度的認證考試Certified Kubernetes Application Developer (CKAD),通過CKAD考試后,持證者即被認可能夠為Kubernetes設計、構建、配置和部署雲原生應用,在Kubernetes中能夠定義應用程序資源,使用核心功能構建、監控和診斷可伸縮的應用程序。開發人員要通過CKAD考試的陡峭學習曲線,然后才能充分利用kubernetes提供的功能,Azure Container Apps 把這里的陡峭學習曲線抹平了。
  • Azure Container Apps就是kubernetes之上的抽象層,是一種運行容器化應用程序的完全托管的服務。它讓你專注於構建應用程序,而不是管理配置kubernetes。
  • 利用Kubernetes Event-driven Autoscaling (KEDA) 縮放Container Apps,無論你是想根據CPU、內存等資源對應用縮放,還是基於消息隊列的長度對特定的負載進行縮放。
  • 利用分布式應用運行時 Dapr 輕松構建和連接微服務。 Dapr允許你構建松耦合的微服務應用程序,而不是構建一個分布式單體應用,在Azure Container Apps里我,們利用 Dapr 及其組件構建具有彈性、可擴展性和松耦合的應用程序
  • 利用Envoy proxy 路由外部進來的HTTP請求流量,Envoy就有強大的網絡代理功能,我們基本不需要配置就可以實現強大的功能,比如金絲雀發布
  • 您可以隨時可以從 Azure Container Apps 升級到更自主的 Azure Kubernetes 服務 (AKS),並釋放kubernetes 的全部力量。

Azure Container Apps的核心組件

Azure Container Apps有一系列組件,我們必須了解並利用這些組件來構建企業級雲本地應用程序。

image

  • Container:我們可以在Azure Container Apps里運行容器,這些容器和k8s 一樣可以從各種容器倉庫中拉取容器鏡像,和k8s 一樣,Azure Container Apps 也是用Pod 作為運行容器的最小單位,我們可以在Pods里定義多個容器,這個k8s 上通常的SideCar 模式就是這樣的,Pod的所有容器共享硬盤和網絡資源。目前 Azure Container Apps只支持Linux 容器。
  • Revisions:Revision 表示Pod的不可變快照,至少有一個Revision,這是初始部署的時候自動創建的。通常我們會在某個時間點對Pod 做多次的Revision,以實現金絲雀發布和A/B測試.
  • Container Apps: 容器應用程序包括至少一個Revision 。每個容器應用程序都可以進行主動和非活動Revision 。但是,它至少有一個主動Revision 。如果不再需要Revision ,我們可以停用Revision 。(我們還可以重新激活非活動Revision )
  • Environment: Environment 至少有一個容器應用程序組成。每個環境是一個安全邊界,這意味着其所有容器應用程序都部署到專用的 Azure 虛擬網絡中。所有由Environment 內部容器產生的日志都發送到專用的 Azure Log Analytics 。

下面我們就來玩一下Azure Container App 體驗一下,部署一個簡單的容器到Azure容器應用程序,具體文檔參見 https://docs.microsoft.com/zh-cn/azure/container-apps/get-started?tabs=bash

需要注意的是當前Azure Container App 只在 北歐(northeurope) 和加拿大中部 (canadacentral)這兩個區域可用

首先,我們必須為 Azure CLI 安裝 Azure Container App 擴展。

az extension add \
   --source https://workerappscliextension.blob.core.windows.net/azure-cli-extension/containerapp-0.2.0-py2.py3-none-any.whl

設置以下環境變量:

RESOURCE_GROUP="my-containerapps"
LOCATION="canadacentral"
LOG_ANALYTICS_WORKSPACE="containerapps-logs"
CONTAINERAPPS_ENVIRONMENT="containerapps-env"

定義這些變量后,可以創建一個資源組來組織與新容器應用相關的服務。

az group create \
   --name $RESOURCE_GROUP \
   --location "$LOCATION"

升級 CLI 並提供新的資源組后,可以創建容器應用環境並部署容器應用。

創建環境

Azure 容器應用中的環境圍繞一組容器應用創建安全邊界。 部署到相同環境的容器應用部署在同一虛擬網絡中,並將日志寫入同一個 Log Analytics 工作區。

Azure Log Analytics 用於監視創建容器應用環境時所需的容器應用。

使用以下命令創建新的 Log Analytics 工作區:

az monitor log-analytics workspace create \
   --resource-group $RESOURCE_GROUP \
   --workspace-name $LOG_ANALYTICS_WORKSPACE

接下來,檢索 Log Analytics 客戶端 ID 和客戶端密碼。請確保單獨運行每個查詢,以便有足夠的時間完成請求。

LOG_ANALYTICS_WORKSPACE_CLIENT_ID=`az monitor log-analytics workspace show --query customerId -g $RESOURCE_GROUP -n $LOG_ANALYTICS_WORKSPACE --out tsv`

LOG_ANALYTICS_WORKSPACE_CLIENT_SECRET=`az monitor log-analytics workspace get-shared-keys --query primarySharedKey -g $RESOURCE_GROUP -n $LOG_ANALYTICS_WORKSPACE --out tsv`

單個容器應用部署到 Azure 容器應用環境。 若要創建環境,請運行以下命令:

az containerapp env create \
   --name $CONTAINERAPPS_ENVIRONMENT \
   --resource-group $RESOURCE_GROUP \
   --logs-workspace-id $LOG_ANALYTICS_WORKSPACE_CLIENT_ID \
   --logs-workspace-key $LOG_ANALYTICS_WORKSPACE_CLIENT_SECRET \

執行到這里的時候報錯了

Command group 'containerapp env' is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
MissingRegistrationForLocation: The subscription is not registered for the resource type 'kubeEnvironments' in the location 'canadacentral'. Please re-register for this provider in order to have access to this location.

后面我們用Azure的Portal 頁面來進行下面的實驗

image

image

image

 

 

通過Portal 進行創建成功了。

 借助 Azure Monitor 服務 Log Analytics可以管理對 Azure 容器應用日志的訪問。日志分析從 Azure 容器應用實例收集和聚合日志,以供你用於故障排除或監視目的。使用 Kusto 查詢語言 (KQL) 編輯和運行針對日志的查詢,以獲取有關應用程序性能的特定詳細信息。

用下來感受這個服務功能要比Azure appservice功能強大很多,還可以用dapr 做微服務,非常期待GA的那一天。

深入閱讀:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM