介绍
本文将会介绍Kustomize是什么以及如何使用它来渲染Kubernetes资源文件。Kustomize是K8S-SIG开发的一个渲染K8S资源文件的工具,主要应用于多集群环境,避免配置不一致带来的麻烦。

安装
使用以下命令可以在macOS上安装Kustomize:
brew install kustomize
如果需要手动安装,则可以使用以下命令:
curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash
同时,Kustomize也被集成在了kubectl中,可以直接使用kubectl kustomize来渲染Kubernetes资源文件。
使用
以下为使用Kustomize的步骤和实例:
创建Kustomize描述文件
首先,创建一个名为base的文件夹,并在该文件夹中创建一个名为kustomization.yaml的文件,并写入如下内容:
# 设置ns
namespace: test
resources:
- deployment.yaml
# 生成config
configMapGenerator:
- name: example-configmap-1
envs:
- env.conf
literals:
- FOO=Bar
# 生成secrets
secretGenerator:
- name: example-secret-2
literals:
- username=admin
# 通过文件生成secret
files:
- passwd.conf
generatorOptions:
# 只对生成的资源有效
disableNameSuffixHash: true
# 所有生成的资源都会有下面的标签
labels:
type: generated
# 所有生成的资源都会有下面的注解
annotations:
note: generated
# 镜像替换
images:
- name: nginx
newName: nginx
newTag: alpine
这里定义了所需生成的资源和镜像替换方式。
创建引用资源文件
接下来,在base文件夹中创建需要引用的资源文件,例如deployment.yaml。并在同级目录中创建.env文件,写入所需要的环境变量或配置信息。
需要注意的是,在Kustomize中,所有资源文件都由Kustomize生成。所以,这里的.env文件会被转换为Kubernetes资源文件。
编译执行
最后,使用kustomize build来生成Kubernetes资源文件。
kustomize build base
这样就可生成所需的Kubernetes资源文件。
用例
在实际应用中,通常一个服务在不同环境下会存在细微的差别。这时,可以用Kustomize在基本资源的基础上进行修改,例如在引用文件中添加所需的节点亲和关系和标签。
例如在测试环境中,需要给namespace加上dev等字段,以及添加节点亲和关系。可以使用以下命令来创建测试环境的Kustomize文件:
mkdir -p overlays/dev
在overlays/dev目录下创建相应的kustomization.yaml和引用资源文件即可。
使用kubectl apply -k可直接对Kustomize进行操作,例如:
kubectl apply -k overlays/dev
此时,即可在测试环境中使用所需的Kubernetes资源文件了。
结论
通过Kustomize,可以更加优雅地管理服务在各个资源的描述。同时,结合ArgoCD使用,可以让服务的部署更加舒适。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/7452.html
