天天看點

基礎設施即代碼在 CI/CD 中必須具備的功能

作者:岱軍

翻譯自 What Infrastructure as Code Must Do for CI/CD 。

在 Pulumi 的虛拟使用者大會上,演講者深入探讨了哪些 IaC 功能能夠最大程度地提升快速軟體開發的效益。

基礎設施即代碼在 CI/CD 中必須具備的功能

Image by Rowan Freeman from Unsplash

基礎設施即代碼(IaC)的使用可以通過指令行在各種環境中以一緻且高效的方式進行基礎設施的規劃和部署,非常适合 CI/CD 。通過在生産流水線中應用 IaC ,組織報告稱提高了生産效率并實作了資源節約。

然而,并非所有的 IaC 解決方案都是相同的。潛在的 IaC 使用者應仔細審查特定解決方案是否真正能改進 CI/CD 流程以及如何改進。

一個 IaC 解決方案應該為 CI/CD 提供以下功能:

  • 自動化的規劃和部署。
  • 不可變的版本控制,即使用單一代碼庫建立和删除基礎設施。
  • 在整個 CI/CD 過程中進行測試。
  • 設定政策的能力。
  • 管理安全性的能力。

基礎設施即代碼提供的不變性在 CI/CD 中非常重要。企業管理協會(EMA)的分析師 Torsten Volk 告訴 The New Stack ,它之是以具有重要地位,是因為它確定了一緻性、清晰的審計路徑以便于復原、統一的安全和合規性控制,以及整體的效率。

在 PulumiUP 虛拟會議上,讨論的重點是适用于 CI/CD 的合适 IaC 解決方案應該提供哪些功能以及為什麼。這是 Pulumi 每年一度的使用者大會,于 6 月 15 日舉行。

靈活的程式設計語言選擇

Pulumi 在基礎設施即代碼(IaC)方面的方法似乎有助于其快速增長的采用率。根據 EMA 的資料,盡管競争對手 Terraform 聲稱在市場佔有率上幾乎是 Pulumi 的 10 倍,但 Pulumi 的市場佔有率增長速度約為 Terraform 的 2 至 3 倍。

Pulumi 提供選擇程式設計語言的靈活性是關鍵所在。例如,今天許多使用者不幸地僅限于在部署中使用 YAML ,這本不應該是這樣的;開發人員不應被限制在一種語言上。

另一方面, Pulumi 聲稱支援所有主要程式設計語言,是以提供了更多的選擇自由和更直接的方式來為 CI/CD 和一般情況下進行基礎設施規劃。

“ Pulumi 是你喜歡的語言中的 IaC - 對于熟悉 IaC 的人來說,可能有使用其他使用特定領域語言甚至标記語言(如 YAML 或 JSON )的工具的經驗,通常這對于入門來說是可以接受的,” Pulumi 的首席執行官兼創始人 Joe Duffy 在 PulumiUP 的主題演講中說道。“但特别是當我們擴充到現代雲架構時,問題就開始顯現出來了。”

是以,Pulumi 采取了不同的方法:使用你喜歡的程式設計語言,無論是 JavaScript 還是 TypeScript 、 Python 還是 Go 。Pulumi 的核心是多語言的。這意味着你可以利用程式設計語言的豐富功能來表達你的基礎設施即代碼。

在 Pulumi 的情況下,Duffy 說,采用基礎設施即代碼并不意味着你的組織必須放棄在 GitHub 或 GitLab 上進行拉取請求等與 CI/CD 內建的操作。

Duffy 說:“如果你已經在 GitHub Actions 上進行 CI/CD 或在 GitLab Pipelines 上進行 CI/CD ,你隻需利用現有的流程進行改變,将其從應用程式傳遞變為基礎設施傳遞。當然,還可以與 Docker 和身份提供者(如 Okta )內建。”“結果就是,雲計算從枯燥乏味變成了高效率 - 你可以在更短的時間内完成更多的工作,而且也更有樂趣。”

Duffy 表示,生産力的提高可以“實際上是數量級的改變”,并補充說 Pulumi 可以在不到 15 行代碼的情況下部署 Amazon Web Services 上的彈性 Kubernetes 服務叢集。

他說:“我們不是在談論 10% 的提升。”“你會感覺自己編碼速度更快,完成更多工作,并且在開發環節更加緊密。”

基礎設施即代碼的擴充能力

此外, Pulumi 的目标是幫助公司擴充其業務。雖然使用 Pulumi 很容易入門,但其理念是能夠支援跨不同環境部署的 CI/CD 團隊。

在這種情況下,基礎設施即代碼應該包括確定在多雲或不同環境中的合規性、标準化和安全性等任務。它應該作為一個統一的接口,簡化管理過程,無需使用多個工具或接口。

Duffy說:“也許你已經有了一個開發環境,接下來你會考慮進入生産環境。”“這就是你開始思考标準化的時候。當隻是為一、兩個或三個開發人員提供基礎設施即代碼時,情況與在整個團隊中采用基礎設施代碼截然不同。”

在 Starburst Data ,Pulumi 主要用于執行複雜的 CI/CD 工作流程, Starburst 的進階首席軟體工程師 Matt Stephenson 在一次會議演講中表示。

Starburst 的基礎設施需求非常複雜而廣泛,覆寫了 20 個不同的雲區域,并通過不同的雲提供商進行部署。在 CI/CD 工作流程中, Pulumi 幫助支援了非常複雜的復原過程, Stephenson 說道。

他說:“我們希望我們的基礎設施是無處不在的和易于接近的。”“我們希望所有的工程師都能夠自如地進行更改,以便為他們的産品變更提供所需的基礎設施。”

AI 元件

最近,人工智能展示了在不久的将來如何在使用基礎設施即代碼進行 CI/CD 時發揮關鍵作用。

Volk 告訴 The New Stack :“ AI 內建可以讓開發人員選擇他們偏好的開發語言,并允許他們以簡明的英語來定義目标基礎設施環境,然後使用[Chat]GPT自動生成所需的代碼來建立環境。”

通過 Pulumi Insights , Pulumi 廣泛使用 ChatGPT 功能。在會議之前,Pulumi 的市場副總裁 Aaron Kao 進行了一次示範,展示了如何使用基本的英語對話指令向 Pulumi Insights 提出查詢,并擷取有關跨多雲環境部署的 Kubernetes 叢集等複雜環境中基礎設施的可操作資訊。

Kao 展示了如何以簡單的英語輸入請求,例如“我想要一個 S3 存儲桶、一個 API 網關和一個 Lambda 函數。我想建構一個動态的無伺服器網站。但如果你不知道,就給我一個靜态網站放在 CDN 後面。”

結果是,“它會直接生成一個能讓你完成 80-90% 工作的程式”, Kao 說道。

毫無疑問,人工智能将在不久的将來對 CI/CD 和基礎設施即代碼産生重大影響。是以,今天為開發人員提供的基礎設施即代碼工具應該看起來和感覺上都與以往大不相同。

Pulumi 的首席技術官 Luke Hoban 在會議小組讨論“人工智能與雲開發的未來”中表示:“這些系統與我們過去所習慣的軟體建構方式不同,我們建構和測試的方法也非常不同。”

他說:“我非常關注這個領域的發展,以及我們如何學習一套新的技能來建構不同類型的軟體。”

繼續閱讀