Helm 与 Kustomize的思考与实践

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

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

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

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

不支持模版操作
复制代码

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

Functionality Kustomize Native Helm Native Kubectl
Templating No templating Complex templating No templating
Setup No separate setup Needs setup No separate setup
Configuration Manage multiple configurations with one base file Manage multiple configurations with one base file Should 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差异化部署不同的环境。

猜你喜欢

转载自juejin.im/post/7049738995957235720
今日推荐