集成Dapr的Azure容器應(yīng)用

來源: dotNET跨平臺(tái)
作者:張善友 MVP
時(shí)間:2021-11-25
15753
微軟在Ignite 2021大會(huì)上發(fā)布了預(yù)覽版的Azure Container Apps,這是一個(gè)完全托管的無服務(wù)器容器運(yùn)行時(shí),用于大規(guī)模構(gòu)建和運(yùn)行現(xiàn)代應(yīng)用程序。從2021年11月2日起,Azure容器應(yīng)用程序可在公共預(yù)覽中使用。雖在服務(wù)到達(dá)GA之前,Azure Container Apps可能會(huì)發(fā)生變化。因此我們可以用來學(xué)習(xí),不建議用于生產(chǎn)。

微軟在Ignite 2021大會(huì)上發(fā)布了預(yù)覽版的Azure Container Apps,這是一個(gè)完全托管的無服務(wù)器容器運(yùn)行時(shí),用于大規(guī)模構(gòu)建和運(yùn)行現(xiàn)代應(yīng)用程序。從2021年11月2日起,Azure容器應(yīng)用程序可在公共預(yù)覽中使用。雖在服務(wù)到達(dá)GA之前,Azure Container Apps可能會(huì)發(fā)生變化。因此我們可以用來學(xué)習(xí),不建議用于生產(chǎn)。

Azure Container Apps是什么?

9.JPG

kubernetes是目前最為強(qiáng)大的應(yīng)用程序平臺(tái)調(diào)度器,然而他很復(fù)雜,有著陡峭的學(xué)習(xí)曲線,云原生計(jì)算基金會(huì)(CNCF)聯(lián)合Linux基金會(huì)推出了皆在考察相關(guān)從業(yè)者對(duì)Kubernetes的開發(fā)知識(shí)了解程度的認(rèn)證考試Certified Kubernetes Application Developer(CKAD),通過CKAD考試后,持證者即被認(rèn)可能夠?yàn)镵ubernetes設(shè)計(jì)、構(gòu)建、配置和部署云原生應(yīng)用,在Kubernetes中能夠定義應(yīng)用程序資源,使用核心功能構(gòu)建、監(jiān)控和診斷可伸縮的應(yīng)用程序。開發(fā)人員要通過CKAD考試的陡峭學(xué)習(xí)曲線,然后才能充分利用kubernetes提供的功能,Azure Container Apps把這里的陡峭學(xué)習(xí)曲線抹平了。

Azure Container Apps就是kubernetes之上的抽象層,是一種運(yùn)行容器化應(yīng)用程序的完全托管的服務(wù)。它讓你專注于構(gòu)建應(yīng)用程序,而不是管理配置kubernetes。

利用Kubernetes Event-driven Autoscaling(KEDA)縮放Container Apps,無論你是想根據(jù)CPU、內(nèi)存等資源對(duì)應(yīng)用縮放,還是基于消息隊(duì)列的長度對(duì)特定的負(fù)載進(jìn)行縮放。

利用分布式應(yīng)用運(yùn)行時(shí)Dapr輕松構(gòu)建和連接微服務(wù)。Dapr允許你構(gòu)建松耦合的微服務(wù)應(yīng)用程序,而不是構(gòu)建一個(gè)分布式單體應(yīng)用,在Azure Container Apps里我,們利用Dapr及其組件構(gòu)建具有彈性、可擴(kuò)展性和松耦合的應(yīng)用程序

利用Envoy proxy路由外部進(jìn)來的HTTP請求流量,Envoy就有強(qiáng)大的網(wǎng)絡(luò)代理功能,我們基本不需要配置就可以實(shí)現(xiàn)強(qiáng)大的功能,比如金絲雀發(fā)布

您可以隨時(shí)可以從Azure Container Apps升級(jí)到更自主的Azure Kubernetes服務(wù)(AKS),并釋放kubernetes的全部力量。

Azure Container Apps的核心組件

