原創-kustomize詳細教程


 

 kustomize

 

摘抄:kustomize能解決以下的痛點:

  1. 有一個統一的模板可以管理一個項目的 Kubernetes 部署結構。
  2. 有某種方式可以管理不同環境之間微小的差異。
  3. 每次更新基本就是修改鏡像的標簽然后部署,那么有沒有什么簡單的辦法實現之,而不是讓我每次都去修改 YAML 文件。
  4. 一般應用都會存在多套部署環境:開發環境、測試環境、生產環境,多套環境意味着存在多套 K8S 應用資源 YAML。而這么多套 YAML 之間只存在微小配置差異,比如鏡像版本不同、Label 不同等,而這些不同環境下的YAML 經常會因為人為疏忽導致配置錯誤。

簡單理解,kustomize識別kustomization.yaml文件,並按照kustomization.yaml中的指示做事,並且kustomization.yaml中可以繼續套用kustomization.yaml。

例如:發布一個busybox程序

yaml文件目錄:同級:base(基礎模板) release(線上正式)canary(線上灰度)

base:

 

 deploy是deployment,server是configmap,kustomization這樣定義:

 

意思是引用資源deploy和server,另外disableNameSuffixHash: true指的是在生成的從configmap或serect資源后不加入hash后綴,例如true的話,configmap為busybox,如果為false,configmap為busybox-addf333svaf,這樣deployment便查找不到名稱為busybox的cinfigmap。

---

release:

 

 這里線上環境需要加上hpa,kustomization這樣定義:

 

 這里namespace可以修改,replicas可以覆蓋base中的deployment數量。

---

canary:

 

 kustomization這樣定義:

 

 這里nameSuffix可以對canary生成的pod添加后綴-canary,同時加上labels。

---

這樣配置,便可以以base為模板,在release版本和canary版本自定義差異配置,release增加hpa,canary則添加canary后綴。直接kubectl apply -f kustomization.yaml即可生效。

 

參考文檔:

https://kubectl.docs.kubernetes.io/references/kustomize/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM