首页
视频
资源
登录
原
Kustomize的基本使用
5005
人阅读
2022/7/11 23:10
总访问:
1737643
评论:
0
收藏:
0
手机
分类:
容器编排
 >#Kustomize的基本使用 [TOC] 什么是 Kustomize? ------------ tn2>Kustomize允许您自定义原始的、无模板的 YAML 文件以用于多种用途,而原始 YAML 保持不变且可按原样使用。 kustomize 术语 ------------ tn2>在 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 ------------ tn2>Windows安装可以使用巧克力。 ```bash choco install kustomize ``` tn2>使用脚本安装 ```bash curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash ``` 简单示例 ------------ tn2>比如我们定义一个`api.yaml`文件和一个`ocelot.yaml`文件。 ```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 ``` ```yaml 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 ``` tn2>但是我们并没有定义它们的命名空间,所以我们通过定义`kustomization.yaml`文件并通过`kustomize build`来生成不同命名空间的。 ```yaml apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: my-namespace resources: - api.yaml - ocelot.yaml ```  tn2>我这里定义生成的是`my-namespace`的命名空间,以及所引用的资源是`api.yaml`和`ocelot.yaml`等文件。 如果我们要执行可以直接通过一下命令进行执行。 ```bash kustomize build | kubectl apply -f - ``` tn2>常用zd定义如下: | 字段 | 描述 | | ------------ | ------------ | | namePrefix | 命名 | | namespace | 名称空间 | | commonLabels | 添加标签 | | commonAnnotations | 添加Annotations | tn2>更多请参考:https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/replicas/ 多分支示例 ------------ tn2>如果我们有两个不同的环境,那么我们可以更加不同的环境进行创建不同的文件夹,目录结构如下:  tn2>`dev/kustomization.yaml`如下: ```yaml resources: - ./../../base namePrefix: dev- namespace: dev commonLabels: nowenv: dev commonAnnotations: note: Bob Ocelot Project! ``` tn2>`prod/kustomization.yaml`如下: ```yaml resources: - ./../../base namePrefix: prod- namespace: swp-prod commonLabels: nowenv: prod commonAnnotations: note: Bob Ocelot Project! replicas: - name: ocelotapi count: 4 ``` tn2>然后我们通过`kustomize build`显示不同Yaml资源的定义。 tn>关于项目地址如下:https://gitee.com/zuxiazijiahebo/k8s-ocelot/tree/master Argo CD部署 ------------ tn2>首先创建对应的命名空间。 ```bash kubectl create ns dev ``` tn2>将Argo暴露到本地 ```bash kubectl port-forward svc/argocd-server -n argocd 8080:443 --address=0.0.0.0 ``` tn2>创建应用。    tn2>然后点击Create按钮,就创建成功了。  
欢迎加群讨论技术,群号:677373950
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}
尘叶心繁
这一世以无限游戏为使命!
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
.net后台框架
155篇
linux
17篇
linux中cve
1篇
windows中cve
0篇
资源分享
10篇
Win32
3篇
前端
27篇
传说中的c
4篇
Xamarin
9篇
docker
15篇
容器编排
101篇
grpc
4篇
Go
15篇
yaml模板
1篇
理论
2篇
更多
Sqlserver
4篇
云产品
38篇
git
3篇
Unity
1篇
考证
2篇
RabbitMq
23篇
Harbor
1篇
Ansible
8篇
Jenkins
17篇
Vue
1篇
Ids4
18篇
istio
1篇
架构
2篇
网络
7篇
windbg
4篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2023
TNBLOG.NET
技术交流:
群号677373950
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术