創(chuàng)建CI/CD流水線中的IaC前,需要考慮哪些事項?
許多軟件工程團隊通常會遵循相似的方法來交付基礎(chǔ)設(shè)施以支持軟件開發(fā)生命周期。為了縮小基礎(chǔ)設(shè)施配置方式與應(yīng)用程序環(huán)境部署方式之間的差距,許多 DevOps 團隊將其基礎(chǔ)設(shè)施即代碼(IaC)模塊直接連接到其 CI/CD 平臺。其目的是創(chuàng)建一個直接融入軟件開發(fā)和交付流程的連續(xù)基礎(chǔ)設(shè)施流水線,類似于用于持續(xù)交付應(yīng)用程序的 CI/CD 流水線。 ? 原因很容易理解。開發(fā)團隊需要快速部署基礎(chǔ)架構(gòu),他們沒有時間了解配置的細微差別。許多人根本不熟悉 IaC 工具,因此無法在第一時間進行部署。 ? 從理論上講,將 IaC 模塊插入 CI/CD 工具應(yīng)該使開發(fā)人員無需了解 IaC 配置中使用的語法和邏輯。當(dāng)開發(fā)人員和測試人員在整個流水線中執(zhí)行其工作時,會部署基礎(chǔ)設(shè)施以支持每個步驟。 ? 不過在采用這種方法之前,有幾個重要的事項需要明確。 ? 如何跟蹤資源利用率?
雖然在 CI/CD 流水線中部署 IaC 可以幫助團隊更快地移動,但它會使運營團隊忽視資源消耗、使用情況和成本應(yīng)計情況。 ? 這對于用于測試、調(diào)試和暫存的臨時環(huán)境尤其重要。如果 CI/CD 流水線正在大規(guī)模部署云資源,那么誰負責(zé)在這些階段完成后終止它們?如果您想了解當(dāng)前正在運行哪些環(huán)境、誰啟動了這些環(huán)境,以及這些環(huán)境給您帶來的實時成本,應(yīng)該從哪里開始下手? ? 在急于加速運維的過程中,通常會犧牲可觀測性
。這使得基礎(chǔ)設(shè)施資產(chǎn)的端到端管理和成本控制變得困難
。 ? 團隊是否共享云帳戶憑據(jù)和密鑰以獲取訪問權(quán)限?
面對按時完成任務(wù)的壓力,一些團隊可能會走捷徑,將云帳戶憑據(jù)、證書和其他密鑰以硬編碼的形式放到 IaC 模塊中,以便為團隊成員提供所需的訪問權(quán)限。 ? 僅依靠 IaC 在整個 CI/CD 流水線中交付基礎(chǔ)設(shè)施會快速加速 IaC 模塊的創(chuàng)建,但并不能更輕松地分發(fā)對云基礎(chǔ)設(shè)施的安全訪問。這是一個需要避免的嚴重風(fēng)險。 ? 如何確保 IaC 模塊是最新的?
在生命周期階段保持一致的配置在較大規(guī)模上可能具有挑戰(zhàn)性,導(dǎo)致測試環(huán)境過期并需要返工。IaC 工具僅標(biāo)識何時對源文件進行配置更改,這可能難以跟蹤。如果實時環(huán)境發(fā)生更改,開發(fā)人員將花費大量時間來嘗試了解其部署失敗的原因。 ? DevOps 團隊在預(yù)配基礎(chǔ)架構(gòu)上花費了多少時間?
對于 DevOps 的工作效率而言,基礎(chǔ)設(shè)施置備(provisioning) 是一把雙刃劍。一方面,頻繁的環(huán)境部署對云成本效益來說是一個積極的信號,因為這表明當(dāng)不再需要短暫環(huán)境時,團隊會將其停用。 ? 另一方面,對部署的高需求可能意味著您的 DevOps 團隊需要繁忙地處理基礎(chǔ)設(shè)施置備工單,這會降低開發(fā)速度。 ? 即使在使用基礎(chǔ)設(shè)施即代碼時,交付支持 CI/CD 流水線的環(huán)境所需的編排工作量也可能相當(dāng)大。
請務(wù)必考慮支持流水線的環(huán)境的內(nèi)容以及交付流水線所需的工作
。 ? 如何將云運營標(biāo)準化?
隨著越來越多的企業(yè)采用云原生開發(fā),復(fù)雜性挑戰(zhàn)變得越來越普遍。開發(fā)團隊如何在不犧牲對云資源使用方式的控制的前提下加快速度,成為需對企業(yè)需要解決的問題。 ?
通過 CI/CD 流水線擴展 IaC 可能會導(dǎo)致配置混亂
。在 git 倉庫管理的基礎(chǔ)架構(gòu)缺乏一個執(zhí)行標(biāo)準的中心點,因此很難了解團隊是否部署了經(jīng)批準的云配置。云運營也是如此。如果要為臨時環(huán)境要求最大運行時,需要考慮在數(shù)十甚至數(shù)百個 IaC 配置支持的多個流水線中強制實施。 ? 參考鏈接:
https://thenewstack.io/questions-to-ask-about-the-iac-in-your-ci-cd-pipeline/
?