Helm 与 Kustomize的思考与实践上

2,617 阅读1分钟

1、业务需求: 目前使用helm来管理项目的CD,但遇到以下痛点:

(1)多个环境需要多份chart;

(2)无法组织自己想要的kubernetes资源;比如有的项目只需要deployment、svc不需要ingress

2、后面想着直接用kustomize,但是也是有缺点的:

不支持模版操作

Kustomize、Helm、Kubectl的比较如下表格所示:

FunctionalityKustomizeNative HelmNative Kubectl
TemplatingNo templatingComplex templatingNo templating
SetupNo separate setupNeeds setupNo separate setup
ConfigurationManage multiple configurations with one base fileManage multiple configurations with one base fileShould have separate files for each different configuration

3、比较好的实践是结合两者:

image.png

可以先使用用helm的values.yaml文件里面的key、value充实模版

helm template [chart name] [flags]

然后把充实后的yaml文件使用Kustomize进行组织:

#### kustomization.yaml文件内容:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - service.yaml
  - deployment.yaml
 

接着可以通过sed命令修改kustomization.yaml文件,这样的话,就可以达到我们CD的过程中随意组织自己的k8s资源。

下次接着分享如何通过Kustomize差异化部署不同的环境。