下载安装
-
Linux:
curl -s "https://raw.githubusercontent.com/ \
kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash
linux环境下,为方便命令行调用,可将文件移动到PATH变量下的bin目录:
sudo mv kustomize /usr/local/bin
- 其他方式参考官方文档
为什么使用
-
统一规范容器编排文件。
-
复用通用配置。
-
分环境管理编排文件。
-
专注于环境变量,存储卷等本地化的配置,无需关心端口,监控,发布等细节。
使用方式
使用前提:理解base编排的概念:base编排在远程git仓库,提供基础的约定好的配置,如端口,监控,健康监测,环境变量等。各应用程序以base编排为基础,自定义其余的内容。
1.创建目录结构
- 在项目根目录创建
kustomize文件夹,其中包含lan,test,prod三个子文件夹(内网,线上测试,正式环境), - 每个文件夹下必须有一个
kustomization.yaml文件,可选的env.yaml用于配置环境变量,volume.yaml用于配置存储卷。 - 运行脚本可根据情况自己配置。

2.修改kustomization.yaml配置说明
以下以学服系统(lmss-system)中的lan环境为例子

- ref的值为lan/test/master,分别对应内网,测试,正式环境,表示引用
base编排为基础。 - 用于替换标签app的name,即 labels下app: java 替换为app: lmss-system。
- 用于替换metadata的name,同理。
- 用于替换容器名称,同理。
- 镜像地址,同理。
- 用于声明扩展的自定义文件,图中示例是用于修改环境变量的env.yml,存储卷volume.yml。
综上,在同一个项目,三种不同的环境下,1处,5处不同,env.yml和volume.yml内容不同,2,3,4,6处配置可相同。
3.增加自定义配置(可选的)
自定义配置用于更新及增加base编排的配置,可以声明独立的yml文件,然后在上图中第6处列出。自定义的yml需要配置metadata的name和containers的name,用以匹配并更新。在base编排中,metadata的name为java,第一个containers的name为java。可以按照如下格式来填写自定义字段:
apiVersion: apps/v1
kind: Deployment
metadata:
name: java
spec:
template:
spec:
# 自定义编排,如声明存储卷
containers:
- name: java
# 自定义编排,如配置环境变量
4.生成最终的编排文件
使用kustomize build <path> 命令,生成最终编排文件。以下是按照上图文件结构,生成lan环境下编排。
kustomize build lan
附录:base编排的deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: java
name: java
spec:
selector:
matchLabels:
app: java
template:
metadata:
labels:
app: java
spec:
containers:
- image: java
name: java
ports:
- containerPort: 8080
name: web
- containerPort: 8081
name: actuator
imagePullSecrets:
- name: docker-secret
来源:oschina
链接:https://my.oschina.net/wecanweup/blog/4490042