天天看點

從原子操作走向模闆部署,詳解雲上資源自動化部署新模式目前雲上資源部署模式阿裡雲自動化部署模式新模式一:Terraform 托管總結

5 月 29 日,阿裡雲開發者大會的《應用開發的基礎設施雲上優化》分論壇上,阿裡雲技術專家王斌鑫發表了主題為《雲上資源自動化部署新模式》的分享,詳細闡述了雲上資源自動化部署新模式——基于資源編排、Terraform托管、ROS CDK的自動化部署最佳實踐。

本文為根據王斌鑫的演講整理成文。

從原子操作走向模闆部署,詳解雲上資源自動化部署新模式目前雲上資源部署模式阿裡雲自動化部署模式新模式一:Terraform 托管總結

目前雲上資源部署模式

雲上資源傳統部署模式的挑戰

從原子操作走向模闆部署,詳解雲上資源自動化部署新模式目前雲上資源部署模式阿裡雲自動化部署模式新模式一:Terraform 托管總結

大部分使用者一般是通過控制台/API/SDK 等傳統模式進行雲上資源的部署,這種部署模式會面臨規模、效率、規範和成本四個方面的挑戰:

  1. 規模上,随着業務的發展需要管理的資源規模不斷上升,部署和管理種類繁多的資源帶來挑戰。
  2. 效率上,随着規模上升,手動批量部署變得難以為繼。
  3. 規範上,如何確定對基礎設施的變更均符合組織管理規範。
  4. 成本上,手動部署的方式無法極緻地利用雲上彈性能力,其成本仍有優化空間。

阿裡雲自動化部署模式

資源編排服務(ROS)的核心價值

從原子操作走向模闆部署,詳解雲上資源自動化部署新模式目前雲上資源部署模式阿裡雲自動化部署模式新模式一:Terraform 托管總結

面對傳統部署模式的挑戰,我們在想是否能夠幫助客戶對雲上資源進行自動化部署?是以有了阿裡雲資源編排服務(ROS),它基于基礎設施即代碼(IaC)的理念,讓開發者和管理者使用模版的方式,編排雲上的多種資源,進行自動化部署。

對比手動部署,使用資源編排服務 ROS 進行自動化部署會帶來如下好處:

效率提升,針對諸如 SAP 這樣複雜的解決方案能有效提升部署效率,也能夠幫助 MSP、ISV、onECS 服務提升部署效率;

架構優化,ROS 提供了種類豐富的阿裡雲最佳實踐模闆,使用者無需豐富的架構經驗即可部署解決方案級别的架構;

流程管控,由 IT 管理者統一管理基礎設施以避免各類風險,且可基于模闆進行稽核再進一步結合 CI/CD 以規範化 IT 管理流程;

節省成本,自動化部署方式可以按需部署和釋放資源,進而極緻地使用雲上彈性能力來降低成本。

ROS 的使用流程和核心功能

從原子操作走向模闆部署,詳解雲上資源自動化部署新模式目前雲上資源部署模式阿裡雲自動化部署模式新模式一:Terraform 托管總結

使用 ROS 進行自動化部署的過程非常簡單:

  1. 按照 ROS 模闆文法編寫模闆,定義想要建立的各類雲上資源。
  2. 在 ROS 控制台 使用模闆建立資源棧,以執行部署。其中,資源棧是一組資源的集合,這些資源均是模闆中定義的資源。
  3. 在 ROS 控制台檢視資源棧,可以檢視棧中各種資源的建立情況,并可以跳轉到對應資源的控制台。

值得一提的是,ROS 服務本身完全免費,內建了身份認證和安全審計的功能,資源建立結果是可視化的,且能夠進行多賬号跨地域地部署,支援資源棧和實際資源的差異檢測并進行修正。

除了直接使用 ROS 模闆來做自動化部署,是否還有别的方式呢?

新模式一:Terraform 托管

Terraform 是什麼

從原子操作走向模闆部署,詳解雲上資源自動化部署新模式目前雲上資源部署模式阿裡雲自動化部署模式新模式一:Terraform 托管總結

Terraform 同 ROS 一樣,也是基于基礎設施即代碼(IaC)的理念的自動化編排工具。它使用一種特定的配置語言(HCL, Hashicorp Configuration Language)來描述基礎設施資源,文法樣例如上圖所示。

Terraform & ROS

