
作者 | 徐運元,杭州諧雲科技合夥人及資深架構師,雲計算行業和 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 運維特征模型倉庫
2. OAM 應用編排
OAM 應用編排功能将 OAM 的應用釋出全流程進行了可視化的實作,将應用元件添加、配置檔案修改以及運維特征添加等 OAM 的核心功能進行了抽象和封裝。OAM 應用編排目前包含以下核心功能:
- 元件編排: 可視化添加平台的元件并且進行元件的參數設定;
- 運作特征編排:在添加的平台元件基礎上進行運維特征的添加和編排(也為後續開發、運維關注點分離做準備);
- OAM 版本管理:平台會儲存所有的 OAM 釋出版本,并且提供更新和復原功能。
圖 2 OAM 應用編排主界面
接下來,我們會以一個典型應用(nginx+tomcat+redis)的部署來全面解析,如何在平台上進行 OAM 的可視化釋出。
前置條件
運維特征(Traints)應用模型已安裝,在界面上,可以快速檢視有哪些運維特征應用模型,以及它們的運作狀态。目前隻支援系統定義的運維特征,後續會開發自定義的運維特征的生命周期管理。讓使用者可以編寫自己的運維特征并且安裝到平台進行使用。
OAM 應用建立流程
OAM 應用基本釋出流程:應用建立->新增元件->應用編排->儲存版本->釋出應用。
- 建立應用: 點選應用->OAM 應用菜單, 點選【建立應用】按鈕,輸入必填項;
- 添加元件: 點選【新增元件】按鈕,設定工作負載類型,容器配置等;
選擇想要建立的工作負載類型,目前已經将 Server、Singleton Server、Task、Singleton Task、Worker 以及 Singleton Worker 等六種核心的工作負載進行了封裝,使用者隻需要在下拉框中勾選自己想要建立的負載類型即可。
在選擇完負載類型之後,使用者可以以可視化的形式去選擇想要釋出的鏡像以及容器的基本配置參數。同時,目前也支援基于多個容器的編排釋出。
- 根據我們的需求,我們依次添加 tomcat、redis、mysql 三個元件,在界面上就可以看到元件的狀态,同時點選“詳情”可以看到對應的 Kubernetes 資源資訊;
檢視元件的詳細資訊。
- 應用編排:在建立完需要部署的元件之後,我們的 OAM 應用已經具備了開發的屬性。
之後我們需要根據需求給每一個元件添加運維特征:點選進入應用編排界面,你可以看到剛才添加的元件已經展示在畫布之上;在畫布上點選單個元件,可以看到目前适合該元件的運維特征,勾選你所需要的運維特征即可快速添加;在添加完運維特征之後,會在右邊欄彈出運維特征的配置參數,配置儲存之後這些運維特征即可生效;
- 在添加完所有元件的運維特征之後,我們就可以看到一個完整的編排完的 OAM 應用了。在 OAM 的 V2 版本,我們同時會再增加應用的依賴關系,使用者可以通過拖拽和連線來實作應用之間的依賴編排;
- 儲存版本:最後,我們可以點選【儲存目前内容為版本】按鈕,輸入版本号,點選【确定】;
- 釋出應用:點選【釋出】按鈕,釋出應用
釋出應用後,元件狀态顯示‘已執行個體化’。應用執行個體狀态顯示“健康”。
點選事件 tab 頁,顯示事件。
使用者可以快速檢視已經建立的 ingress,并且進行通路。
- 使用者可以通過修改 traints 資訊,快速對目前的應用進行修改和更新。
點選進入應用編排界面,并且編輯 tomcat 執行個體數為 4。
将編輯後的版本,儲存為目前版本則會直接講修改的配置更新到目前執行個體。如果選擇儲存為新版本,則會将目前配置修改儲存為模闆,等待釋出。我們将此修改儲存為新版本。
點選更新為此版本,進行剛才修改的配置釋出。釋出完成之後,我們可以看到有兩個版本的 OAM 應用模闆。
檢視詳情,确認 tomcat 執行個體數已經變更為 4,但是由于我們同時設定了自動擴縮容的執行個體為 3,是以在擴容之後又迅速變回執行個體 3。
至此,一個完整的部署和更新 OAM 應用的可視化流程就示範完了。
總結
如今 OAM Spec 已經疊代到了
v1alpha2版本,新版本在堅持 OAM Spec 平台無關的基礎上,整體變得更 Kubernetes 友好化,很大程度上平衡了标準與可擴充性,更好的支援已有的 CRD。也就是說,如果你已經編寫了現成的 CRD Operator,可以平滑的接入到 OAM 體系中,并且享受到 OAM 模型的紅利。
更詳細的新版本介紹可以閱讀
《 OAM v1alpha2 新版釋出:平衡标準與可擴充性,靈活接入 CRD operator 》該可視化平台也已經在全面更新到 v1alpha2 的過程中,新版的支援可以更好的允許使用者編寫插件擴充平台的功能。
該平台來自于阿裡雲戰略合作夥伴杭州諧雲科技,該平台基于 OAM 實作的開源版本也已經在路上,大家敬請期待。
- OAM 平台試用網址: http://139.196.197.117:30088/ 使用者名/密碼: admin/Ab123456
- Demo 中所有的 yaml 檔案請通路 github 位址檢視: https://github.com/harmonycloud/oam-simple-demo
目前,OAM 規範和模型實際已解決許多現有問題,但它的路程才剛剛開始。OAM 是一個中立的開源項目,我們歡迎更多的人參與其中,共同定義雲原生應用傳遞的未來。
杭州諧雲科技有限公司成立于 2016 年 7 月,公司核心團隊來自于浙江大學 SEL 實驗室,諧雲團隊在雲計算及相關領域具備深厚的技術積澱,在全球頂級開源社群 Docker、Kubernetes、Cloud Foundry 等項目貢獻累計超過 200 萬行代碼,排名全球第四,國内第一。團隊曾著書中國第一本深度解析容器雲的專業書籍《Docker 容器與容器雲》,是國内為數不多掌握底層核心技術的容器雲提供商。建設了目前中國最大的容器叢集落地案例,支撐着國内最大的網際網路電視雲。
課程推薦
為了更多開發者能夠享受到 Serverless 帶來的紅利,這一次,我們集結了 10+ 位阿裡巴巴 Serverless 領域技術專家,打造出最适合開發者入門的 Serverless 公開課,讓你即學即用,輕松擁抱雲計算的新範式——Serverless。
點選即可免費觀看課程:
https://developer.aliyun.com/learning/roadmap/serverless“ 阿裡巴巴雲原生 關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的公衆号。”