Kustomize
简介
Kustomize 是一种 Kubernetes 原生的配置管理工具,它允许用户通过 overlay 和组合来自定义 Kubernetes 资源定义(YAML 文件),而无需直接修改原始文件。
Kustomize 的核心概念
- Base:包含通用 Kubernetes 资源定义的基础配置。
- Overlay:用于修改 Base 配置的自定义层。
- kustomization.yaml:定义资源如何组合和修改的配置文件。
Argo CD 与 Kustomize 的集成通过启用声明式持续交付来增强 GitOps 实践。示例:
如果在 repoURL 和 path 位置存在 kustomization.yaml 文件,Argo CD 将使用 Kustomize 渲染清单。
Kustomize 支持以下配置选项:
namePrefix:附加到 Kustomize 生成的资源名称之前的前缀。nameSuffix:附加到 Kustomize 生成的资源名称之后的后缀。images:Kustomize 镜像覆盖列表。replicas:Kustomize 副本覆盖列表。commonLabels:添加到所有资源的标签映射。labelWithoutSelector:布尔值,用于定义 common labels 是否应应用于资源选择器和模板。forceCommonLabels:允许覆盖现有标签的布尔值。commonAnnotations:添加到所有资源的注解映射。namespace:Kubernetes 资源命名空间。forceCommonAnnotations:允许覆盖现有现有注解的布尔值。commonAnnotationsEnvsubst:启用注解值中环境变量替换的布尔值。patches:支持内联更新的 Kustomize patch 列表。components:Kustomize 组件列表。
要将 Kustomize 与 overlay 一起使用,请将 path 指向 overlay 目录。
优点
-
声明式配置:使用 YAML 文件(通过 kustomization.yaml)定义资源组合和修改。
-
无模板:通过 patch 和 overlay 自定义配置,而无需模板引擎。
-
Kubernetes 原生集成:Kustomize 已内置于 kubectl 中,无需额外工具。
使用场景
-
多环境分发:通过 Base 和 Overlay 实现环境特定配置(例如应用、集群)。
-
配置复用:非常适合在多个项目之间复用基础配置。
-
渐进式交付:通过 patch 逐步调整资源配置。
参考资料
有关更详细的信息,请参阅:Kustomize