挑戰
2016 年,Booking.com 遷移到 OpenShift 平台,讓產品開發人員能更快速地存取基礎架構。但由於 Kubernetes 對開發人員來說是抽象化的,因此當挑戰出現時,基礎架構團隊便成為「知識瓶頸」。試圖擴展該支援並不可行。
解決方案
在營運 OpenShift 一年後,平台團隊決定建構自己的原生 Kubernetes 平台,並要求開發人員學習一些 Kubernetes 才能使用它。「這不是一個神奇的平台,」B 平台軌跡首席開發人員 Ben Tyler 說道。「我們並不是聲稱您可以閉著眼睛使用它。開發人員需要學習一些東西,我們將盡一切努力確保他們能夠獲得這些知識。」
影響
儘管學習曲線陡峭,但新 Kubernetes 平台的採用率已大幅提升。在容器化之前,如果開發人員了解 Puppet,建立新服務可能需要幾天時間,如果不了解,則需要幾週時間。在新平台上,只需 10 分鐘即可完成。在前 8 個月內,大約有 500 個新服務建立在此平台上。
該團隊對這項技術提供的功能印象深刻,但由於其規模需要企業級功能(該網站平均每天處理超過 150 萬個房間晚間預訂),因此決定採用 OpenShift 平台。
B 平台軌跡首席開發人員 Ben Tyler 說:「這個平台採用了 Heroku 風格的高階 CLI 介面,確實很受我們產品開發人員的歡迎。我們讓他們能更快速地存取基礎架構。」
但他補充說:「但每當出現任何小問題時,開發人員都缺乏支援自己的必要知識。」
他說,在營運這個平台一年後,基礎架構團隊發現它已成為「知識瓶頸」。「大多數使用它的開發人員都不知道底層是 Kubernetes。應用程式故障和平台故障看起來都像是該 Heroku 風格工具的故障。」
擴展必要的支援似乎不可行或無法持續,因此平台團隊需要新的解決方案。他們在營運 OpenShift 平台時對 Kubernetes 的理解,使他們有信心建構自己的原生 Kubernetes 平台,並對其進行客製化以滿足公司的需求。
B 平台軌跡資深系統管理員 Eduard Iacoboaia 說:「對於進入這個領域,OpenShift 絕對非常有幫助。它向您展示了這項技術的功能,並讓您輕鬆使用它。在我們花了一些時間使用它之後,我們意識到我們需要更好地學習 Kubernetes,才能充分利用它的潛力。在那個時候,我們轉向建構我們自己的 Kubernetes 平台。從長遠來看,我們肯定會因為採取這一步驟並投入時間來獲得這些知識而受益。」
Iacoboaia 的團隊客製化了許多 OpenShift 工具,使其能在 Booking.com 上運作,他說:「那些整合點有點脆弱。我們花費了更多時間來理解 Kubernetes 的所有組件、它們如何運作、它們如何相互交互。」這項研究促使團隊從 OpenShift 的內建 Ansible playbook 轉向 Puppet 部署,Puppet 部署用於 Booking 其他基礎架構。控制平面也從叢集內部移至裸機,因為該公司運行著數以萬計的裸機伺服器以及用於在裸機上運行應用程式的大型基礎架構。(Booking 在其擁有計算資源的各個區域的多個資料中心的多個叢集中運行 Kubernetes。)Iacoboaia 說:「我們決定盡可能保持簡單,並且也使用我們最了解的工具。」
另一個重大改變是產品工程師必須學習 Kubernetes 才能上手。「這不是一個神奇的平台,」Tyler 說。「我們並不是聲稱您可以閉著眼睛使用它。開發人員需要學習一些東西,我們將盡一切努力確保他們能夠獲得這些知識。」這包括培訓、部落格文章、影片和 Udemy 課程。
儘管學習曲線陡峭,但新 Kubernetes 平台的採用率已大幅提升。「我認為我們能夠成功達成這項協議的原因是,我們並沒有要求他們學習專有的應用程式系統,」Tyler 說。「我們要求他們學習一些開源的東西,這些知識是可以轉移的。他們透過學習 Kubernetes 來投資自己的職業生涯。」
這項策略取得成功的明顯跡象之一是,在支援管道中,當使用者有問題時,其他產品工程師會積極回應。「我以前從未在公司內部看到圍繞特定平台產品的這種社群參與度,」Tyler 說。「這在很大程度上是因為它在公司外部明顯是生態系統標準,因此人們感受到投資於該知識並與他人分享的價值,這真的非常強大。」
還有其他可量化的證據:在容器化之前,如果開發人員了解 Puppet,建立新服務可能需要幾天時間,如果不了解,則需要幾週時間。在新平台上,只需 10 分鐘即可完成。「我們有教學課程。您按照教學課程操作。您的程式碼正在運行。然後,就到了業務邏輯時間,」Tyler 說。「獲取資源的時間大大縮短了。」在前 8 個月內,大約有 500 個新服務建立在此平台上,每天有數百個版本發布。
Tyler 說:「該平台提供了不同的『合約層級』。在最底層,它只是 Kubernetes。如果您是專業的 Kubernetes 使用者,這裡有一個 Kubernetes API,就像您從 GKE 或 AKS 獲得的一樣。我們正 চেষ্টা成為同一層級的供應商。但我們在公司內部的全部工作是提供比原生基礎架構更大的附加價值,因此我們為我們的主要堆疊 Perl 和 Java 提供了一組基礎映像檔。」
Tyler 說:「而且,隨著我們的使用者學習 Kubernetes 並成為更成熟的 Kubernetes 使用者,他們對我們施加壓力,要求我們提供更好、更原生的 Kubernetes 體驗,這非常棒。這是一個非常健康的動態。」
該平台還包括其他 CNCF 技術,例如 Envoy、Helm 和 Prometheus。Booking.com 的大多數關鍵服務流量都透過 Envoy 路由,而 Prometheus 主要用於監控基礎架構組件。Helm 作為封裝標準使用。該團隊還開發並開源了 Shipper,這是 Kubernetes 的一個擴展,用於添加更複雜的發布策略和多叢集協調。
可以肯定的是,關於從頭開始建構 Kubernetes 平台的明智性,內部已經進行過討論。「這並不是我們的核心競爭力,Kubernetes 和旅遊,它們有點相去甚遠,對吧?」Tyler 說。「但我們對 CNCF 組件做了一些賭注,這些組件對我們來說效果非常好。Envoy 和 Kubernetes 尤其對我們的組織非常有益。我們能夠客製化它們,無論是因為我們可以查看原始程式碼,還是因為它們具有擴展點,我們都能夠非常快速地從它們中獲得價值,而無需在內部更改任何範例。」