雲計算

社區首款 OAM 可視化平臺發佈!關注點分離、用戶友好、上手難度低

頭圖.png

作者 | 徐運元,杭州諧雲科技合夥人及資深架構師,雲計算行業和 Kubernetes 生態資深從業者

導讀:什麼是 OAM?2019 年 10 月 17 日,阿里巴巴合夥人、阿里雲智能基礎產品事業部總經理蔣江偉(花名:小邪)在 QCon 上海 2019 重磅宣佈,阿里雲與微軟聯合推出開放應用模型 Open Application Model (OAM)開源項目

OAM 的核心關注點

  • 關注點分離:開發者關注應用本身,運維人員關注模塊化運維能力,讓應用管理變得更輕鬆、應用交付變得更可控;
  • 平臺無關與高可擴展:應用定義與平臺層實現解耦,應用描述支持任意擴展和跨環境實現;
  • 模塊化應用運維特徵:可以自由組合和支持模塊化實現的運維特徵描述。

OAM 的核心模塊

1. 應用組件(Components)

在 OAM 中,“應用”是由多個概念共同組合而成。第一個概念是:應用組件(Components),它是整個應用的重要組成部分。應用組件既可以包括應用運行所依賴的服務:比如 MySQL 數據庫,也包括應用服務本身:比如擁有多個副本的 PHP 服務器。開發者可以把他們寫的代碼“打包”成一個應用組件,然後編寫配置文件來描述該組件與其他服務之間的關係。

應用組件的概念讓平臺架構師等能夠將應用分解成一個個可被複用的模塊,這種模塊化封裝應用組成部分的思想,代表了一種構建安全、高可擴展性應用的最佳實踐:通過一個完全分佈式的架構模型,實現了應用組件描述和實現的解耦。

2. 應用部署配置文件(Application Configuration)

為了將這些應用組件描述變成一個真正運行起來的應用,應用運維人員會通過一個專門的、包含了所有應用組件信息的部署配置文件來實例化這個待運行的應用。這個配置文件本身也是 OAM 規範中的一個聲明式 API,用來讓應用運維人員能夠根據開發者或者平臺提交的應用描述,實例化出對應的、真正運行起來的應用。

3. 應用運維特徵(Traits)

最後一個概念是一組應用運維特徵(Traits),它們描述了應用在具體部署環境中的運維特徵,比如應用的水平擴展的策略和 Ingress 規則,這些特徵對於應用的運維來說非常重要,但它們在不同的部署環境裡卻往往有著截然不同的實現方式。 舉一個簡單的例子,同樣是 Ingress,它在公有云上和本地數據中心的實現可能完全不同:前者一般是 SLB 這樣的雲服務,而後者則可能是一個專門的硬件。這也就意味著針對這兩個環境的 Ingress 運維工作,將會有天壤之別。 但與此同時,無論是在哪個環境裡,這個 Ingress 規則對於應用開發人員來說,可能是完全相同的。

應用特徵的設計,讓這種關注點分離成為可能:只要這兩個環境在 OAM 模型下提供了對 Ingress 這個應用運維特徵的實現,那麼應用就可以使用統一的 Ingress 規則描述,無差別地在這兩個地方運行起來。與此同時,這兩個環境的基礎設施供應商可以繼續通過配置這些應用特徵的實現,來滿足它們各自的運維要求(例如:不同環境裡 Ingress 實現在滿足合規性和安全性上的差異)。

一個基於 OAM 的可視化實現介紹

目前該平臺主要基於 OAM 的 V1 alpha1 版本實現,並且對於 OAM 的核心理念進行的抽象和封裝,以更符合用戶的使用習慣。在本文介紹的可視化部分背後,是完整的 OAM 格式的 yaml 文件。可視化 OAM 平臺主要包含兩大核心功能: 

1. 運維特徵模型

運維特徵模型主要是針對 OAM 的 Traits 的具體實例化,讓用戶可以把複雜的一些運維特性可以直接以插拔的形式直接讓應用發佈者去使用。目前平臺已經封裝了包含服務發佈、日誌蒐集、自動伸縮、存儲掛載等 8 個運維特徵的封裝。

1.png
圖 1 運維特徵模型倉庫

2. OAM 應用編排

OAM 應用編排功能將 OAM 的應用發佈全流程進行了可視化的實現,將應用組件添加、配置文件修改以及運維特徵添加等 OAM 的核心功能進行了抽象和封裝。OAM 應用編排目前包含以下核心功能:

  • 組件編排: 可視化添加平臺的組件並且進行組件的參數設置;
  • 運行特徵編排:在添加的平臺組件基礎上進行運維特徵的添加和編排(也為後續開發、運維關注點分離做準備);
  • OAM 版本管理:平臺會保存所有的 OAM 發佈版本,並且提供升級和回滾功能。

2.png
圖 2 OAM 應用編排主界面

接下來,我們會以一個典型應用(nginx+tomcat+redis)的部署來全面解析,如何在平臺上進行 OAM 的可視化發佈。

前置條件

運維特徵(Traints)應用模型已安裝,在界面上,可以快速查看有哪些運維特徵應用模型,以及它們的運行狀態。當前只支持系統定義的運維特徵,後續會開發自定義的運維特徵的生命週期管理。讓用戶可以編寫自己的運維特徵並且安裝到平臺進行使用。

3.png

OAM 應用創建流程

