我正在尝试创建一个基于 helm 的操作符,并且在大多数情况下,我已经让它工作了。但是,我需要确保在操作员尝试从这些子图创建资源之前安装子图。例如,我有 mongodb 社区操作员舵图作为子图。但是,当我部署操作员时,我收到以下错误
安装版本失败:无法从版本清单中构建 kubernetes 对象:找不到名称的资源映射:“test-mongodb”命名空间:“”中的“默认”:版本“mongodbcommunity.mongodb”中的类型“MongoDBCommunity”不匹配。 com/v1" 确保首先安装 CRD。
看起来它试图在实际安装操作符和 crds 之前创建 mongodb 实例。我如何强制它首先安装子图,然后尝试创建 mongodb 实例。
在 chart.yaml 中,您可以使用 condition 和 tag
dependencies:
- name: subchart
version: 0.0.1
repository: https://chart.github.io/helm-charts
condition: subchart.enabled
因此,如果图表名称为 subchart 尚未安装在集群中,则会抛出错误。
官方文档:https://helm.sh/docs/chart_best_practices/dependency/
如果您有多个子图表作为依赖项,您也可以使用 tags