官术网_书友最值得收藏!

前言

隨著Intuit踏上從私有化部署到云原生的旅程,我們重塑構建和部署流程又有了新的機會。與許多大型企業類似,舊的部署流程以數據中心為中心,擁有獨立的QA、Ops和基礎設施團隊。部署代碼可能需要數周時間,而且當出現生產問題時,開發人員無法訪問基礎設施。基礎設施問題可能需要很長時間才能解決,并且需要許多團隊的合作。

由于Marianna Tessel(Intuit首席技術官)和Jeff Brewer(Intuit SBSEG首席架構師)決定在Kubernetes和Docker上豪賭,我們有幸成為第一個通過Kubernetes和Docker完全遷移生產應用程序的團隊。在此過程中,我們必須徹底改造CI/CD流水線并采用GitOps流程。Jesse和Alexander創建了Argo CD(CNCF孵化器項目)來滿足企業對GitOps的需求。Todd和他的團隊創建了世界一流的集群管理工具,因此我們可以輕松地擴展到數百個集群。

有了像Kubernetes和Docker這樣的標準,所有工程師就可以在基礎設施和部署方面使用一種通用語言。他們可以輕松地為多個其他項目做出貢獻,并在開發過程完成后進行部署。GitOps還使我們能夠準確了解環境中發生了哪些變化,這在你需要遵守合規性要求時尤其重要。我們無法想象回到以前的部署方式,希望本書可以幫助你快速上手GitOps!

目標讀者

本書適合希望使用GitOps過程,通過聲明式模型在Kubernetes上部署應用程序的Kubernetes基礎設施和運維工程師以及軟件開發人員閱讀。任何希望提高Kubernetes集群的穩定性、可靠性、安全性和可審計性,并通過自動化持續軟件部署來降低運營成本的人,都將從本書中獲益。

本書讀者應具備Kubernetes(例如Deployment、Pod、Service和Ingress資源)的應用知識,并且了解現代軟件開發實踐,包括持續集成/持續部署(CI/CD)、版本控制系統(例如Git)以及部署/基礎設施自動化。

非目標讀者

對于那些已經成功實施成熟的GitOps系統的高級用戶,建議閱讀與已選工具相關的書籍。

本書并不打算深入探討Kubernetes的所有方面。雖然本書涵蓋了許多與GitOps相關的Kubernetes概念,但對于尋求Kubernetes綜合性指南的讀者,建議查閱有關該主題的其他優秀書籍和在線資源。

內容組織

本書描述了GitOps在Kubernetes上的優勢,包括靈活的配置管理、監控、健壯性、多環境支持和安全性。

你將學習有關最佳實踐、技術和工具,讓企業能夠使用Kubernetes加速應用程序開發,同時不會影響穩定性、可靠性和安全性。你還將深入了解以下主題:

□有關分支、命名空間和配置的多環境管理。

□使用Git、Kubernetes和流水線進行訪問控制。

□與流水線中CI/CD、環境晉級、代碼推送/拉取和發布/回滾相關的注意事項。

□可觀測性和漂移探測。

□機密管理。

□滾動更新、藍綠、金絲雀、漸進式交付等部署策略之間的選擇。

本書通過教程和練習來培養你使用Kubernetes部署GitOps所需的技能。閱讀本書后,你將了解如何為Kubernetes上運行的應用程序實現聲明式的持續交付系統。相關的教程有:

□管理Kubernetes應用程序部署。

□使用Kustomize進行配置和環境管理。

□編寫基礎的Kubernetes持續交付Operator。

□使用Argo CD[1]、Jenkins X[2]和Flux[3]實現CI/CD。

命令式和聲明式 Kubernetes上的部署有兩種基本方法:命令式使用許多kubectl命令行;聲明式編寫清單并使用kubectl apply。前者對學習和交互式試驗很有用,后者適合可重用的部署和更改的跟蹤。

本書旨在讓你能夠跟著學,并使用自己的Kubernetes測試集群完成教程的實操部分。附錄A描述了用于創建測試集群的幾個選項。

