1 回答

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
僅用于澄清目的:
Helm是一個(gè)包管理器,您可以使用它以捆綁的方式將應(yīng)用程序安裝到集群上:它基本上為您提供了所有必要的YAML,例如ConfigMaps,Services,Deployments以及以正確方式啟動(dòng)和運(yùn)行所需應(yīng)用程序所需的任何其他內(nèi)容。
操作員本質(zhì)上是一個(gè)控制器。在 Kubernetes 中,每當(dāng)您執(zhí)行某些操作時(shí),都有許多不同的控制器定義“邏輯”(例如,如果您決定增加字段,則復(fù)制控制器會(huì)添加更多 Pod 的復(fù)制)。有太多的控制器無法將它們?nèi)苛谐霾为?dú)運(yùn)行,這就是為什么它們被編譯成一個(gè)稱為kube-controller-manager的二進(jìn)制文件。定制的控制器稱為運(yùn)算符,以便于區(qū)分。這些操作員只是監(jiān)視某些“事物”的狀態(tài),并在需要時(shí)執(zhí)行操作。大多數(shù)時(shí)候,這些“東西”將是CustomResources(CR),本質(zhì)上是通過應(yīng)用CustomResourceDefinitions(CRD)引入集群的新Kubernetes對(duì)象。
replicas
話雖如此,使用舵柄來部署操作員并不罕見,但是,盡量避免使用術(shù)語“舵機(jī)操作員”,因?yàn)樗鼘?shí)際上指的是非常具體的操作員,并且可能導(dǎo)致將來的混淆:https://github.com/fluxcd/helm-operator
所以我的問題是,我們能以某種方式在操作員內(nèi)部使用這些頭盔操作員嗎?
雖然您可以使用operator-sdk構(gòu)建自己的運(yùn)算符,然后允許您部署或觸發(fā)來自其他運(yùn)算符的某些事件(例如,通過編輯其CRD),但沒有理由這樣做。
到目前為止,我能想到的唯一方法是從部署應(yīng)用中調(diào)用 helm setup 控制臺(tái)命令。
您正在尋找的很可能是正確的 CI/CD 工作流。只需提交您在 Git 存儲(chǔ)庫中使用的 helm 圖表和 values.yaml
文件,并在每次進(jìn)行新提交時(shí)讓 CI/CD 工具(如 GitLab)將它們部署到您的集群中。helm install
更新:由于另一個(gè)人編輯了他的問題并留下了評(píng)論,我決定更新這篇文章:
該運(yùn)算符的主要目的是部署 X 數(shù)據(jù)庫。除此之外,我們希望有一個(gè)可以立即部署整個(gè)系統(tǒng)的單個(gè)運(yùn)算符/捆綁包。
您認(rèn)為將運(yùn)算符捆綁在另一個(gè)運(yùn)算符中是否有意義,就像使用 Helm 一樣?
不,它根本沒有意義。這正是掌舵的用途。使用helm,您可以捆綁東西,甚至可以將多個(gè)helm圖表捆綁在一起,這可能是您真正想要的。您可以有一個(gè)舵手圖,將所需的值向下傳遞到實(shí)際的操作員舵手圖,因此在多個(gè)位置使用類似于服務(wù)名稱的內(nèi)容。
對(duì)于操作員內(nèi)部的操作員,在配置操作員時(shí)是否仍需要單獨(dú)配置每個(gè)子操作員?
如上所述,這樣做沒有任何意義,它只是一種過度設(shè)計(jì)的方法。但是,如果您真的想采用操作員方法,基本上可以采用兩種方法:
編寫一個(gè)運(yùn)算符,通過更改其他運(yùn)算符的 CR、ConfigMaps 等來配置其他運(yùn)算符;使用這種方法,您將擁有一個(gè)有點(diǎn)輕量級(jí)的操作員,但是您必須確保它始終與您希望它干擾的所有不同操作員兼容(當(dāng)他們更改為具有重大更改的新CR,引入新的CR或類似的東西時(shí),您將不得不再次適應(yīng))。
apiVersion
將整個(gè)邏輯從現(xiàn)有運(yùn)算符中提取到運(yùn)算符中(即重建已經(jīng)存在的東西);使用這種方法,您將擁有一個(gè)大型的整體式應(yīng)用程序,維護(hù)起來將非常痛苦,因?yàn)槊慨?dāng)上游運(yùn)算符中有更新時(shí),您都必須不斷更新代碼
希望現(xiàn)在已經(jīng)很清楚,為“操作”其他運(yùn)算符構(gòu)建自己的運(yùn)算符會(huì)帶來很多痛苦的依賴關(guān)系,不應(yīng)該是要走的路。
是否可以部署不同的映像配置?例如,數(shù)據(jù)庫配置了不同的端口?
好的運(yùn)算符和舵手圖可以讓您開箱即用地執(zhí)行此操作,無論是通過相應(yīng)的CR / ConfigMap還是文件,但是,現(xiàn)在這取決于您將要使用的解決方案。因此,一般來說,答案是:是的,如果支持,這是可能的。values.yaml
- 1 回答
- 0 關(guān)注
- 179 瀏覽
添加回答
舉報(bào)