持續整合與持續交付的最佳實踐!
第一本完整探討Kubernetes與CI/CD整合的本土書籍,透過問題分析與探討讓你培養解決問題的完整思路
•從問題出發探討CI/CD整合 Kubernetes 會遇到的各種議題
•以思路為主軸搭配範例演練來練習整合CI/CD
•矽谷實戰經驗分享,讓你少走冤枉路
✍內容簡介
本書內容改編自第 12 屆 iT 邦幫忙鐵人賽,DevOps 組佳作系列文章 -- 《Kubernetes X CICD X DevOps 成就時間管理大師暨薪水強盜》,台灣本土第一本探討 Kubernetes 與工作團隊必備的 CI/CD 流程整合的專業書籍。
本書專門針對需要將 Kubernetes 與 CI/CD 流程整合的使用者。CI/CD 流程設計沒有標準答案,當導入 Kubernetes 與 Cloud Native 相關技術後其變化更多,要如何從這龐大且複雜的架構中設計出一套適合團隊的解決方案是非常困難的,因為Cloud Native的專案變化太快。本書不會給讀者任何魚吃,取而代之的是傳授如何釣魚的技巧,從問題出發去探討整合上會遇到的各種議題,培養解決問題的思路來面對未來深不可知的Cloud Native生態系。
✍重點議題探討
Kubernetes 應用程式包裝與開發流程探討
❖Kubernetes 應用程式如何包裝,Helm 與 Kustomize 差異是什麼?
❖應用程式開發人員需不需要本地 Kubernetes 輔助開發?
❖Kubeadm、Minikube、K3D、KIND 差異是什麼,哪個最好用?
CI 過程需要探討的各種議題
❖CI Pipeline系統該如何選擇? 該選 SaaS 還是自行架設維護?
❖CI 過程需不需要使用 Kubernetes 來輔助測試? 需要的話該怎麼做?
❖Kubernetes 應用程式於 CI 階段可以進行什麼測試?Kubeval、Conftest?
CD 過程需要探討的各種議題
❖CD Pipeline 系統該如何選擇?
❖CD 過程該採取何種模式? Pull Mode、Push Mode?
❖GitOps 可以取代傳統 CD 流程?
❖CD 過程需要將機密資訊部署到 Kubernetes 內,如何處理才安全?
作者簡介:
邱宏瑋 HungWei Chiu
現於矽谷開放網路基金會(Open Networking Foundation)擔任 Member of Technical Staff,擁有多年 Linux, Networking, Cloud Native 開發與實戰經驗。致力於將 SDN(Software Defined Networking)與 Cloud Native 整合,並開發與推廣相關開源專案。
喜歡研究技術與分享內容,與好友共同創立 SDNDS-TW 以及 CNTUG 兩個台灣在地社群來探討與分享各種議題。此外也樂於透過撰寫技術文章與演講來分享所見所聞所學。
曾於 COSCUP、GDG DevFest、Open Source Networking Days 與其他在地社群擔任講者分享所見所聞,同時也擔任微軟MVP,專職於 Data Center Management。
開設線上課程教授 Kubernetes 相關課程,提供更多資源以降低進入 Kubernetes 的門檻,同時經營 Facebook 粉絲專頁「矽谷牛的耕田筆記」,定期分享各種新穎知識與文章。
目錄
【Chapter01】 DevOps 與 Kubernetes 的生態探討
1.1 Cloud Native 生態系介紹
1.2 CI/CD 可以怎麼玩
【Chapter02】 Kubernetes 物件的管理與部署
2.1 Helm 介紹
2.2 Helm 範例
2.3 打造第一個 Helm Chart
【Chapter03】 Kubernetes 本地開發之道
3.1 K3D 與 KIND 的部署示範
3.1.1 K3D 示範
3.1.2 KIND 示範
3.2 本地開發 Kubernetes 應用程式流程
3.3 Skaffold 本地開發與測試
3.3.1 Skaffold 介紹
3.3.2 Skaffold 安裝與使用
【Chapter04】 Pipeline 系統介紹
4.1 Pipeline 思路選擇
4.1.1 部署方式
4.1.2 特色探討
4.1.3 付費功能探討
4.2 CI Pipeline 與 Kubernetes 探討
4.3 以GitHub Action 示範整合 Kubernetes 於 Pipeline 系統中
4.4 Kubernetes 應用程式測試
4.4.1 YAML 測試
4.4.2 Helm 測試
4.5 CI Pipeline 與 Kubernetes 結論
【Chapter05】 CD Pipeline 與 Kubernetes 探討
5.1 Pipeline CD 過程思路探討
5.2 CD 與 Kubernetes 的整合
5.3 以 Keel 示範如何部署更新 Kubernetes
【Chapter06】 GitOps 的部署概念
6.1 GitOps 與 Kubernetes 的整合
6.2 GitOps 實作:以 Argo CD 為例
6.2.1 架構
6.2.2 安裝
6.2.3 安裝範例應用程式
【Chapter07】 自架 Container Registry 的議題
7.1 Docker Hub 介紹
7.2 其他 Container Registry 的方案介紹
7.3 自架 Registry:以 Harbor 為例
7.3.1 安裝 Harbor 並存取
7.3.2 功能示範
7.4 自架 Registry 與 Kubernetes
【Chapter08】 透過 CD 部署機密資訊的議題探討
8.1 部署機密資訊的架構探討–上
8.2 部署機密資訊的架構探討–下
8.2.1 集中化管理架構–上
8.2.2 集中化管理架構–下
8.2.3 加解密架構
8.3 透過 Sealed Secrets 示範加密部署
【Chapter09】 提升 Kubernetes 日常工作效率
9.1 Kubectl 生態系
9.1.1 Krew 安裝與使用
9.2 Kubectl 擴充功能嚐鮮
9.2.1 View Allocation
9.2.2 Ns
9.2.3 Deprecations
9.2.4 Access-Matrix
9.2.5 Popeye
9.3 Kubernetes 第三方好用工具
9.3.1 Logs 觀察工具
9.3.2 Kubernetes 操作面板
9.3.3 其他工具
【Chapter10】 總結
【Chapter01】 DevOps 與 Kubernetes 的生態探討
1.1 Cloud Native 生態系介紹
1.2 CI/CD 可以怎麼玩
【Chapter02】 Kubernetes 物件的管理與部署
2.1 Helm 介紹
2.2 Helm 範例
2.3 打造第一個 Helm Chart
【Chapter03】 Kubernetes 本地開發之道
3.1 K3D 與 KIND 的部署示範
3.1.1 K3D 示範
3.1.2 KIND 示範
3.2 本地開發 Kubernetes 應用程式流程
3.3 Skaffold 本地開發與測試
3.3.1 Skaffold 介紹
3.3.2 Skaffold 安裝與使用
【Chapter04】 Pipeline 系統介紹
4.1 Pipeline 思路選擇
4.1.1 部署方式
4.1.2 特色...