OAM 應用基本發佈流程:應用創建->新增組件->應用編排->保存版本->發佈應用。

  • 創建應用: 點擊應用->OAM 應用菜單, 點擊【創建應用】按鈕,輸入必填項;
  • 添加組件: 點擊【新增組件】按鈕,設置工作負載類型,容器配置等;

選擇想要創建的工作負載類型,目前已經將 Server、Singleton Server、Task、Singleton Task、Worker 以及 Singleton Worker 等六種核心的工作負載進行了封裝,用戶只需要在下拉框中勾選自己想要創建的負載類型即可。

4.png

在選擇完負載類型之後,用戶可以以可視化的形式去選擇想要發佈的鏡像以及容器的基本配置參數。同時,目前也支持基於多個容器的編排發佈。

5.png

  • 根據我們的需求,我們依次添加 tomcat、redis、mysql 三個組件,在界面上就可以看到組件的狀態,同時點擊“詳情”可以看到對應的 Kubernetes 資源信息;

6.png

查看組件的詳細信息。

7.png

  • 應用編排:在創建完需要部署的組件之後,我們的 OAM 應用已經具備了開發的屬性。

之後我們需要根據需求給每一個組件添加運維特徵:點擊進入應用編排界面,你可以看到剛才添加的組件已經展示在畫布之上;在畫布上點擊單個組件,可以看到目前適合該組件的運維特徵,勾選你所需要的運維特徵即可快速添加;在添加完運維特徵之後,會在右邊欄彈出運維特徵的配置參數,配置保存之後這些運維特徵即可生效;

8.png

  • 在添加完所有組件的運維特徵之後,我們就可以看到一個完整的編排完的 OAM 應用了。在 OAM 的 V2 版本,我們同時會再增加應用的依賴關係,用戶可以通過拖拽和連線來實現應用之間的依賴編排;

9.png

  • 保存版本:最後,我們可以點擊【保存當前內容為版本】按鈕,輸入版本號,點擊【確定】;

10.png

  • 發佈應用:點擊【發佈】按鈕,發佈應用

發佈應用後,組件狀態顯示‘已實例化’。應用實例狀態顯示“健康”。

11.png

點擊事件 tab 頁,顯示事件。

12.png

用戶可以快速查看已經創建的 ingress,並且進行訪問。

13.png
14.png

  • 用戶可以通過修改 traints 信息,快速對當前的應用進行修改和升級。

點擊進入應用編排界面,並且編輯 tomcat 實例數為 4。

15.png

將編輯後的版本,保存為當前版本則會直接講修改的配置更新到當前實例。如果選擇保存為新版本,則會將當前配置修改保存為模板,等待發布。我們將此修改保存為新版本。

16.png

點擊更新為此版本,進行剛才修改的配置發佈。發佈完成之後,我們可以看到有兩個版本的 OAM 應用模板。

17.png
18.png

查看詳情,確認 tomcat 實例數已經變更為 4,但是由於我們同時設置了自動擴縮容的實例為 3,因此在擴容之後又迅速變回實例 3。

19.png

至此,一個完整的部署和更新 OAM 應用的可視化流程就演示完了。

總結

如今 OAM Spec 已經迭代到了 v1alpha2 版本,新版本在堅持 OAM Spec 平臺無關的基礎上,整體變得更 Kubernetes 友好化,很大程度上平衡了標準與可擴展性,更好的支持已有的 CRD。也就是說,如果你已經編寫了現成的 CRD Operator,可以平滑的接入到 OAM 體系中,並且享受到 OAM 模型的紅利。

更詳細的新版本介紹可以閱讀OAM v1alpha2 新版發佈:平衡標準與可擴展性,靈活接入 CRD operator

該可視化平臺也已經在全面升級到 v1alpha2 的過程中,新版的支持可以更好的允許用戶編寫插件擴充平臺的功能。

該平臺來自於阿里雲戰略合作伙伴杭州諧雲科技,該平臺基於 OAM 實現的開源版本也已經在路上,大家敬請期待。

目前,OAM 規範和模型實際已解決許多現有問題,但它的路程才剛剛開始。OAM 是一箇中立的開源項目,我們歡迎更多的人蔘與其中,共同定義雲原生應用交付的未來。參與方式:

  • 釘釘掃碼進入 OAM 項目中文討論群

二維碼.png

杭州諧雲科技有限公司成立於 2016 年 7 月,公司核心團隊來自於浙江大學 SEL 實驗室,諧雲團隊在雲計算及相關領域具備深厚的技術積澱,在全球頂級開源社區 Docker、Kubernetes、Cloud Foundry 等項目貢獻累計超過 200 萬行代碼,排名全球第四,國內第一。團隊曾著書中國第一本深度解析容器雲的專業書籍《Docker 容器與容器雲》,是國內為數不多掌握底層核心技術的容器雲提供商。建設了目前中國最大的容器集群落地案例,支撐著國內最大的互聯網電視雲。

課程推薦

為了更多開發者能夠享受到 Serverless 帶來的紅利,這一次,我們集結了 10+ 位阿里巴巴 Serverless 領域技術專家,打造出最適合開發者入門的 Serverless 公開課,讓你即學即用,輕鬆擁抱雲計算的新範式——Serverless。

點擊即可免費觀看課程:https://developer.aliyun.com/learning/roadmap/serverless

阿里巴巴雲原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的公眾號。”

Leave a Reply

Your email address will not be published. Required fields are marked *