主页

索引

模块索引

搜索页面

3.7.3. Kustomize

  • github [1]

  • 官网 [2]

  • kubectl1.14使用Kustomize2.0.3

  • kubernetes 1.14 发布时候,它被集成到 kubectl 中,成为了一个子命令

  • Kustomize 允许用户以一个应用描述文件 (YAML 文件)为基础(Base YAML),然后通过 Overlay 的方式生成最终部署应用所需的描述文件,而不是像 Helm 那样只提供应用描述文件模板,然后通过字符替换(Templating)的方式来进行定制化。——张磊

  • Kustomize introduces a template-free way to customize application configuration that simplifies the use of off-the-shelf applications. Now, built into kubectl as apply -k.

安装 [3]

二进制安装:

$ curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" -o install_kustomize.sh
$ cat install_kustomize.sh | bash

Go安装:

$ GO111MODULE=on go install sigs.k8s.io/kustomize/kustomize/v3
// 安装指定版本
$ GO111MODULE=on go get sigs.k8s.io/kustomize/kustomize/v3@v3.3.0

Mac安装:

$ brew install kustomize

检测:

$ kustomize version

实例1: 简单使用

命令:

$ cd demo-go/tree/master/k8s
$ DEMO_HOME=./kustomize/helloWorld
$ BASE=$DEMO_HOME/base
$ cp $BASE/kustomization_base.yaml $BASE/kustomization.yaml

$ kustomize build $BASE

修改commonLabels查看效果:

$ sed -i.bak 's/app: hello/app: my-hello/' $BASE/kustomization.yaml
看效果:
$ kustomize build $BASE | grep -C 3 app:

实例2: Overlays使用

包含 staging 和 production 的 overlay:

Staging 包含生产环境中无法应用的带有风险的功能
Production 包含更多的副本数

指定overlays目录:

$ OVERLAYS=$DEMO_HOME/overlays

生成staging:

$ kustomize build $OVERLAYS/staging

生成production版:

$ kustomize build $OVERLAYS/production

直接比较 staging 和 production 输出的不同:

diff \
  <(kustomize build $OVERLAYS/staging) \
  <(kustomize build $OVERLAYS/production) |\
  more

部署:

$ kustomize build $OVERLAYS/staging | kubectl apply -f -
$ kustomize build $OVERLAYS/production | kubectl apply -f -

// 使用 kubectl(v1.14.0 以上版本):
$ kubectl apply -k $OVERLAYS/staging
$ kubectl apply -k $OVERLAYS/production

其他实例

实例1:

$ kustomize edit set image {your-docker-registry}:${DRONE_BUILD_NUMBER}

参考

主页

索引

模块索引

搜索页面