
Kustomize的基本使用
什么是 Kustomize?
Kustomize允许您自定义原始的、无模板的 YAML 文件以用于多种用途,而原始 YAML 保持不变且可按原样使用。
kustomize 术语
在 kustomize 项目的文档中,经常会出现一些专业术语,这里总结一下常见的术语,方便后面讲解。
目录 | 描述 |
---|---|
kustomization |
术语 kustomization 指的是 kustomization.yaml 文件,或者指的是包含 kustomization.yaml 文件的目录以及它里面引用的所有相关文件路径 |
base |
base 指的是一个 kustomization , 任何的 kustomization 包括 overlay (后面提到),都可以作为另一个 kustomization 的 base (简单理解为基础目录)。base 中描述了共享的内容,如资源和常见的资源配置。 |
overlay |
overlay 是一个 kustomization, 它修改(并因此依赖于)另外一个 kustomization. overlay 中的 kustomization指的是一些其它的 kustomization, 称为其 base. 没有 base, overlay 无法使用,并且一个 overlay 可以用作 另一个 overlay 的 base(基础)。简而言之,overlay 声明了与 base 之间的差异。通过 overlay 来维护基于 base 的不同 variants(变体),例如开发、QA 和生产环境的不同 variants |
variant |
variant 是在集群中将 overlay 应用于 base 的结果。例如开发和生产环境都修改了一些共同 base 以创建不同的 variant。这些 variant 使用相同的总体资源,并与简单的方式变化,例如 deployment 的副本数、ConfigMap使用的数据源等。简而言之,variant 是含有同一组 base 的不同 kustomization。 |
resource |
在 kustomize 的上下文中,resource 是描述 k8s API 对象的 YAML 或 JSON 文件的相对路径。即是指向一个声明了 kubernetes API 对象的 YAML 文件 |
patch |
修改文件的一般说明。文件路径,指向一个声明了 kubernetes API patch 的 YAML 文件 |
安装 Kustomize
Windows安装可以使用巧克力。
choco install kustomize
使用脚本安装
curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash
简单示例
比如我们定义一个api.yaml
文件和一个ocelot.yaml
文件。
apiVersion: apps/v1
kind: Deployment
metadata:
name: ocelotapi
labels:
name: ocelotapi
spec:
replicas: 2
selector:
matchLabels:
name: ocelotapi
template:
metadata:
labels:
name: ocelotapi
spec:
containers:
- name: ocelotapi
image: aidasi/ocelotapi:v1
ports:
- containerPort: 80
imagePullPolicy: Always
---
kind: Service
apiVersion: v1
metadata:
name: ocelotapi
spec:
ports:
- port: 80
targetPort: 80
selector:
name: ocelotapi
apiVersion: apps/v1
kind: Deployment
metadata:
name: ocelot
labels:
name: ocelot
spec:
replicas: 1
selector:
matchLabels:
name: ocelot
template:
metadata:
labels:
name: ocelot
spec:
containers:
- name: ocelot
image: aidasi/ocelot:v1
ports:
- containerPort: 80
imagePullPolicy: Always
---
kind: Service
apiVersion: v1
metadata:
name: ocelot
spec:
ports:
- port: 80
targetPort: 80
selector:
name: ocelot
但是我们并没有定义它们的命名空间,所以我们通过定义kustomization.yaml
文件并通过kustomize build
来生成不同命名空间的。
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: my-namespace
resources:
- api.yaml
- ocelot.yaml
我这里定义生成的是my-namespace
的命名空间,以及所引用的资源是api.yaml
和ocelot.yaml
等文件。
如果我们要执行可以直接通过一下命令进行执行。
kustomize build | kubectl apply -f -
常用zd定义如下:
字段 | 描述 |
---|---|
namePrefix | 命名 |
namespace | 名称空间 |
commonLabels | 添加标签 |
commonAnnotations | 添加Annotations |
更多请参考:https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/replicas/
多分支示例
如果我们有两个不同的环境,那么我们可以更加不同的环境进行创建不同的文件夹,目录结构如下:
dev/kustomization.yaml
如下:
resources:
- ./../../base
namePrefix: dev-
namespace: dev
commonLabels:
nowenv: dev
commonAnnotations:
note: Bob Ocelot Project!
prod/kustomization.yaml
如下:
resources:
- ./../../base
namePrefix: prod-
namespace: swp-prod
commonLabels:
nowenv: prod
commonAnnotations:
note: Bob Ocelot Project!
replicas:
- name: ocelotapi
count: 4
然后我们通过kustomize build
显示不同Yaml资源的定义。
Argo CD部署
首先创建对应的命名空间。
kubectl create ns dev
将Argo暴露到本地
kubectl port-forward svc/argocd-server -n argocd 8080:443 --address=0.0.0.0
创建应用。
然后点击Create按钮,就创建成功了。
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
评价
排名
2
文章
636
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 :
好是好,这个对效率影响大不大哇,效率高不高
一个bug让程序员走上法庭 索赔金额达400亿日元
剑轩 : 有点可怕
ASP.NET Core 服务注册生命周期
剑轩 :
http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术