本篇是一個新手教學文,作者分享如何撰寫一個基於 Library 概念的 Helm Chart。
Helm Chart 的使用基本上不會太困難,透過 Helm Create 也可以很輕鬆地創造出一個範例 Helm Chart,針對該 Helm Chart 簡單修改也可以變成符合使用者需求的 Helm Chart。
作者工作中遇到一個要求,該要求要將一個 mono-repo 內的所有應用程式都變成 Helm Chart 的形式,該 repo 內大概有 10 個左右的應用程式,而這些應用程式部署所需要的資源都差不多,因此最簡單的方式就是創建十個幾乎完全一樣的 Helm Chart,透過 values.yaml 來客製化每個服務即可。
不過作者認為這種做法有點痛苦,要是未來需要針對這些k8s資源加上一些定義或是一些欄位,有可能就要 Copy&Paste 十次來處理所有的 Helm Chart。
為了解決這個問題作者就嘗試創建第一個 Helm Chart Library,只要到 Charts.yaml 裏面將 type 修改為 library 即可。(一般來說是 application)
作者特別提到,Helm 在處理部署的時候,只要檔案開頭為_,則該資源就不會被嘗試部署到 Kubernetes 內,這也是為什麼預設的 helper 會叫做 _helpers.tpl。
對於開發一個供其他 Helm Chart 使用的 Library Helm Chart 有興趣的可以參考這個文來看看一個簡單的範例
https://medium.com/nontechcompany/how-i-create-my-first-library-helm-chart-4f23caf5287d
k8s教學 在 矽谷牛的耕田筆記 Facebook 的最佳解答
這篇文章是 Tekton 這套號稱完全針對 Cloud-Native 所發展的 CI/CD 工具教學文,作者從基本概念到如何使用都詳細的介紹一番,讓讀者看完就對 Tekton 能夠有基本的認知。
就如同其他常見的 Pipeline 系統一樣,Tekton 的工作流程是由 Step, Task 以及 Pipeline 組成。Tekton 使用 Step 描述每個最小工作事項,而每個 Task 則由數個 Step 組成,這些 Step 會依序執行,且彼此會共用相同環境,譬如 Volume.
Pipeline 則是由數個 Task 所組成,不過比較特別的是這些 Task 可以有更為靈活的執行順序,譬如依序執行,平行執行,甚至是 DAG 這種有向無環圖的執行順序。
Tekton 的一大特色是其完全寄生於 Kubernetes 內,必須要搭配 k8s 的環境來使用,也因此上述的 Step,Task 以及 Pipeline 實質上都是屬於 K8s 的 CRD 一種,部署時需要透過 YAML 來撰寫,並且用常見的方式 (kubectl, helm, kustomize) 來安裝到 k8s 內去設定 Tekton。
這種模式帶來的一個好處就是每個元件都是獨立的 YAML 檔案與類別,因此相同的部分可以非常輕易的被重複使用,舉例來說一個運行 Git-Clone 的 Task 就可以被多個不同的 Pipeline 重複使用,而有需求需要修改的時候也只需要修改一個 Task 即可。
對於 Tekton 這套解決方案有興趣的可以參閱下列全文玩耍看看
https://lambda.grofers.com/adopting-tekton-cloud-native-ci-solution-67fb229f4992
k8s教學 在 矽谷牛的耕田筆記 Facebook 的精選貼文
本篇是一個新手教學文,主要探討的時如何將 Jenkins 裝到 Kubernetes 內,並且使用 Kuberentes Pod 作為 Jenkins Agent 來使用。
未來透過 Jenkins 去執行 job 時會透過 Kubernetes Pod 來運行這些流程。
本文圖文並茂,對於有這個需求的使用者可以參考看看如何安裝與設定。
註:
到底要不要將 Jenkins 放到 Kubernetes 內是一個沒有答案的問題,思考這個問題時先反過來思考,將 Jenkins 放到 Kubernetes 內帶來什麼樣的特色?
1. 如果 Jenkins server 本身沒有 AA 的架構的話,意味 Jenkins 本身也只能運行一個 Pod 來處理流量。
2. Jenkins Server 本身也是 K8S Pod 的話,可以透過 service account 的方式更容易的與 k8s 溝通,這也是如何透過 k8s pod 當 Jenkins agent 的原因。
如果需要於 Jenkins Job 去執行 CD 步驟時,這樣的架構可以省去 kubeconfig 的額外準備,讓溝通更簡單
3. Jenkins 本身的設定非常多也很複雜,要如何永久性的保存 Jenkins 的設定非常麻煩。儲存方面就要引入 PV/PVC 來確保空間一致。此外如何透過 IaC 等架構來設定 Jenkins 並且引入版本控制的概念來確保 Jenkins 設定不會亂跑都是很大的議題。
最後想探討的是,如果是第一次進入這個領域,要使用 Jenkins 必須要有很強的動機來說服自己為什麼選擇最困難的 Jenkins 而非其他的開源專案
https://medium.com/codex/jenkins-on-kubernetes-part-1-2fb37c8adb39
k8s教學 在 Kubernetes Taiwan User Group - Facebook 的推薦與評價
This is a platform where everyone can exchange Kubernetes-related technologies! ... 入門|介紹|程式|教學|教程對於「分散式架構」主題,數十年來都維持著討論 ... ... <看更多>
k8s教學 在 CentOS 7 上安裝K8s 自家練習環境 - FuFu IO 的推薦與評價
稍後進行kubeadm init 之後,即會產生此檔案/var/lib/kubelet/config.yaml,而且此服務會自行重啟,直到成功。 K8s 初始化叢集. 初始化之前,先進行gcr.io ... ... <看更多>
k8s教學 在 Kubernetes - 基礎概念101 的推薦與評價
A hands-on tutorial for learning kubernetes (k8s), including examples of Deployment, ... 覺得kubectl 的指令都沒有auto-complete 的話可以參考官網的教學。 ... <看更多>