本文延續前一篇文章,作者探討十五種 Kubernetes 不該使用的部署與維運模式,總共三篇,每篇五種。
Misusing Health probes
Kubernetes 內有設定三種不同的 Probe,分別是 Readiness, Liveness 以及 Startup,前兩者 Probe 比較常被提到而且會不停的執行,而 Startup 則是會被運行一次的 Probe。
作者認為所有開發者都要去研究這三種的差異並且小心使用。
文章中列舉一些常見的錯誤用法
1. 用相同的 endpoint 同時處理 liveness 以及 readiness
2. 繼續沿用過往針對 VM 所設計的 health endpoint,應該要針對容器環境重新設計
3. Health 的檢查過於複雜,導致需要花費一個不可預測的時間
..
等
Not using the Helm package manager
作者認為目前 Kubernetes 生態系中只有一個 Package Manager,也就是 Helm,就像是常見的 apt/rpm 等套件般去管理不同的應用程式。
然而 Helm 卻很容易被誤解並拿去跟其他工具比較,譬如 Kustomize, Jsonnet.. 等。
從本質上來看 Helm, Helm 本身有 Package 的管理能力,同時也透過 Template 的方式來產生適合於不同環境的 YAML 檔案。 而上述其他的比較解決方案基本上都只能完成後者,透過如 overlay (kustomize) 等不同的方式來產生不同的 YAML,但是本身卻沒有去管理這些安裝好的應用程式。
如何產生 YAML 這些是部署前的流程,而上述的那些工具對於檔案部署到 Kubernetes 後就無能為力了,譬如想要刪除任何安裝到 Kubernetes 資源的應用程式,必須要找到原始的 YAML 檔案。而 Helm 則不一樣,本身會於 Cluster 內去記錄這些這些資訊,讓你可以透過 helm 的指令去刪除這些安裝好的應用程式。
作者認為除非團隊很明確的瞭解與設計其工作流程,確保 Helm 帶來的部署與管理流程不需要,否則推薦任何團隊都可以採用 Helm,特別是之前因為 Helm2 Tiller 而厭惡的人必須要來試試看 Helm3
Not having a strategy for secrets
如同先前探討的 Configuration 不應該直接嵌入 Contaienr Image 一樣,Secret 這類型的物件也一樣,作者看到團隊常有下列錯誤
1. 使用各種不同的方式來管理 Secret 物件
2. 沒有區分好運行期需要的 Secret 與建制時期需要的 Secret
3. 過於複雜的處理方式導致本地測試與開發過於困難
相反的,團隊應該要
1. 選擇一個策略
2. 所有團隊使用該策略來處理 Secret
3. 所有的 Secret 應該都要用相同的方式處理
4. 這樣的機制使得 secret 的管理與追蹤更為容易
Attempting to solve all problems with Kubernetes
永遠不要認為 Kubernetes 能夠解決所有問題,團隊必須要理解到 Kubernetes 帶來的優點與缺點,團隊本身的部署與工作流程是否適合使用 Kubernetes。
也不要想說要把所有服務都搬到 Kubernetes 內,譬如 databases, caching 等,這些本來就存在的解決方案依然可以使用本來的方式繼續部署,不要一相情願地覺得這些東西放到 Kubernetes 內就一定會更好。
詳細原文可以參考下列連結。
https://medium.com/containers-101/kubernetes-deployment-antipatterns-part-3-dfbdd2fd3292
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
「jsonnet」的推薦目錄:
- 關於jsonnet 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
- 關於jsonnet 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
- 關於jsonnet 在 矽谷牛的耕田筆記 Facebook 的最佳解答
- 關於jsonnet 在 コバにゃんチャンネル Youtube 的精選貼文
- 關於jsonnet 在 大象中醫 Youtube 的最讚貼文
- 關於jsonnet 在 大象中醫 Youtube 的最佳貼文
- 關於jsonnet 在 Jsonnet - The data templating language - GitHub 的評價
- 關於jsonnet 在 Will 保哥的技術交流中心- Google 有個jsonnet 專案 - Facebook 的評價
- 關於jsonnet 在 Can a .jsonnet file be constructed in pure python - Stack ... 的評價
- 關於jsonnet 在 Jsonnet Rules 的評價
- 關於jsonnet 在 go-jsonnet - pkg.dev 的評價
jsonnet 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
今天這篇文章要探討的是關於 Kubernetes 內應用程式版本的一些議題。
Kubernetes 提供一個平台供開發者與維運者去安裝各式各樣的應用來滿足各種不同的工作,然而這些應用程式本身都由不同的組織或公司維護,且都有屬於自己的版本發行。
對於維運人員來說,要將這些應用程式安裝到 Kubernetes 內也有眾多選擇,不論是 Helm, Kustomize, Jsonnet 甚至是原生 Yaml,這也意味者一個 Kubernetes 叢集內,可能同時使用多套工具來安裝應用程式
作者的公司遇到的問題就是,我要怎麼知道目前哪些應用程式有新的版本可以更新? 有沒有一個類似 Maven 或是 Scala Steward 之類的工具,可以幫忙檢查所有使用軟體的版本狀態是否有新版需要更新。
作者沒有看到一個適合於 Kubernetes 內的解決方案,但是找到了一個名為 nvchecker (new version chekcer) 的開源專案,並且嘗試使用該開源專案來解決版本更新問題
對於使用 Helm 的應用程式來說,我們可以透過 helm repo 的方式來觀察最新版本,這部分簡單。
但是對於其他的安裝方式,有些可能只能觀察 Github/GitLab 的頁面,或是相關的 Tag 來知道最新的 image 有哪些。
作者於文中示範如何使用 nvcheckr 來檢查不同軟體的最新版本,並且輸出可更新的選項讓管理員人知道有哪些需要處理。
對該議題有興趣的可以點選下列連結觀看全文
https://medium.com/bigdatarepublic/software-versioning-on-kubernetes-806a48480832
jsonnet 在 矽谷牛的耕田筆記 Facebook 的最佳解答
跟大家分享一個由 CNCF 組織所發起的 CD 工具調查報告
面向的使用者都是 CNCF 社群的廠商,主要針對各種廣為人知的 CD 工具給予評價,大致上就是推不推薦使用
在 Kubernetes 應用程式部署工具方面, Helm > Kustomize > Jsonnet
至於對於 CD 系統的選擇各有秋色,不論是開源軟體或是 SaaS 服務都有上榜
其中正反意見最多,完全看不出共識的就是我們的老牌 Jenkins, 將近一半的受訪者都推薦停止使用 Jenkins.
有更多興趣可以點選下列文章來閱讀,有興趣也可以留言討論
https://www.hwchiu.com/cncf-tech-radar-cd.html
jsonnet 在 コバにゃんチャンネル Youtube 的精選貼文
jsonnet 在 大象中醫 Youtube 的最讚貼文
jsonnet 在 大象中醫 Youtube 的最佳貼文
jsonnet 在 Will 保哥的技術交流中心- Google 有個jsonnet 專案 - Facebook 的推薦與評價
Google 有個jsonnet 專案,它是一個專門用來產生JSON、YAML、INI 或其他資料格式的工具(A data templating language),你可以用來動態產生任何格式的設定檔(e.g. ... ... <看更多>
jsonnet 在 Jsonnet - The data templating language - GitHub 的推薦與評價
For an introduction to Jsonnet and documentation, visit our website. This respositiory contains the original implementation. You can also try go-jsonnet, ... ... <看更多>