從原子操作走向模闆部署,詳解雲上資源自動化部署新模式目前雲上資源部署模式阿裡雲自動化部署模式新模式一:Terraform 托管總結

既然 Terraform 和 ROS 都是基于相同的理念的自動化編排工具,那它們的目标也是一緻的,都是為使用者打造良好的雲上部署體驗。

兩者有很多相同之處,比方說 Terraform 的配置檔案相當于 ROS 的模闆,Terraform 的狀态相當于 ROS 的資源棧,Terraform 的 CLI 程式則相當于 ROS 的編排引擎。

兩者也各有優勢,Terraform 的文法更簡潔,對多雲支援地很完善;而 ROS 則提供免費的服務托管,且有雲原生的鑒權和審計能力。

那麼是否能夠将兩者的優勢結合呢?是以就有了 Terraform 托管能力。

Terraform 托管

從原子操作走向模闆部署,詳解雲上資源自動化部署新模式目前雲上資源部署模式阿裡雲自動化部署模式新模式一:Terraform 托管總結

使用者直接在本地使用 Terraform 時,需要根據目前的作業系統下載下傳對應的 Terraform CLI,編寫模闆,管理所使用的各類 Provider 的版本,且要管理狀态等檔案。

而使用 Terraform 托管功能時,隻需在 ROS 的控制台編寫 Terraform 模闆便可直接部署,後續則通過資源棧來管理模闆中定義的資源。底層的各類管理都交給 ROS。

從原子操作走向模闆部署,詳解雲上資源自動化部署新模式目前雲上資源部署模式阿裡雲自動化部署模式新模式一:Terraform 托管總結

在使用原理上,ROS 控制台會将 Terraform 模闆組合成符合 ROS 文法規範的模闆,ROS 服務端會其進行文法校驗,生成租戶資訊,排程到 ROS 的 Terraform 服務進行資源的部署。

定時與多雲場景實踐

從原子操作走向模闆部署,詳解雲上資源自動化部署新模式目前雲上資源部署模式阿裡雲自動化部署模式新模式一:Terraform 托管總結

我們可以在很多場景中使用 Terraform 托管的功能。

場景一:定時部署資源

假設我們需要通過 Terraform 定時部署資源,傳統方式下需要本地建立定時任務,執行 Terraform CLI 來做。而在雲上,我們可以:

  • 事先編寫一個 Terraform 模闆,聲明想要部署的雲資源;
  • 事先編寫一個 OOS 運維模闆來聲明由它調用 ROS 進行資源部署;
  • 在 OOS 中設定為定時執行,OOS 會定時觸發 ROS,ROS 則會使用 Terraform 托管功能進行資源部署。

場景二:多雲管理

如果我們既想要對多種雲平台(如阿裡雲、AWS 等)的資源進行部署,又想有可視化的結果回報,可以直接編寫 Terraform 的模闆來聲明各個雲上資源,并使用 ROS 的 Terraform 托管功能來進行部署。

Terraofrm 托管總結

從原子操作走向模闆部署,詳解雲上資源自動化部署新模式目前雲上資源部署模式阿裡雲自動化部署模式新模式一:Terraform 托管總結

Terraform 托管功能能讓使用者在雲上直接使用 Terraform,和直接使用 ROS 模闆部署有一緻的控制台體驗,且相容了 ROS 原生的 API,同時兼備了統一的身份認證和權限控制。相比于本地使用 Terraform,不再需要管理多種 Provider 和多個 Terraform CLI 版本。

新模式二:ROS CDK

現有資源定義方式的不足

從原子操作走向模闆部署,詳解雲上資源自動化部署新模式目前雲上資源部署模式阿裡雲自動化部署模式新模式一:Terraform 托管總結

事實上,通過直接編寫 ROS 模闆,或者通過可視化編輯器生成模闆,然後進行資源部署的方式是能夠大大提升資源的部署效率的,但是也有一些不足之處:

  • 缺少對過程式的支援
  • 複雜場景的編寫效率較低
  • 對程式的友好性較低
  • 動态性支援較差

針對這些問題,是否可以更進一步,在模闆之上解決這些不足呢?

ROS CDK 是什麼

從原子操作走向模闆部署,詳解雲上資源自動化部署新模式目前雲上資源部署模式阿裡雲自動化部署模式新模式一:Terraform 托管總結

