偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

一篇帶給你kustomize 簡(jiǎn)明教程

開發(fā) 項(xiàng)目管理
kustomize 是一個(gè)通過 kustomization 文件定制 kubernetes 對(duì)象的工具,它可以通過一些資源生成一些新的資源,也可以定制不同的資源的集合。

[[398747]]

在上一篇文章當(dāng)中我們了解了 kubebuilder 的基本使用方法,通過 kubebuilder 實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的 operator 并運(yùn)行了起來。雖然整個(gè)程序跑起來了,但是還是存在著一些疑惑,除了上篇文章有提到過的 controller-gen 之外,makefile當(dāng)中還大量存在了 kustomize 這樣的命令,kustomize是什么,有什么用,怎么用?今天我們就一起來學(xué)習(xí)一下,在后續(xù)的文章當(dāng)中,我們還會(huì)用到一些 kustomize 特性來部署不同的環(huán)境。

簡(jiǎn)介

kustomize 是一個(gè)通過 kustomization 文件定制 kubernetes 對(duì)象的工具,它可以通過一些資源生成一些新的資源,也可以定制不同的資源的集合。

一個(gè)比較典型的場(chǎng)景是我們有一個(gè)應(yīng)用,在不同的環(huán)境例如生產(chǎn)環(huán)境和測(cè)試環(huán)境,它的 yaml 配置絕大部分都是相同的,只有個(gè)別的字段不同,這時(shí)候就可以利用 kustomize 來解決,kustomize 也比較適合用于 gitops 工作流。

bespoke config workflow image

如上圖所示,有一個(gè) ldap 的應(yīng)用,/base目錄保存的是基本的配置,/overlays里放置的不同環(huán)境的配置,例如 /dev、/staging,/prod這些就是不同環(huán)境的配置,/base等文件夾下都有一個(gè) kustomization .yml 文件,用于配置。

執(zhí)行 kustomize build dir的方式就可以生成我們最后用于部署的 yaml 文件,也就是進(jìn)行到了我們上圖的第四步,然后通過 kubectl apply -f命令進(jìn)行部署。

安裝

使用 kubebuilder 我們不需要額外進(jìn)行安裝,因?yàn)樵趫?zhí)行相關(guān) make 命令的時(shí)候,會(huì)自動(dòng)下載可執(zhí)行文件到 bin/ 目錄下

如果本地有 go 環(huán)境,可以執(zhí)行下列命令進(jìn)行安裝

  1. GOBIN=$(pwd)/ GO111MODULE=on go get sigs.k8s.io/kustomize/kustomize/v3 

除此之外也可以使用對(duì)應(yīng)操作系統(tǒng)的包管理器進(jìn)行安裝,例如 mac 可以使用 brew 進(jìn)行安裝

除了直接使用 kustomize 命令外,kubernetes 自 v1.14 之后也可以使用 kubectl kustomize的方式執(zhí)行 kustomize

布局

  1. ├── base 
  2. │   ├── deployment.yaml 
  3. │   ├── kustomization.yaml 
  4. │   └── service.yaml 
  5. └── overlays 
  6.     ├── dev 
  7.     │   ├── kustomization.yaml 
  8.     │   └── patch.yaml 
  9.     ├── prod 
  10.     │   ├── kustomization.yaml 
  11.     │   └── patch.yaml 
  12.     └── staging 
  13.         ├── kustomization.yaml 
  14.         └── patch.yaml 

一個(gè)常見的項(xiàng)目 kustomize 項(xiàng)目布局如上所示,可以看到每個(gè)環(huán)境文件夾里面都有一個(gè) kustomization.yaml 文件,這個(gè)文件里面就類似配置文件,里面指定源文件以及對(duì)應(yīng)的一些轉(zhuǎn)換文件,例如 patch 等

kustomization.yml

一個(gè)常見的 kustomization.yml 如下所示,一般包含 apiVsersion 和 kind 兩個(gè)固定字段

  1. apiVersion: kustomize.config.k8s.io/v1beta1 
  2. kind: Kustomization 
  3.  
  4. resources: 
  5. - manager.yaml 
  6.  
  7. configMapGenerator: 
  8. - files: 
  9.   - controller_manager_config.yaml 
  10.   name: manager-config 

