使用kustomize管理配置文件

Posted by Zeusro on July 30, 2019
👈🏻 Select language

不用helm的原因

这篇文章 介绍得比较详细

helm2 像个巨婴。我个人无法喜欢。

我比较喜欢kustomize这种无侵入,轻量级的生成模式。

(后记:用了Helm3 一段时候后,发现helm3 基本能满足需求,而且helm 3 取消了服务端)

基本概念

base:含有一个kustomization.yaml文件的目录,可以被其他的kustomization.yaml来引用 resource:文件路径,指向一个声明了kubernetes API对象的YAML文件

patch: 文件路径,指向一个声明了kubernetes API patch的YAML文件

variant: 含有同一组bases的不同kustomization

术语

准备工作

  1. 升级kubectl到1.14版本
  2. 下载安装kustomize,并添加到$path

基本目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
├── base
│   ├── deployment.yaml
│   ├── kustomization.yaml
│   └── service.yaml
└── overlays
    ├── dev
    │   ├── kustomization.yaml
    │   └── patch.yaml
    ├── prod
    │   ├── kustomization.yaml
    │   └── patch.yaml
    └── staging
        ├── kustomization.yaml
        └── patch.yaml

实际运用

我写的例子

参考链接:

  1. https://zhuanlan.zhihu.com/p/38424955
  2. https://aisensiy.github.io/2018/11/27/helm-and-kustomize/
  3. https://yq.aliyun.com/articles/699126?spm=a2c4e.11163080.searchblog.38.273b2ec1q8XHEg
  4. https://kubernetes.io/docs/tasks/manage-kubernetes-objects/kustomization/

Reasons for Not Using helm

This article explains it in detail.

helm2 is like a giant baby. I personally can’t like it.

I prefer kustomize’s non-invasive, lightweight generation mode.

(Postscript: After using Helm3 for a while, I found that helm3 basically meets the requirements, and helm 3 removed the server side)

Basic Concepts

base: A directory containing a kustomization.yaml file that can be referenced by other kustomization.yaml files. resource: File path, pointing to a YAML file that declares a kubernetes API object.

patch: File path, pointing to a YAML file that declares a kubernetes API patch.

variant: Different kustomizations containing the same set of bases.

Terminology

Preparation

  1. Upgrade kubectl to version 1.14
  2. Download and install kustomize, and add it to $path

Basic Directory Structure

1
2
3
4
5
6
7
8
9
10
11
12
13
14
├── base
│   ├── deployment.yaml
│   ├── kustomization.yaml
│   └── service.yaml
└── overlays
    ├── dev
    │   ├── kustomization.yaml
    │   └── patch.yaml
    ├── prod
    │   ├── kustomization.yaml
    │   └── patch.yaml
    └── staging
        ├── kustomization.yaml
        └── patch.yaml

Practical Application

Example I wrote

  1. https://zhuanlan.zhihu.com/p/38424955
  2. https://aisensiy.github.io/2018/11/27/helm-and-kustomize/
  3. https://yq.aliyun.com/articles/699126?spm=a2c4e.11163080.searchblog.38.273b2ec1q8XHEg
  4. https://kubernetes.io/docs/tasks/manage-kubernetes-objects/kustomization/

Причины не использовать helm

Эта статья объясняет это подробно.

helm2 похож на гигантского младенца. Лично я не могу его полюбить.

Я предпочитаю неинвазивный, легковесный режим генерации kustomize.

(Постскриптум: После использования Helm3 некоторое время я обнаружил, что helm3 в основном удовлетворяет требованиям, и helm 3 удалил серверную сторону)

Основные концепции

base: Каталог, содержащий файл kustomization.yaml, который может быть ссылкой из других файлов kustomization.yaml. resource: Путь к файлу, указывающий на YAML-файл, который объявляет объект API kubernetes.

patch: Путь к файлу, указывающий на YAML-файл, который объявляет патч API kubernetes.

variant: Различные kustomizations, содержащие один и тот же набор баз.

Терминология

Подготовка

  1. Обновить kubectl до версии 1.14
  2. Скачать и установить kustomize, и добавить в $path

Базовая структура каталога

1
2
3
4
5
6
7
8
9
10
11
12
13
14
├── base
│   ├── deployment.yaml
│   ├── kustomization.yaml
│   └── service.yaml
└── overlays
    ├── dev
    │   ├── kustomization.yaml
    │   └── patch.yaml
    ├── prod
    │   ├── kustomization.yaml
    │   └── patch.yaml
    └── staging
        ├── kustomization.yaml
        └── patch.yaml

Практическое применение

Пример, который я написал

Ссылки:

  1. https://zhuanlan.zhihu.com/p/38424955
  2. https://aisensiy.github.io/2018/11/27/helm-and-kustomize/
  3. https://yq.aliyun.com/articles/699126?spm=a2c4e.11163080.searchblog.38.273b2ec1q8XHEg
  4. https://kubernetes.io/docs/tasks/manage-kubernetes-objects/kustomization/