CI/CD流水線中的有關(guān)基礎(chǔ)設(shè)施即代碼的幾個(gè)問(wèn)題
在構(gòu)建類似應(yīng)用程序持續(xù)交付的基礎(chǔ)設(shè)施持續(xù)交付流水線時(shí),有一些重要的方面需要考慮。
譯自 Questions to Ask about the IaC in Your CI/CD Pipeline 。
許多工程團(tuán)隊(duì)在支持軟件開(kāi)發(fā)生命周期時(shí),采用類似的方法來(lái)交付基礎(chǔ)設(shè)施。
為了縮小基礎(chǔ)設(shè)施配置方式和應(yīng)用環(huán)境部署方式之間的差距,許多DevOps團(tuán)隊(duì)會(huì)直接將基礎(chǔ)設(shè)施即代碼(IaC)模塊連接到他們的CI/CD平臺(tái)。
目標(biāo)是創(chuàng)建一個(gè)與軟件開(kāi)發(fā)和交付過(guò)程直接織在一起的持續(xù)基礎(chǔ)設(shè)施流水線,類似于用于應(yīng)用程序持續(xù)交付的CI/CD流水線。
這很容易理解。開(kāi)發(fā)團(tuán)隊(duì)需要快速部署基礎(chǔ)設(shè)施,他們沒(méi)有時(shí)間了解基礎(chǔ)設(shè)施配置的細(xì)節(jié)。許多人對(duì)IaC工具也不夠熟悉,無(wú)法從一開(kāi)始就使用。
從理論上講,將IaC模塊插入CI/CD工具應(yīng)該消除開(kāi)發(fā)人員必須了解IaC配置中的語(yǔ)法和邏輯的需要。當(dāng)開(kāi)發(fā)人員和測(cè)試人員在流水線中執(zhí)行工作時(shí),基礎(chǔ)設(shè)施會(huì)被部署以支持每個(gè)步驟。
但是,在采取這種方法之前,請(qǐng)確保思考幾個(gè)重要的問(wèn)題。
如何跟蹤資源使用情況?
雖然在CI/CD流水線中使用基礎(chǔ)設(shè)施即代碼可以加快團(tuán)隊(duì)速度,但也會(huì)導(dǎo)致運(yùn)維團(tuán)隊(duì)對(duì)資源消耗、使用和費(fèi)用累積失去視野。
這對(duì)用于測(cè)試、調(diào)試和分階段的短暫環(huán)境尤其相關(guān)。如果CI/CD流水線正在大規(guī)模部署云資源,那么這些階段完成后,誰(shuí)負(fù)責(zé)終止它們?如果想知道哪些環(huán)境正在運(yùn)行,是誰(shuí)啟動(dòng)的,以及它們正在產(chǎn)生的實(shí)時(shí)成本,該從哪里查起?
在爭(zhēng)分奪秒地加速運(yùn)維的過(guò)程中,可見(jiàn)性往往被犧牲。這使基礎(chǔ)設(shè)施資產(chǎn)的端到端管理和成本控制變得困難。
您的團(tuán)隊(duì)是否共享云帳號(hào)憑證和密鑰以獲取訪問(wèn)權(quán)限?
面對(duì)截止日期的壓力,一些團(tuán)隊(duì)可能會(huì)走捷徑,將云帳號(hào)憑證、證書(shū)和其他密鑰硬編碼到基礎(chǔ)設(shè)施即代碼模塊中,以便團(tuán)隊(duì)成員獲取所需的訪問(wèn)權(quán)限。
僅靠基礎(chǔ)設(shè)施即代碼在CI/CD流水線中交付基礎(chǔ)設(shè)施可以大大加速基礎(chǔ)設(shè)施即代碼模塊的創(chuàng)建,但并不能更容易地安全訪問(wèn)云基礎(chǔ)設(shè)施。這是一個(gè)應(yīng)該避免的嚴(yán)重風(fēng)險(xiǎn)。
如何確?;A(chǔ)設(shè)施即代碼模塊是最新的?
在不同生命周期階段維護(hù)一致的配置可能具有挑戰(zhàn)性,這會(huì)導(dǎo)致過(guò)時(shí)的測(cè)試環(huán)境擾亂結(jié)果并重新工作。
基礎(chǔ)設(shè)施即代碼工具只在源文件發(fā)生配置更改時(shí)指出。如果實(shí)時(shí)環(huán)境發(fā)生更改,開(kāi)發(fā)人員將花費(fèi)大量時(shí)間來(lái)理解部署失敗的原因。
您的DevOps團(tuán)隊(duì)花費(fèi)多少時(shí)間來(lái)配備基礎(chǔ)設(shè)施?
配備基礎(chǔ)設(shè)施對(duì)DevOps生產(chǎn)力來(lái)說(shuō)是雙刃劍。一方面,頻繁的環(huán)境部署有利于云成本效率,因?yàn)檫@表示團(tuán)隊(duì)會(huì)在不再需要時(shí)解除短暫環(huán)境。
另一方面,高需求部署可能意味著DevOps團(tuán)隊(duì)正忙于基礎(chǔ)設(shè)施配備工作單,這會(huì)降低開(kāi)發(fā)速度。
即使使用基礎(chǔ)設(shè)施即代碼,為支持CI/CD流水線提供環(huán)境所需的編排工作也可能非??捎^。請(qǐng)務(wù)必考慮支持流水線的環(huán)境所涉及的工作量。
如何使云操作標(biāo)準(zhǔn)化?
通過(guò)CI/CD流水線擴(kuò)展基礎(chǔ)設(shè)施即代碼可能導(dǎo)致所謂的配置混亂。
跨git倉(cāng)庫(kù)管理的基礎(chǔ)設(shè)施缺乏集中執(zhí)行標(biāo)準(zhǔn)的方式,這使得難以知道團(tuán)隊(duì)是否正在部署經(jīng)批準(zhǔn)的云配置。
操作也是如此。如果要對(duì)短暫環(huán)境的最大運(yùn)行時(shí)間設(shè)限,如何在受數(shù)十甚至數(shù)百個(gè)基礎(chǔ)設(shè)施即代碼配置支持的多個(gè)流水線中執(zhí)行?
隨著客戶越來(lái)越多地采用云原生開(kāi)發(fā),我們看到復(fù)雜性挑戰(zhàn)變得更加普遍。多年來(lái),我們一直在幫助DevOps和平臺(tái)團(tuán)隊(duì)自動(dòng)化和編排基礎(chǔ)設(shè)施組件,以應(yīng)對(duì)復(fù)雜性并提高交付速度。
這讓我們與客戶一起構(gòu)建了平衡云速度與可見(jiàn)性和治理的云控制平面方案。歸根結(jié)底,您的開(kāi)發(fā)團(tuán)隊(duì)?wèi)?yīng)該能夠加快速度,而不會(huì)犧牲對(duì)云資源使用方式的控制。