微軟爲Kubernetes等平臺發佈Open Application Model

微軟最近發佈了Open Application Model(OAM),一個用於描述應用程序與其實現解耦(這樣就可以清楚地分離關注點)的規範。OAM的目標是Kubernetes和其他平臺。

在實施DevOps時通常需要維護開發(dev)和部署(ops)之間的描述,幫助協調交付工作流,而OAM規範的目標就是要促進這一過程。OAM的既定目標是“讓簡單的應用程序變簡單,讓複雜的應用程序易於管理”。Kubernetes平臺的最初實現叫作Rudr,它滿足了上述的大部分目標。

下圖(https://github.com/oam-dev/spec/#introduction)說明了不同的角色及其各自的職責,以及OAM規範的不同組成部分。

微軟還發布了Dapr,一個開源的“可移植、基於事件驅動的運行時,開發人員可以很容易地構建可在雲端運行的無狀態和有狀態微服務彈性應用程序”。Dapr的目標受衆是微服務開發人員,而Rudr的目標受衆是運維人員。

InfoQ採訪了微軟項目經理、規範負責人Vaclav Turecek。

Turecek談到了基於Kubernetes的平臺的快速增長,以及OAM如何區分開發人員和運維人員的職責,從而簡化整個軟件開發生命週期。他談到了其他一些平臺與OAM之間的重疊,以及OAM的獨特性。最後,他介紹了OAM社區及其路發展線圖。

InfoQ:OAM解決了哪些問題?

Vaclav Turecek:當談到應用程序的開發和部署時,我們認爲區分開發人員和運維人員的職責是很重要的一點。如果這些角色混淆不清,就會導致溝通問題,出現bug,甚至是服務中斷。OAM試圖根據應用程序構建和基礎設施運維的角色對應用程序進行建模,以此來解決這個問題。

具體地說,對於Kubernetes,我們已經發布了一個叫作Rudr的參考實現。我們認爲,OAM有助於簡化應用程序的組合和運維。Kubernetes專注於容器基礎設施,它的核心資源(如服務和部署)代表了應用程序的不同部分。它們不代表應用程序本身,而且實際上也並沒有可用於表示整個應用程序及其運維的構造。OAM爲應用程序提供了某種構造,將應用程序及其運維特徵(如自動伸縮、流量路由、攝入,等等)建模成一個整體。

InfoQ:OAM在Kubernetes生態系統中有何獨特之處?

Turecek:現如今,Kubernetes擁有一個巨大的工具和庫生態系統。在應用程序建模領域,我們還沒有看到太多與OAM類似的東西。我們可以拿Helm和CNAB與OAM作一下對比,但這並不僅僅是因爲Helm和CNAB的作者也是OAM的作者之一,還因爲它們都涉及部署應用程序的某個方面。

Helm和CNAB實際上是互補的,它們符合Unix“把單個事情做到極致”的哲學,因爲它們在這個領域解決了不同的問題,並且能夠很好地協作。例如,你可以描述應用程序的組件以及如何使用OAM操作它,並將其直接部署到Kubernetes上。需要引入其他依賴項?將OAM定義和依賴項放入Helm的chart中,然後一起安裝就可以了。需要在沒有訪問容器鏡像權限的Kubernetes集羣上運行?將Helm chart和容器鏡像一起放入CNAB包中,然後一起安裝就可以了。
OAM還允許基礎設施運維人員配置底層系統,底層操作系統可能提供了OAM應用程序可以訪問的運維特性。這意味着你可以掛載各種現有的工具和庫。例如,你可以掛載任何與SMI兼容的服務網格(如Istio或Linkerd),獲得負載均衡和流量路由功能。這樣可以滿足基礎設施運維人員在不同環境下的獨特需求,例如合規性或安全性,併爲開發人員和應用程序運維人員提供一個良好的應用程序環境。

InfoQ:OAM的目標包括多雲嗎?換句話說,它是否試圖跨多個K8s雲平臺“標準化YAML”?

Turecek:OAM的主要思想是標準化應用程序的組合和運維模型,不管最終的運行環境是怎樣的。因此,當你從一個平臺轉移到另一個平臺,你將擁有一致的體驗、一個可轉移的過程和潛在的可移植性。也就是說,我們預想實現平臺的功能會有所不同,模型就是圍繞這個假設而設計的。這是Kubernetes之上的一個層,Kubernetes只是一個支持平臺。

InfoQ:OAM規範是如何定義應用程序的,它與Helm有什麼不同?

Turecek:經過研究我們發現,人們無法在微服務“應用程序”的定義上達成一致。目前,OAM的設計並沒有打算爲微服務定義一個嚴格的“應用程序”結構。我們有應用程序範圍的概念,可以將它看成是應用程序服務分組的邊界。例如,將服務分在“健康”分組中,當升級其中一個服務時,我們會評估分組中每個服務的健康狀況。這與Helm的chart不同,後者沒有提供操作一組資源的功能。

InfoQ:是誰創建了OAM?誰在維護?它的發展路線圖是怎樣的?

Turecek:OAM是由Helm、OpenKruise和Service Fabric的作者開發的,目前微軟和阿里巴巴的工程師在維護,他們遵循的是Open Web Foundation協議。我們的最終目標是將規範捐贈給基金會。

Kubernetes平臺的最初實現叫作Rudr,可以在GitHub上找到。OAM規範提供了更詳細的信息,包括不同的角色、各自的職責,等等。

原文鏈接

Microsoft Announces Open Application Model for Kubernetes and Other Platforms

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章