書中包含了許多代碼清單。所有的代碼清單和其他支持材料都可以在能公開訪問的GitHub代碼倉庫(https://github.com/gitopsbook/resources)中找到。

我們鼓勵你克隆或復刻這個代碼倉庫,并在你完成本書中的教程和練習時使用它。

你的工作站上應安裝以下工具和實用程序:

□kubectl(v1.16或更新)。

□minikube(v1.4或更新)。

□bash或Windows Subsystem for Linux(WSL)。

大多數教程和練習都可以使用你工作站上運行的minikube完成。如果不行,我們會提示“是否需要云提供商上運行的集群”,你可以參考附錄A了解創建集群的詳細信息。

在云提供商上運行Kubernetes測試集群可能會產生額外費用。雖然我們已嘗試盡可能降低所推薦的測試配置的成本,但請記住你需要承擔這些成本。我們建議在完成每個教程或練習后刪除你的測試集群。

本書分為3部分,共11章。

第一部分涵蓋背景以及GitOps和Kubernetes的介紹:

□第1章帶你了解軟件部署的演進旅程以及GitOps如何成為最新實踐。該章還涵蓋了GitOps的許多關鍵概念和優勢。

□第2章給出了Kubernetes的關鍵概念以及為什么它原生的“聲明式”風格非常適合GitOps。該章還涵蓋了核心的Operator概念以及如何實現一個簡單的GitOps Operator。

第二部分介紹采納GitOps過程的模式和流程:

□第3章討論了環境的定義以及如何很好地將Kubernetes命名空間映射為環境。該章還涵蓋了環境實施的分支策略和配置管理。

□第4章深入介紹了GitOps CI/CD流水線,全面描述了完整流水線所需的所有階段。該章還包括代碼、鏡像和環境晉級以及回滾機制。

□第5章介紹了各種部署策略,包括滾動更新、藍綠部署、金絲雀部署和漸進式交付。該章還涵蓋了如何使用原生Kubernetes資源和其他開源工具來實現各個策略。

□第6章討論了GitOps驅動部署的攻擊面以及如何緩解各個領域的攻擊。該章還回顧了Jsonnet、Kustomize和Helm,以及如何根據使用場景選擇正確的配置管理模式。

□第7章討論了管理GitOps Secret的各種策略。該章還涵蓋了幾個Secret管理工具以及Kubernetes原生的Secret。

□第8章解釋了可觀測性的核心概念以及為什么它對GitOps很重要。該章還描述了使用GitOps和Kubernetes實現可觀測性的各種方法。

第三部分介紹幾個企業級的GitOps工具:

□第9章討論了Argo CD的目的和架構。該章還包括如何使用Argo CD配置應用程序部署,以及如何在生產中安全加固Argo CD。

□第10章討論了Jenkins X的目的和架構。該章還涵蓋了如何配置應用程序部署和晉級到各種環境。

□第11章討論了Flux的目的和動機。該章還包括如何使用Flux配置應用程序部署和多租戶。

可以按順序閱讀本書所有章節。但是如果你想跳轉到某個感興趣的特定領域,我們仍建議你先按順序閱讀基礎章節。例如,如果你想立即開始學習使用Argo CD,我們建議你在閱讀第9章之前先閱讀第1、2、3和5章,如圖0.1所示。

圖0.1 本書結構及閱讀順序

關于本書代碼

本書包含許多源代碼示例,有時會以粗體突出顯示與前面的步驟不同的代碼,例如當有新功能添加到現有代碼行時。

書中示例的源代碼可從https://github.com/gitopsbook/resources下載。


[1]https://argoproj.github.io/argo-cd

[2]https://jenkins-x.io

[3]https://github.com/fluxcd/flux

主站蜘蛛池模板: 恩施市| 青铜峡市| 巩留县| 金川县| 庆元县| 阿合奇县| 永州市| 徐汇区| 五家渠市| 营口市| 营山县| 乌兰浩特市| 中卫市| 古交市| 武清区| 临海市| 海南省| 桑日县| 宝鸡市| 民勤县| 大理市| 洛隆县| 昂仁县| 夏邑县| 宜城市| 福州市| 鄂托克旗| 民权县| 泸水县| 兴化市| 天峻县| 大田县| 南宫市| 新营市| 阳泉市| 连州市| 三亚市| 玉龙| 蒙山县| 建瓯市| 威宁|