使用OperatorHub.io自動化群集上的操作
作者:Diane Mueller,紅帽雲平臺社群發展總監
開發者和Kubernetes管理員面臨的重要挑戰之一,是缺乏快速查詢在Kubernetes提供運營就緒的公共服務的能力。通常情況下,存在特定服務的Operator - 這種模式在2016年推出並獲得了動力 - 對於Kubernetes服務的運營就緒是一個很好的訊號。但是,迄今為止還沒有Operator登錄檔來簡化發現此類服務。
為了幫助應對這一挑戰,今天Red Hat與AWS、Google Cloud和Microsoft合作推出OperatorHub.io。OperatorHub.io使開發者和Kubernetes管理員能夠查詢和安裝策劃好的、Operator支援的服務,其中包括基礎文件、社群或供應商的主動維護、基本測試以及Kubernetes優化生命週期管理的打包。
目前在OperatorHub.io中的Operator只是開始。我們邀請Kubernetes社群加入我們,通過在OperatorHub.io上開發、打包和釋出Operator,為Operator建立一個充滿活力的社群。
OperatorHub.io提供什麼?
OperatorHub.io旨在滿足Kubernetes開發者和使用者的需求。對於前者,它提供了通用的登錄檔,他們可以在其中釋出他們的Operator以及描述、相關的詳細資訊,如版本、映象、程式碼倉庫,並打包準備方便安裝。他們也可以對已釋出的Operator釋出更新版本。
使用者可以在一箇中心位置發現和下載Operator,該Operator的內容已根據前面提到的標準進行篩選並掃描已知漏洞。此外,開發者可以使用他們引入的CustomResources的說明性示例,指導其Operator的使用者,與應用程式進行互動。
Operator是什麼?
Operator最初由CoreOS於2016年推出,並已被Red Hat和Kubernetes社群用作打包、部署和管理Kubernetes原生應用程式的方法。Kubernetes原生應用程式是一個部署在Kubernetes上的應用程式,使用Kubernetes API和眾所周知的工具進行管理,如kubectl。
Operator實現為自定義控制器,用於監視某些Kubernetes資源的顯示、修改或刪除。這些通常是Operator“擁有”的CustomResourceDefinition。在這些物件的spec屬性中,使用者宣告應用程式或操作的所需狀態。Operator的協調迴圈將選擇這些,並執行所需的操作以實現所需的狀態。例如,可以通過建立EtcdCluster型別的新資源,來表達建立高可用性etcd叢集的意圖:
apiVersion: "etcd.database.coreos.com/v1beta2" kind: "EtcdCluster" metadata: name: "my-etcd-cluster" spec: size: 3 version: "3.3.12"
這樣,EtcdOperator將負責建立執行版本v3.3.12的3節點etcd叢集。類似地,可以定義型別為EtcdBackup的物件,以表示建立etcd資料庫一致備份到S3儲存桶的意圖。
如何建立和執行Operator?
一種入門方法是使用 Operator框架 ,這是一個開源工具包,提供SDK、生命週期管理、計量和監視功能。它使開發者能夠構建、測試和打包Operator。Operator可以用幾種程式設計和自動化語言實現,包括Go、Helm和Ansible,這三種語言都直接由SDK支援。
如果你有興趣建立自己的Operator,我們建議你檢視Operator框架以開始使用。
Operator的功能範圍各不相同,從基本功能到應用程式的特定操作邏輯,以及備份、恢復或調整等高階方案的自動化。除了基本安裝之外,高階Operator可以更加無縫地處理升級並自動應對故障。目前,OperatorHub.io上的Operator來自不同成熟度範圍,但我們預計它們會隨著時間而持續成熟。
雖然不需要使用SDK實現OperatorHub.io上的Operator,但它們是打包給通過Operator Lifecycle Manager(OLM)進行部署。格式主要由稱為 ClusterServiceVersion 的YAML清單組成。它提供有關Operator擁有或要求的CustomResourceDefinitions的資訊、所需的RBAC定義、儲存影象的位置等。此檔案通常附帶定義Operator自己的CRD的其他YAML檔案。OLM在使用者請求安裝Operator以提供依賴性解析和自動化時處理此資訊。
OperatorHub.io上的Operator列表是什麼意思?
要列出,Operator必須成功顯示群集生命週期功能,打包為CSV並通過OLM維護,以及為其預期使用者提供可接受的文件。
目前在OperatorHub.io上列出的Operator的一些示例包括:Amazon Web Services Operator、Couchbase Autonomous Operator、CrunchyData’s PostgreSQL、etcd Operator、Jaeger Operator for Kubernetes、Kubernetes Federation Operator、MongoDB Enterprise Operator、Percona MySQL Operator、PlanetScale’s Vitess Operator、Prometheus Operator和Redis Operator。
想要將你的Operator新增到OperatorHub.io?跟著這些步驟
如果你有現有的Operator,請遵循 貢獻指南 使用社群Operator倉庫的分支。每個貢獻包含CSV、所有CustomResourceDefinitions、訪問控制規則以及安裝和執行Operator所需的容器映像的資料,其功能描述和支援的Kubernetes版本等其他資訊。EtcdOperator可以作為完整的示例,包括Operator的多個版本。
在你自己的叢集上測試Operator之後,將PR提交到社群儲存庫,其中包含此目錄結構的所有YAML檔案。可以以相同的方式釋出Operator的後續版本。剛開始這將是手動審查,但往後會自動化。由維護者合併之後,它將顯示在OperatorHub.io上,以及其文件和方便的安裝方法。
想了解更多?
- 參加即將舉行的Kubernetes Operator框架實踐研討會:3月7日在Pasadena的 ScaleX 舉行,以及 3月11日在Santa Clara的OpenShift Commons Gathering on Operating舉行
- 聽聽 Daniel Messer和Diane Mueller關於“Operator現況”的OpenShift Commons簡報
- 加入社群 Kubernetes-Operator Slack Channel 和 Operator框架Google Group 的線上對話
- 最後,閱讀如何將你的Operator新增到OperatorHub.io: https://operatorhub.io/contri...
KubeCon + CloudNativeCon和Open Source Summit大會日期:
- 會議日程通告日期:2019 年 4 月 10 日
- 會議活動舉辦日期:2019 年 6 月 24 至 26 日