Kubernetes Operators和Helm圖表,互補還是競爭?
Kubernetes Operators和Helm圖表(Helm Charts)是互補而非競爭的技術。
在Kubernetes中,Helm圖表和Kubernetes Operators都是讓任務自動化的便捷工具,這些任務原本需要大量的人工工作。雖然它們都是為自動化而生,但它們并不是完全可互換的工具。來一起看看二者的工作方式,以及什么時候使用它們。

為什么需要Kubernetes Operators和Helm圖表?
手動編寫YAML文件對于大多數人來說并不容易,而且每次手動編寫自定義YAML都是不現實的,而且需要在Kubernetes集群中部署應用程序或修改配置設置。Helm圖表和Kubernetes Operators通過為管理員提供了一種將應用程序和配置部署到Kubernetes集群中的簡便方法。
而使用Helm還是Operators取決于要部署的應用程序類型以及所需的特殊配置。
Helm用例
Helm是Kubernetes的軟件包管理系統。使用稱為圖表(Charts)的打包格式,用戶可以將應用程序,比如Kafka或Apache HTTP打包為其他任何人都可以只用幾個命令就可以在Kubernetes集群上部署的格式,而幾乎不需要手動更改YAML文件。

如果你熟悉Linux上下文中的軟件包管理,那么Helm圖表應該很容易理解。它們類似于Debian或RPM軟件包,而Helm本身就像apt或dnf。就像你可以在Ubuntu上apt-get install [某些軟件包]一樣,也可以在Kubernetes上Helm安裝[某些軟件包],來讓應用程序快速啟動并運行。
Operators的用例
Operators還將應用程序打包為易于部署的格式,但他們要做的不止這些。使用Kubernetes自定義資源,管理員還可以在程序包中包含大量復雜的配置數據。
因此,可以使用Kubernetes Operators來以完全自動化的方式部署有狀態的應用程序;或者數據庫模式之類的事情;抑或以特定方式配置集群部署應用程序,來實現高可用性。確實,使用Kubernetes Operators時甚至不需要部署應用程序。用戶可以使用Kubernetes Operators來自動執行其他任務,例如執行備份或基于預定義模板以特殊方式配置集群。
與Helm圖表不同,Kubernetes Operators不好與其他平臺做比較,盡管它們可以與其他類型的工具進行比較。在某些方面,你可以認為Kubernetes Operators就像部署在Linux服務器上來修改服務器配置的Bash腳本一樣,盡管與一般的Bash腳本相比,Kubernetes Operators的打包和部署更加簡潔。
Kubernetes Operators在某些方面也許類似于操作系統鏡像文件,可以使用它來部署以特定方式設置的操作系統環境的副本。但是,Kubernetes Operators比鏡像文件更容易修改和部署。如果要部署OS鏡像,則必須從頭開始構建新的OS。相反,Kubernetes Operators可以部署在現有的Kubernetes集群上,僅更改Kubernetes Operators打算更改的集群配置那一部分。
什么時候使用Helm圖表和Kubernetes Operators?
什么時候應該使用Helm?什么時候使用Kubernetes Operators?其實答案取決于一下幾個因素:
- 只是在安裝應用程序嗎?如果主要目標是部署應用程序,那么Helm可能是更好的解決方案。
- 多少定制化?如果你正在部署通用應用程序并且覺得默認設置還可以,那么Helm就足夠了。但如果需要特殊配置,就可以使用Kubernetes Operators。
- 集群有多成熟?通常,當首次設置Kubernetes集群并想要部署應用程序時,Helm圖表最有用。當集群已經啟動并正在運行時,Kubernetes Operators會派上用場,來實現復雜的自定義配置或部署特殊的應用程序。
寫在最后,所以對于大多數技術團隊而言,使用Helm圖表和Kubernetes Operators來實現不同的目標。它們是互補的,而不是競爭的關系。都有助于自動化Kubernetes工作流程,并與其他人共享Kubernetes應用程序和配置,并可以解決不同類型的用例。