使用Pulumi 3.0管理Azure基礎(chǔ)架構(gòu)
譯文【51CTO.com快譯】您可以在選擇的編輯器中編寫代碼,使用標(biāo)準(zhǔn)的語言工具來處理代碼格式和代碼檢查,它在Pulumi引擎上運(yùn)行,該引擎可提供虛擬基礎(chǔ)架構(gòu),并配置為代碼做好準(zhǔn)備的服務(wù)端點。由于Pulumi文件就是標(biāo)準(zhǔn)的C#或Python或JavaScript,甚至是Go,因此它們可以與您的應(yīng)用程序代碼一起加以管理,并作為任何IDE項目的一部分而添加。
在代碼編輯器中構(gòu)建基礎(chǔ)架構(gòu)
這是一種強(qiáng)大的方法;您不需要學(xué)習(xí)任何新語言,就能夠以一種聲明性的領(lǐng)域特定語言不支持的方式利用控制流。因而,單單一段Pulumi代碼可以定義貴企業(yè)中任何項目使用的所有資源。您調(diào)用重要的代碼,使用流控制元素來部署大批服務(wù)器,并構(gòu)建軟件定義網(wǎng)絡(luò)。
您用于代碼的同樣的單元測試工具可用于基礎(chǔ)架構(gòu),運(yùn)行代碼以查看您在實時環(huán)境中將部署什么。通過在上線之前測試基礎(chǔ)架構(gòu)定義和代碼,就可以避免配置不當(dāng)和錯誤。在大型Azure服務(wù)器上部署小型應(yīng)用程序可能是代價高昂的錯誤,如果沒有運(yùn)維團(tuán)隊的支持,很容易被忽略。
Pulumi為架構(gòu)師和運(yùn)維團(tuán)隊提供了將架構(gòu)和策略標(biāo)準(zhǔn)運(yùn)用于基礎(chǔ)架構(gòu)的工具。您可以對配置的服務(wù)器或所使用服務(wù)的級別設(shè)置限制,并為開發(fā)、測試和生產(chǎn)定義不同特征。使用這樣的架構(gòu)標(biāo)準(zhǔn),無異于在您的Azure部署周圍設(shè)置防護(hù)欄,就像Visual Studio執(zhí)行編程標(biāo)準(zhǔn)一樣。
針對Azure的原生支持
Pulumi的最初版本是一種跨云工具。用Pulumi編寫的代碼可以在任何云提供商的平臺上提供基礎(chǔ)架構(gòu)。但這樣一來,您只能使用可以在所有云上運(yùn)行的服務(wù)。您無法用它來構(gòu)建依賴Azure服務(wù)和API的專門針對Azure的應(yīng)用程序。
在過去幾個版本中,Pulumi已開始引入對所謂的原生provider的支持,Azure最先進(jìn)入到正式版,作為最近發(fā)布的Pulumi 3.0的一部分。微軟一直在大力投資編制文檔、為其API添加元數(shù)據(jù),Azure為REST API提供數(shù)據(jù)。這讓Pulumi可以每晚生成Azure原生provider的新版本,以跟上新功能和更新。
這并不意味著您使用的API和調(diào)用需要以同樣的速度更改。Pulumi的工具支持Azure API的所有版本,因此除非Azure棄用您目前使用的版本,否則您的代碼和基礎(chǔ)架構(gòu)無需更改。如果出現(xiàn)了您想在應(yīng)用程序中使用的新服務(wù),一旦Azure發(fā)布API,它立即可用。同樣的API可自動生成文檔,附有針對每種受支持語言的新版本。
這是一個有用的工具,而Pulumi顯然為其功能而自豪。正如該公司指出,它開發(fā)了原生provider的279個不同構(gòu)建版本,添加了166個新的Azure基礎(chǔ)架構(gòu)API。
基礎(chǔ)架構(gòu)預(yù)算即代碼
這些API包括治理API和計費(fèi)API,因此您可以對基礎(chǔ)架構(gòu)添加控件以管理支出和安全?;A(chǔ)架構(gòu)代碼可能包括消費(fèi)預(yù)算,以幫助您跟蹤成本,并將資源綁定到特定帳戶。預(yù)算可以每月、每季度和每年來衡量。預(yù)算也可以基于使用量,超出配額或閾值時,通知會自動發(fā)送到電子郵件地址。
在Azure上管理成本可能很復(fù)雜,這種方法應(yīng)該可以幫助您為基礎(chǔ)架構(gòu)和服務(wù)的使用設(shè)置適當(dāng)?shù)谋Wo(hù)措施。這款工具無法面面俱到,但是您應(yīng)該能夠了解服務(wù)成本以及如何更有效地支出,也許可以通過在較低規(guī)格的服務(wù)器上重新配置來實現(xiàn)。
用代碼自動化基礎(chǔ)架構(gòu)
Pulumi 3.0中比較有意思的功能之一是Automation API。這使您可以將Pulumi函數(shù)嵌入到自己的應(yīng)用程序中,作為管理云基礎(chǔ)架構(gòu)的工具。這種引人入勝的方法足夠靈活,有多種不同用法。
一種明顯的選擇是將其構(gòu)建到內(nèi)部門戶中,用于自助式基礎(chǔ)架構(gòu)部署??梢允褂门鷾?zhǔn)的服務(wù)器映像及其他基礎(chǔ)架構(gòu)元素填充內(nèi)部服務(wù),而不是讓所有工程師都可以訪問Azure門戶。需要臨時測試或開發(fā)環(huán)境的工程師可以挑選所需的工具,并自動部署,無需運(yùn)維支持。測試完成后,服務(wù)可以釋放資源,從而將費(fèi)用降到最低。
此外,可以在您選擇的存儲庫中保留一組面向特定應(yīng)用程序基礎(chǔ)架構(gòu)的Pulumi腳本。Azure Devops中構(gòu)建的應(yīng)用程序不僅可以編譯、構(gòu)建和包裝代碼,還可以使用管道操作來觸發(fā)Pulumi Automation API,并部署為代碼做好準(zhǔn)備的Azure基礎(chǔ)架構(gòu)。
擁有面向基礎(chǔ)架構(gòu)管理的API,您可以開始編寫自己的管理代碼,使用來自Azure管理API的數(shù)據(jù)與Cognitive Service預(yù)測API之類的工具結(jié)合使用,從而主動部署額外的應(yīng)用程序基礎(chǔ)架構(gòu)元素,以響應(yīng)目前運(yùn)行中實例的負(fù)載變化或故障征兆。如果僅在需要時部署基礎(chǔ)架構(gòu),您可以將成本降至最低,同時確保應(yīng)用程序保持響應(yīng)能力和穩(wěn)定性。
構(gòu)建可自我管理的代碼這一想法很誘人,尤其在難以獲得運(yùn)維資源的企業(yè)。自我管理的應(yīng)用程序在部署之前需要經(jīng)過仔細(xì)的測試,您要有良好的開發(fā)運(yùn)維文化,才能成功使用這種技術(shù),應(yīng)用程序運(yùn)維人員能夠監(jiān)控整套應(yīng)用程序和工具。
這是一款越來越有用的工具的主要版本。在Azure的ARM API上動態(tài)構(gòu)建可確保您的基礎(chǔ)架構(gòu)始終可以使用最新服務(wù)。一旦這些API發(fā)布,您的應(yīng)用程序可以在其上構(gòu)建,同時仍可以使用所選擇的語言,充分利用無需操心的自動化基礎(chǔ)結(jié)構(gòu)。Pulumi還在竭力為其工具箱添加新語言,Ruby和Java目前正在開發(fā)中。
原文標(biāo)題:Using Pulumi 3.0 to manage Azure infrastructure,作者:Simon Bisson
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】