kustomize 提供了比較豐富的字段選擇,除此之外還可以自定義插件,下面會(huì)大概列舉一下每個(gè)字段的含義,當(dāng)我們需要用到的時(shí)候知道有這么個(gè)能力,然后再去 Kustomize 官方文檔 查找對(duì)應(yīng)的 API 文檔就行了

  • resources 表示 k8s 資源的位置,這個(gè)可以是一個(gè)文件,也可以指向一個(gè)文件夾,讀取的時(shí)候會(huì)按照順序讀取,路徑可以是相對(duì)路徑也可以是絕對(duì)路徑,如果是相對(duì)路徑那么就是相對(duì)于 kustomization.yml的路徑
  • crds 和 resources 類似,只是 crds 是我們自定義的資源
  • namespace 為所有資源添加 namespace
  • images 修改鏡像的名稱、tag 或 image digest ,而無需使用 patches
  • replicas 修改資源副本數(shù)
  • namePrefix 為所有資源和引用的名稱添加前綴
  • nameSuffix 為所有資源和引用的名稱添加后綴
  • patches 在資源上添加或覆蓋字段,Kustomization 使用 patches 字段來提供該功能。
  • patchesJson6902 列表中的每個(gè)條目都應(yīng)可以解析為 kubernetes 對(duì)象和將應(yīng)用于該對(duì)象的 JSON patch。
  • patchesStrategicMerge 使用 strategic merge patch 標(biāo)準(zhǔn) Patch resources.
  • vars 類似指定變量
  • commonAnnotations 為所有資源加上 annotations 如果對(duì)應(yīng)的 key 已經(jīng)存在值,這個(gè)值將會(huì)被覆蓋
  1. commonAnnotations: 
  2.   app.lailin.xyz/inject: agent 
  3.  
  4. resources: 
  5. - deploy.yaml 
  • commonLabels 為所有資源的加上 label 和 label selector 注意:這個(gè)操作會(huì)比較危險(xiǎn)
  1. apiVersion: kustomize.config.k8s.io/v1beta1 
  2. kind: Kustomization 
  3.  
  4. commonLabels: 
  5.   app: bingo 
  • configMapGenerator 可以生成 config map,列表中的每一條都會(huì)生成一個(gè) configmap
  • secretGenerator 用于生成 secret 資源
  • generatorOptions 用于控制 configMapGenerator 和 secretGenerator 的行為

總結(jié)

看到 Kustomize 我的第一反應(yīng)是這個(gè)東西和 helm 有什么區(qū)別,Kustomize 沒有模板語法,只需要一個(gè)二進(jìn)制命令就可以生成對(duì)應(yīng)的 yaml 文件非常的輕量,而 helm 支持 GoTemplate,組件上也要多一些,并且 helm 通過 chart 包來進(jìn)行發(fā)布相對(duì)來說還是要重量級(jí)一些。個(gè)人覺得 Kustomize 更適合做 gitops 而 helm 更合適做應(yīng)用包的分發(fā)。

參考文獻(xiàn)

[^1]: Kustomize 官方文檔 https://kubectl.docs.kubernetes.io/zh/guides/

[^2]: 使用 Kustomize 對(duì) Kubernetes 對(duì)象進(jìn)行聲明式管理https://kubernetes.io/zh/docs/tasks/manage-kubernetes-objects/kustomization/

 

責(zé)任編輯:姜華 來源: mohuishou
相關(guān)推薦

2021-05-08 09:02:48

KubeBuilderOperatork8s

2022-07-06 07:57:37

Zookeeper分布式服務(wù)框架

2021-07-12 06:11:14

SkyWalking 儀表板UI篇

2021-09-18 07:43:33

ApolloJava配置中心

2021-10-14 09:58:24

消息中間件ActiveMQ Java

2021-06-21 14:36:46

Vite 前端工程化工具

2021-01-28 08:55:48

Elasticsear數(shù)據(jù)庫數(shù)據(jù)存儲(chǔ)

2023-03-29 07:45:58

VS編輯區(qū)編程工具

2021-04-14 14:16:58

HttpHttp協(xié)議網(wǎng)絡(luò)協(xié)議

2021-04-08 11:00:56

CountDownLaJava進(jìn)階開發(fā)

2022-03-22 09:09:17

HookReact前端

2021-07-21 09:48:20

etcd-wal模塊解析數(shù)據(jù)庫

2022-04-29 14:38:49

class文件結(jié)構(gòu)分析

2024-06-13 08:34:48

2021-03-12 09:21:31

MySQL數(shù)據(jù)庫邏輯架構(gòu)

2021-04-01 10:51:55

MySQL鎖機(jī)制數(shù)據(jù)庫

2022-02-17 08:53:38

ElasticSea集群部署

2022-02-25 15:50:05

OpenHarmonToggle組件鴻蒙

2021-07-08 07:30:13

Webpack 前端Tree shakin

2021-05-08 08:36:40

ObjectString前端
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)