自定义资源
当使用自定义资源时(CRD),区分两个不同的部分很重要:
- CRD的声明。是一个具有
CustomResourceDefinition
类型的yaml文件。
Helm被优化为尽可能快地将尽可能多的资源加载到Kubernetes中。按照设计,Kubernetes可以获取一整套清单并将其全部上线 (称之为协调循环)。
对于CRD来说,声明必须在所有的CRD类型资源使用之前被注册。注册过程可能需要几秒钟。
随着Helm 3的到来,我们去掉了旧的钩子以便获取更简单的方法。现在可以在chart中创建一个名为crds
的特殊目录来保存CRD。 这些CRD没有模板化,但是运行helm install
时可以为chart默认安装。如果CRD已经存在,会显示警告并跳过。如果希望跳过CRD安装步骤, 可以使用--skip-crds
参数。
注意事项(和说明)
执行helm install
和 helm upgrade
时的参数目前不支持CRD。“模拟运行”的目的是检测chart的输出是否在发送到服务器时实际有效。 但是CRD是对服务器行为的修改。Helm无法在模拟运行时安装CRD,因此客户端无法知道自定义资源(CR),验证就会失败。 你可以将CRD移动到自己的chart中或者使用helm template
代替。
在讨论CRD支持时需要考虑的另一个重要点是如何处理模板的渲染。Helm 2中使用crd-install
的一个明显缺点是, 由于API可用性的变化导致无法有效验证chart(CRD实际上是向Kubernetes集群添加了另一个可用API)。 如果chart安装了CRD, helm
不再有一组有效的API版本可供使用。这也是从CRD删除模板支持的原因。有了CRD安装的新方法crds
,我们现在可以确保helm
拥有当前集群状态的完全有效的信息。
方法2: 分隔chart
这个方法要将每个chart分开安装,但对于具有集群管理员访问权限的操作员,这种工作流可能更有用。