本篇文章是一個入門文章,主要探討 GitOps 相關的起源與概念,同時介紹不少關於 GitOps 的工具
起源: Weaveworks 於 2017 年針對 Kubernetes 的工作環境產生了不同的部署方式,而 GitOps 這個詞也就那時開始萌芽發展
概念: 透過 Git PR 的方式來驗證與自動的部署所有與系統有關的修改。今天有任何部署的需求時,團隊要做的事情就是 1) 產生 Git PR 2)進行 Review 3) 合併 接者就是等任何修改被自動部署
Git 於整個環節中扮演者 Single Source of Truth 的角色,所有的修改都必須發生於 Git 本身,也因為是基於 Git 來使用,所以不論是 GitHub, Gitlab, Bitbucket, Gerrit 等系統都可以使用。
註: Bitbucket 還針對 GitOps 這種形式取了一個名為 BDDA 的名稱,意義為 Build-Diff-Deploy-Apply
好處:
1. 稽核性: 透過 Git 可以針對所有的修改去查閱,知道誰於什麼時間點進行什麼修改
2. 由於不需要將 Kubeconfig 等資源放到外部叢集,資安方面會比傳統外部直接Push/Apply 來得更好
3. 開發人員可以更容易地去部署應用,不需要仰賴Ops幫忙
4. ...etc
註: GitOps 並不是只能適用於 Kubernetes 本身,事實上整個系統架構都可以套用這種方式,譬如搭配 Terraform 等相關的 IaC 工具時,就可以透過 GitOps 來搭建整個系統,包含底層架構,k8s叢集以及最重要的應用程式
相關工具(文章列出滿多工具):
1. ArgoCD
2. Atlantis: Terraform PR 的自動化工具
3. Autoapply
4. CloudBees Rollout
5. FlexCD
6. Helm Operator
7. Flagger
8. Ignite
9. Faros
10. Gitkube
11. Jenkins X
12. KubeStack
13. Weave Cloud
14. Werf
15. PipeCD
https://medium.com/searce/gitops-the-next-big-thing-for-devops-and-automation-2a9597e51559
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
cloudbees 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
今天分享的是由 CloudBees 所分享的 DevOps 議題,
GitOps 的世界中,該如何做好 Secret Management ?
原文連結: https://cd.foundation/blog/2020/11/05/gitops-kubernetes-and-secret-management/
該影片提到幾個重點
1. Git 本身的設計不是用來純放與共享 Secret 等資訊
所以千萬千萬不要於 Git 內去存放 Secret 物件,因為他只有編碼,沒有加密。
有不少的流派方式可以用來管理 Secret Management,譬如說
1. Sealed Secrets 該專案的流派,實實在在的加密敏感資訊,並且把加密後的結果存放到 Git 專案中,當這些物件被套用到 Kubernetes 內時,會有對應的 Controller 去解密,並且產生最後的 Secret 物件
評論: 這種流派下就要特別注意該加解密的 key 不能外流,並且要定期 rotate
2. 打包 Image 的時候直接將相關的機密資訊一起打包,這樣使用時完全不需要外力介入,直接使用。
然後這種情況帶來的問題很多,缺乏彈性,image 本身變得非常危險,要花更多心力去確保 Image 不會外流。極度不推薦這種走法
3. 透過外部的 External Secrets Management 平台來管理,譬如使用由 Godaddy 所開源的 kubernetes-external-secrets 專案,該專案後端支援 AWS Secrets Manager, AWS System Manager, Hashicorp Vault, Azure Key Vault, Google Secret Manager 等眾多項目,並且提供一個統一介面給 Kubernetes 使用。 Kubernetes 中透過 ExternalSecrets 的方式就會觸發 Controller 去存取相關的機密資訊,並且轉成 Secret 物件供容器使用
有興趣的人可以點選下方連結觀賞完整影片,大概 20 分鐘左右,非常適合邊吃飯邊看
cloudbees 在 軟體開發學習資訊分享 Facebook 的最佳解答
講師 Viktor Farcic 是 CloudBees 的首席軟體交付策略師和開發者倡導者、Google 開發者專家和 Docker 隊長( Docker Captains )小組的成員,也是一名出版作者。
Viktor Farcic 最大的熱情是 DevOps、Microservices、持續整合( CI,Continuous Integration )、持續交付( CD,Continuous Delivery/Deployment ) 和測試驅動開發( TDD,Test-Driven Development )。
從這 11.5 小時的課程,你會學到
✅如何使用最常用的 DevOps 工具
✅基礎設施即程式碼( IaC,Infrastructure-as-code )的好處
✅如何在營運環境中使用 Terraform
✅如何在 AWS、 Azure 和 GCP 中建立具有 Terraform 的 Kubernetes 叢集
✅如何在 Kubernetes 打包、部署和管理應用程式
✅如何使用 Helm
✅如何建立本地端開發環境
✅無伺服器( Serverless )部署的常見風格是什麼
✅如何部署託管功能為服務( FaaS,Functions as a Service ) ,包括谷歌雲端功能( Google Cloud Functions )、Azure 功能,和 AWS Lambda
✅如何用 Fargate 部署託管容器作為服務 (CaaS,Containers as a Service ),包括 Google Cloud Run、 Azure 容器例項( Azure Container Instances ) 的 AWS ECS
✅如何使用 Knative 部署自我管理容器作為服務 (CaaS,Containers as a Service )
https://softnshare.com/devops-catalog/