天天看點

雲上資源自動化部署新模式目前雲上資源部署模式新模式一:Terraform 托管新模式二:ROS CDK總結

本文是 2021 阿裡雲開發者大會應用開發的基礎設施優化專場《雲上資源自動化部署新模式》的文字版。

目前雲上資源部署模式

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

雲上資源自動化部署新模式目前雲上資源部署模式新模式一:Terraform 托管新模式二:ROS CDK總結



大部分使用者一般是通過控制台/API/SDK等傳統模式進行雲上資源的部署,這種部署模式會面臨如下挑戰:

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

阿裡雲自動化部署模式

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

雲上資源自動化部署新模式目前雲上資源部署模式新模式一:Terraform 托管新模式二:ROS CDK總結

面對傳統部署模式的挑戰,我們在想是否能夠對雲上資源進行自動化部署?是以有了

阿裡雲資源編排服務(ROS)

,它基于基礎設施即代碼(IaC)的理念,讓開發者和管理者使用模版的方式,編排雲上的多種雲資源,進行自動化部署。

對比與手動部署,使用ROS進行自動化部署會帶來如下好處:

  • 效率提升,針對諸如SAP這樣複雜的解決方案能有效提升部署效率,也能夠幫助MSP、ISV、onECS服務提升部署效率
  • 架構優化,ROS提供了種類豐富的阿裡雲最佳實踐模闆,使用者無需豐富的架構經驗即可部署解決方案級别的架構
  • 合規管控,由IT管理者統一管理基礎設施以避免各類風險,且可基于模闆進行稽核再進一步結合CI/CD以規範化IT管理流程
  • 節省成本,自動化部署方式可以按需部署和釋放資源,進而極緻地使用雲上彈性能力來節省成本

ROS 的使用流程和核心功能

雲上資源自動化部署新模式目前雲上資源部署模式新模式一:Terraform 托管新模式二:ROS CDK總結

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

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

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

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

新模式一:Terraform 托管

Terraform 是什麼

雲上資源自動化部署新模式目前雲上資源部署模式新模式一:Terraform 托管新模式二:ROS CDK總結

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

Terraform & ROS

雲上資源自動化部署新模式目前雲上資源部署模式新模式一:Terraform 托管新模式二:ROS CDK總結

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

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

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

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

Terraform 托管

雲上資源自動化部署新模式目前雲上資源部署模式新模式一:Terraform 托管新模式二:ROS CDK總結

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

而使用 

Terraform 托管

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

雲上資源自動化部署新模式目前雲上資源部署模式新模式一:Terraform 托管新模式二:ROS CDK總結

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

定時與多雲場景實踐

雲上資源自動化部署新模式目前雲上資源部署模式新模式一:Terraform 托管新模式二:ROS CDK總結

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

場景一:定時部署資源

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

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

場景二:多雲管理

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

Terraofrm 托管總結

雲上資源自動化部署新模式目前雲上資源部署模式新模式一:Terraform 托管新模式二:ROS CDK總結



新模式二:ROS CDK

現有資源定義方式的不足

雲上資源自動化部署新模式目前雲上資源部署模式新模式一:Terraform 托管新模式二:ROS CDK總結

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

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

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

ROS CDK 是什麼

雲上資源自動化部署新模式目前雲上資源部署模式新模式一:Terraform 托管新模式二:ROS CDK總結
ROS CDK

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

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

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

使用步驟和項目生命周期

雲上資源自動化部署新模式目前雲上資源部署模式新模式一:Terraform 托管新模式二:ROS CDK總結

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

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

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

代碼、模闆示例

雲上資源自動化部署新模式目前雲上資源部署模式新模式一:Terraform 托管新模式二:ROS CDK總結

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

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

雲上資源自動化部署新模式目前雲上資源部署模式新模式一:Terraform 托管新模式二:ROS CDK總結

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

在直接使用 ROS 模闆的方式中,需要分别為三個環境準備三個模闆,而環境間的部署則還需要動态拼接模闆,對應用程式來說并不友好。

基于 ROS CDK,應用程式可以根據環境的不同指定對應的變量,生産對應的資源,進而滿足環境的動态性部署。

ROS CDK 總結

雲上資源自動化部署新模式目前雲上資源部署模式新模式一:Terraform 托管新模式二:ROS CDK總結

總結

雲上資源自動化部署新模式目前雲上資源部署模式新模式一:Terraform 托管新模式二:ROS CDK總結

繼續閱讀