Azure Container Apps有一系列組件,我們必須了解并利用這些組件來構(gòu)建企業(yè)級(jí)云本地應(yīng)用程序。

10.JPG

Container:我們可以在Azure Container Apps里運(yùn)行容器,這些容器和k8s一樣可以從各種容器倉庫中拉取容器鏡像,和k8s一樣,Azure Container Apps也是用Pod作為運(yùn)行容器的最小單位,我們可以在Pods里定義多個(gè)容器,這個(gè)k8s上通常的SideCar模式就是這樣的,Pod的所有容器共享硬盤和網(wǎng)絡(luò)資源。目前Azure Container Apps只支持Linux容器。

Revisions:Revision表示Pod的不可變快照,至少有一個(gè)Revision,這是初始部署的時(shí)候自動(dòng)創(chuàng)建的。通常我們會(huì)在某個(gè)時(shí)間點(diǎn)對(duì)Pod做多次的Revision,以實(shí)現(xiàn)金絲雀發(fā)布和A/B測試.

Container Apps:容器應(yīng)用程序包括至少一個(gè)Revision。每個(gè)容器應(yīng)用程序都可以進(jìn)行主動(dòng)和非活動(dòng)Revision。但是,它至少有一個(gè)主動(dòng)Revision。如果不再需要Revision,我們可以停用Revision。(我們還可以重新激活非活動(dòng)Revision)

Environment:Environment至少有一個(gè)容器應(yīng)用程序組成。每個(gè)環(huán)境是一個(gè)安全邊界,這意味著其所有容器應(yīng)用程序都部署到專用的Azure虛擬網(wǎng)絡(luò)中。所有由Environment內(nèi)部容器產(chǎn)生的日志都發(fā)送到專用的Azure Log Analytics。

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

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

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

az extension add

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

設(shè)置以下環(huán)境變量:

RESOURCE_GROUP="my-containerapps"

LOCATION="canadacentral"

LOG_ANALYTICS_WORKSPACE="containerapps-logs"

CONTAINERAPPS_ENVIRONMENT="containerapps-env"

定義這些變量后,可以創(chuàng)建一個(gè)資源組來組織與新容器應(yīng)用相關(guān)的服務(wù)。

az group create

--name$RESOURCE_GROUP

--location"$LOCATION"

升級(jí)CLI并提供新的資源組后,可以創(chuàng)建容器應(yīng)用環(huán)境并部署容器應(yīng)用。

創(chuàng)建環(huán)境

Azure容器應(yīng)用中的環(huán)境圍繞一組容器應(yīng)用創(chuàng)建安全邊界。部署到相同環(huán)境的容器應(yīng)用部署在同一虛擬網(wǎng)絡(luò)中,并將日志寫入同一個(gè)Log Analytics工作區(qū)。

Azure Log Analytics用于監(jiān)視創(chuàng)建容器應(yīng)用環(huán)境時(shí)所需的容器應(yīng)用。

使用以下命令創(chuàng)建新的Log Analytics工作區(qū):

az monitor log-analytics workspace create

--resource-group$RESOURCE_GROUP

--workspace-name$LOG_ANALYTICS_WORKSPACE

接下來,檢索Log Analytics客戶端ID和客戶端密碼。請確保單獨(dú)運(yùn)行每個(gè)查詢,以便有足夠的時(shí)間完成請求。

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`

單個(gè)容器應(yīng)用部署到Azure容器應(yīng)用環(huán)境。若要?jiǎng)?chuàng)建環(huán)境,請運(yùn)行以下命令:

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

執(zhí)行到這里的時(shí)候報(bào)錯(cuò)了

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頁面來進(jìn)行下面的實(shí)驗(yàn)

11.JPG

12.JPG

13.JPG

14.JPG

通過Portal進(jìn)行創(chuàng)建成功了。

15.JPG

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

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于dotNET跨平臺(tái),本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號(hào)登錄/注冊
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家