這篇文章要介紹的是 Jenkins Operator 這個有趣的應用程式,Operator 的概念先前有不少文章再探討其架構與意義,因此本篇文章會專注於 Jenkins Operator 這個應用程式能夠為 Jenkins 的環境與應用帶來什麼樣的變化。
首先本文開始前,要先準備三個東西
1. Kubernetes Cluster
2. Helm 安裝環境
3. 一個放有你 Jenkins pipeline 與 script 的 SCM(Source Code Management),通常都是 Git
接下來作者透過 Helm 安裝了 Jenkins Operator 該控制器到 Kubernetes 內並且準備了相關的 CRD 用來控制 Jenkins.
範例中的 CRD 主要會做兩件事情
1. 設定 Jenkins 本身,包含要安裝哪些 Plugin 等
2. SeedJobs: 可以將外部 SCM 內所描述的 Job 內容給直接設定到 Jenkins 內
當該 CRD 給套用到 Kubernetes 後,該 Jenkins Operator 就會幫忙初始化整個 Jenkins 以及相關的 Plugin。最後將 SeedJobs 內所描述的資訊給整合到 Jenkins 中來創建相關的 Job.
透過這整個 CRD 操作帶來的好處我認為有
1. 整個過程盡量減少手動操作,全部都依賴 Yaml 與 Pipeline 等程式碼的方式去維護
2. 與 Kubernetes 整合,對於熟悉 Kubernetes 的操作人員來說,學習過程不會太痛苦。
3. 把 Jenkins 變得稍微簡單一些,一些繁瑣過程讓 Jenkins Operator 去操作
我自己看完後,目前看到的壞處有
1. Jenkins 功能太多,生態系太複雜,我懷疑這種 Operaotr 只是一時的專案,沒有一直保持更新的話一定會有些功能終究還是要手動操作
2. 設定的內容我認為不如 Jenkins 生態系中的 Configuration as Code 這套 Plugin 來的專業與強大
3. Job 的設定部分我個人還是偏好使用 Jenkins Job Builder 這套基於 YAML 的解決方案來管理與定義全部
結論:
1. 我個人是當作一個新東西看看,但是不會有想要嘗試的慾望,因為覺得事情其實沒有變得簡單多少,甚至擔心引入一個半成品,導致多一個東西要維護..
https://medium.com/swlh/introduction-to-jenkins-operator-f4cb7ebc2e0b
「yaml範例」的推薦目錄:
- 關於yaml範例 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
- 關於yaml範例 在 矽谷牛的耕田筆記 Facebook 的精選貼文
- 關於yaml範例 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
- 關於yaml範例 在 swagger_file/共通性資料存取應用程式介面(API)規範.yaml 的評價
- 關於yaml範例 在 Python 讀取yaml 檔案 的評價
- 關於yaml範例 在 logger dictConfig 範例· jenhaoyang/backend_blog Wiki · GitHub 的評價
- 關於yaml範例 在 什麽是YAML?和JSON格式有什麽不同?【明富其識】 的評價
yaml範例 在 矽谷牛的耕田筆記 Facebook 的精選貼文
這篇文章探討的是 kubectl 於 1.18 對於 kubectl run/kubectl create 改動所造成的影響,這個影響我認為層面不會太大,但是對於習慣用 kubectl run 的人來是一個滿大的困擾,簡單來說就是移除了一些用法,但是卻沒有任何替代解決方案可以取代。
kubectl v1.18 以前,你有至少三種方法可以部署一個 Deployment 到 Kubernetes 中
1. 撰寫程式並且透過相關函式庫直接戳 kubernetes API server 來創建資源
2. 手動撰寫 YAML 檔案,透過 kubectl apply -f 等類似方式創建
3. 透過 kubectl run (e.g kubectl run nginx-1 --image=nginx --port=80 --restart=Always) 此方式來動態創建一個 deployment.
基於各種維護與管理考量,任何的生產環境都會基於 (1)/(2) 這類型可以控管的方式來部署應用程式,基本上不會使用 (3) 這種方式來創建,但是 (3) 某些情況下滿好用的,譬如
1. 新手測試,想要快速起一個 deployment 測試,但是卻不知道去哪邊找一個 deployment Yaml 的範例(Deployment YAML 本身結構多層,人腦難以記住全貌)
2. 一些 OSS 專案想要提供使用者一些範例去操作,會提供 kubectl run 的指令來創建資源
作者還表示可以將 (2) + (3) 給結合,譬如透過下列方式可以產生一個 YAML 內容
kubectl run nginx-1 --image=nginx:1.14.2 --port=80 \
--restart=Always -o yaml --dry-run
接者透過這個範例去創建與修改來達到 (2) 的做法
不過這一切都隨者 kubectl v1.18 的改變而壞光了,因為 v1.18 後 kubectl run 不再支援 deployment 的創建,退而求其次要求使用者透過 kubectl create 去創建資源,但是其支援的參數比過往還要少,所以沒有辦法透過 kubectl create 取代 kubectl run 的所有用法。
詳細的一些內容與比較可以參閱全文
https://alexellisuk.medium.com/kubernetes-1-18-broke-kubectl-run-heres-what-to-do-about-it-2a88e5fb389a
PR: https://github.com/kubernetes/kubernetes/pull/87077
PR: https://github.com/kubernetes/kubectl/issues/898
yaml範例 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
對於 CD 操作來說,機密資訊管理一直以來都是重要的議題,我們都知道 Kubernetes Secret 本身只有編碼,沒有加密,因此要如何安全的管理這些機密資訊是個不可忽視的挑戰。
本篇文章採用的是 Helm Secret 的方式來處理這些機密資訊,Helm Secret 本身是基於 Helm Plugin 的架構而開發的,整體使用上就是基於 Helm Chart,這也意味者如果你採用的原生的 Yaml 格式,或是使用 Kustomize,那本篇的內容可能就對你沒太幫助。
作者強調本文不介紹太多關於 Helm Secret 的安裝與使用,相反的,透過一個範例來介紹 Helm Secret 的使用範例,並且針對每一個步驟都有經驗分享,避免大家踩雷
除了 Helm Secret 之外,其實也有非常多的套件再解決這類型的問題,而每個解決方案所採用的架構都不同,有集中管理,有將解密階段移到 Kubernetes 內,各自都有使用者,有機會的話可以每套都玩玩看,看看彼此的差異性與好處。
https://medium.com/@Devopscontinens/encrypting-helm-secrets-7f37a0ccabeb
yaml範例 在 Python 讀取yaml 檔案 的推薦與評價
本篇介紹如何用Python 讀取read yaml 檔案,yaml 檔案格式是常用設定檔格式, ... 以下範例使用with open 的寫法來開檔,之後在使用 yaml.load() ... ... <看更多>
yaml範例 在 logger dictConfig 範例· jenhaoyang/backend_blog Wiki · GitHub 的推薦與評價
後端部落格. The Twelve-Factor App · 部落格收藏. logging. logging yaml 範例. FastAPI. 官方基礎教學 · response motion jpeg · 模板. ... <看更多>
yaml範例 在 swagger_file/共通性資料存取應用程式介面(API)規範.yaml 的推薦與評價
swagger_file/共通性資料存取應用程式介面(API)規範.yaml ... 輸出範例之分類編號等於資料集詮釋資料之分類編號。 parameters: - $ref: '#/parameters/limitParam'. ... <看更多>