ROS CDK 是資源編排(ROS)提供的一種指令行工具和多語言 SDK,利用面向對象的進階抽象模式對雲資源進行标準定義,進而快速建構雲資源。

ROS CDK 以應用作為資源管理的入口,一個應用管理多個資源棧,而每個資源棧中則可以有多個構件。構件可以了解為雲上資源的元件,能包含一個或多個資源。

我們可以選擇自己熟悉的程式設計語言(TypeScript/JavaScript/Java/Python/C#)編寫應用代碼聲明想要部署的資源,ROS CDK 會将項目代碼轉換成 ROS 模闆,然後使用該模闆進行自動化部署。

使用步驟和項目生命周期

從原子操作走向模闆部署,詳解雲上資源自動化部署新模式目前雲上資源部署模式阿裡雲自動化部署模式新模式一:Terraform 托管總結

ROS CDK 的使用步驟也很簡單:

  1. 首先,就是初始化項目,配置阿裡雲的通路憑證(AccessKey)
  2. 其次,就是編寫資源代碼和測試用例進行本地測試
  3. 最後,通過 CDK CLI 或者直接程式進行資源部署,并管理資源棧

在進行部署的階段,CDK 會根據使用者編寫的資源代碼進行構造,執行個體化出各種資源對象;然後在準備階段做終态前的調整(通常由架構自動完成);進而驗證各種資源屬性,確定能夠正确部署;最終合成出一個 ROS 模闆,并使用該模闆部署為資源棧。

代碼、模闆示例

從原子操作走向模闆部署,詳解雲上資源自動化部署新模式目前雲上資源部署模式阿裡雲自動化部署模式新模式一:Terraform 托管總結

上圖中,左邊是 ROS CDK 的資源代碼,其中聲明了一個 VPC,并使用循環動态生成 3 個 VSwitch。而右邊則是由 ROS CDK 生成的 ROS 模闆。由此可以看出針對動态生成的場景,ROS CDK 可以大大簡化模闆編寫的複雜度。

應用程式內建 CDK 實作持續部署場景

從原子操作走向模闆部署,詳解雲上資源自動化部署新模式目前雲上資源部署模式阿裡雲自動化部署模式新模式一:Terraform 托管總結

假設我們需要實作一個 CI/CD 系統,能夠部署這樣的資源架構:使用 API 網關中提供 API,使用函數計算的函數提供業務邏輯,要分别部署測試、預發、線上環境的資源,并且支援從測試釋出到預發,從預發部署到線上。

針對這樣的資源架構,在直接使用 ROS 模闆的方式中,需要分别為三個環境準備三個模闆,而環境間的部署則還需要動态拼接模闆,對應用程式來說并不友好。這裡就建議使用 ROS CDK,這樣應用程式可以根據環境的不同指定對應的變量,生産對應的資源,進而滿足環境的動态性部署。

ROS CDK 總結

從原子操作走向模闆部署,詳解雲上資源自動化部署新模式目前雲上資源部署模式阿裡雲自動化部署模式新模式一:Terraform 托管總結

相較于直接使用 ROS 模闆部署,使用 ROS CDK 允許開發者選擇自己熟悉的程式設計語言,并能借助其動态特性來實作複雜的編排效果。ROS CDK 能夠非常容易地內建到應用程式中,進而能夠友善地在程式中進行資源部署。

總結

從原子操作走向模闆部署,詳解雲上資源自動化部署新模式目前雲上資源部署模式阿裡雲自動化部署模式新模式一:Terraform 托管總結

企業上雲規模逐漸增大,企業雲上資源的部署方式從人工開始走向自動,從單雲走向多雲,從原子操作走向模闆部署。随着基礎設施即代碼的理念而興起,資源的部署模式也因場景的不同而不同,總體來說有以下四個部署模式的建議:

  1. 作為入門級使用者,隻需管理有限幾個資源,直接使用控制台的方式是最為簡單直覺的;
  2. 作為企業 IT 管理者,需管理規模較大的雲上資源,使用 ROS 模闆管理基礎設施會是最有效率的選擇;
  3. 作為運維研發人員,需要在業務系統中實作資源部署邏輯,那麼 ROS CDK 會是最佳選擇;
  4. 作為多雲管理者,需可視化管理阿裡雲、AWS、Azure 等多種雲的資源,使用 ROS Terraform 托管功能是不二之選。

繼續閱讀