公有云看上去大同小異,都提供相似的服務并收取相似的費用。但由于每家云計算供應商有不同的發(fā)展歷史和自己的專長,關(guān)注的重點有所不同。對于微軟公司來說,該公司非常關(guān)注混合云,因為由于數(shù)據(jù)敏感性或政府監(jiān)管,很多用戶的工作負載一直在自己的內(nèi)部部署數(shù)據(jù)中心運行。
這是一個雙向的承諾,提供用于快速遷移數(shù)據(jù)和服務的工具,在內(nèi)部部署數(shù)據(jù)中心資源不足時使用云平臺處理非敏感、不受監(jiān)管的數(shù)據(jù),并將其Azure管理工具引入用戶的數(shù)據(jù)中心,微軟公司在Azure Stack中擁有自己的硬件、使用Azure Stack HCI批準的第三方硬件或其Azur Arc應用程序管理工具。
基于Azure Arc和容器構(gòu)建
Azure Arc的演變一直是人們關(guān)注的焦點。最初是作為通過Azure門戶管理內(nèi)部部署應用程序虛擬基礎設施的工具,它增加了對數(shù)據(jù)服務和Kubernetes容器編排的支持。這是有趣的選項,因為在Azure自己的Kubernetes管理工具的版本上構(gòu)建是管理Kubernetes環(huán)境的一種快速簡便的方法,不需要用戶深入了解Kubernetes部署和配置。
除了在自己的硬件上托管自己的云原生應用程序之外,Azure Arc的Kubernetes工具還有另外的作用。微軟公司一直在重新構(gòu)建自己的大部分Azure平臺服務。雖然這些一直基于微服務以支持快速橫向擴展,但它們已經(jīng)使用微軟公司自己的虛擬化技術(shù)運行。這種情況正在慢慢改變,將它們從專用的Windows Server實例轉(zhuǎn)移到在容器中運行,并使用自定義Kubernetes擴展和服務來支持容器化代碼。
而向容器的轉(zhuǎn)變,以及Kubernetes對Windows和Linux容器的支持,使微軟公司能夠推廣自己的內(nèi)部Azure托管服務,使用Kubernetes和相關(guān)技術(shù)來提高擴展性,并使這些容器具有可移植性。人們已經(jīng)在Azure StackEdge硬件上運行的Azure IoT Hub中看到了一些這種可移植性,因此需要將計算能力放在需要的地方,而不是依賴可能有問題的網(wǎng)絡。
下一個合乎邏輯的步驟是使用Arc的Azure Kubernetes作為主機,將可移植應用程序容器遷移到任何一個Azure托管平臺。這種方法允許用戶在代碼所在的位置運行Azure服務,Arc不僅支持內(nèi)部部署系統(tǒng),還支持AWS或谷歌云平臺上托管的基礎設施。如果用戶對Azure Function有依賴關(guān)系,但希望將其包含在數(shù)據(jù)中心運行的應用程序中以及Azure和AWS上的多云應用程序中,那么現(xiàn)在不局限于將Azure Function的代碼轉(zhuǎn)換為AWS Lambda。
與往常一樣,這種方法是一種權(quán)衡。用戶依賴于Azure Arc,并且需要在其使用的平臺上進行管理。但是,用戶現(xiàn)在只需開發(fā)一次應用程序代碼,使不同版本和不同平臺之間沒有延遲,無需使用通用API,從而降低風險,并提供盡可能多的多云覆蓋范圍。
設置Azure Arc的應用服務支持
通過Azure Arc運行應用程序服務需要注冊的Kubernetes集群。用戶可以在任何平臺上使用任何正在運行的集群,只要它支持集群API,并且已經(jīng)在其Kubernetes系統(tǒng)上安裝了Azure CLI。務必記住的是,Azure Arc是一種管理在集群上運行的應用程序的方式,而不是集群本身。Arc的功能與管理平臺所需的功能之間存在明顯的分界線。用戶可以將其視為基礎設施管理與平臺和應用程序管理之間的區(qū)別。需要將集群作為基礎設施的一部分進行管理,而Arc處理在Kubernetes中運行的平臺服務和應用程序。
若要連接集群,可以使用connectk8s Azure CLI擴展,并確保集群可以連接到所需的Azure端點。在連接到Arc之前,可能需要為此配置防火墻。在連接之后,注冊Arc提供程序并將其連接到本地區(qū)域的Azure資源組。Azure CLI工具下載并運行Helm圖表,該圖表添加了建立連接所需的證書和ID,為其管理代理部署了一組Pod。
一旦集群由Azure Arc管理,就可以在集群上部署Azure應用程序服務擴展。該服務仍處于試用階段。接下來需要將應用服務擴展安裝到集群,首先設置內(nèi)部部署環(huán)境變量以保存擴展名稱、其命名空間和整個環(huán)境的名稱。然后可以使用Azure CLI將擴展安裝到集群。
微軟公司提供了一個示例腳本來安裝和配置應用服務集群和Pod,添加服務帳戶、命名空間和其他關(guān)鍵配置。其安裝可能需要一些時間,因此需要耐心等待,然后再配置服務的Arc端。在這里,用戶將在創(chuàng)建應用服務環(huán)境之前設置Arc使用的自定義位置。一旦它啟動并運行,就可以開始創(chuàng)建和部署應用程序。用戶可以配置對Kubernetes事件驅(qū)動自動縮放(KEDA)以及Kubernetes的默認資源驅(qū)動方法的支持。如果正在運行無服務器Azure服務(例如Functions或EventGrid),那么應該會發(fā)現(xiàn)KEDA支持很有用。
在其開發(fā)的現(xiàn)階段,Azure Arc的Azure應用服務支持不適合初學者。它需要現(xiàn)有的Kubernetes環(huán)境和從命令行管理Kubernetes和Azure的經(jīng)驗。微軟公司可以提供指導,但用戶需要自定義腳本以適應其環(huán)境,無論是在內(nèi)部部署設施還是在公有云上運行。
生成代碼并將其交付到Azure Arc應用服務
微軟公司正在推出一種基于向?qū)У姆椒ǎ糜趶腁zure Arc門戶將服務部署到連接的集群。這將創(chuàng)建適當?shù)馁Y源并安裝適當?shù)臄U展。然后,用戶可以將其用作部署資源的目標,將它們視為Azure區(qū)域旁邊的自定義位置。這使用戶可以使用現(xiàn)有的Azure開發(fā)工具(例如Visual Studio Code)來處理Arc資源。
一旦Azure Arc對Azure應用服務的支持推出正式版本,它將為用戶提供與直接使用Azure相同的熟悉的開發(fā)和操作體驗,將其資源視為Azure服務的替代站點。這意味著確保提前配置它們,賦予Azure管理員新的職責,并要求在DevOps團隊中建立新的關(guān)系。
由此產(chǎn)生的多云功能利用了Kubernetes的通用API,大多數(shù)版本都支持這些API,從邊緣到公有云。在內(nèi)部部署或Azure中開發(fā)的代碼可以在任何受支持的平臺上運行,隨時可以部署到數(shù)據(jù)所在的位置。隨著越來越多的Azure服務利用Azure Arc的Kubernetes支持,對多平臺服務的多云支持將變得與使用跨云虛擬基礎設施一樣普遍,并且通過消除基于平臺即服務的應用程序的單點故障來提高其可靠性和可用性。