Gitops
GitOps leverages Git repositories for managing and automating deployments.
Prerequisite
- Git
- CI/CD
- Kubenetes
Traditional deployment methods

Traditional Deployment
GitOps

GitOps
What is difference between them?
- 最大的差異在傳統的方法 Deploy 在 CI/CD Pipeline 做
- Gitops 是透過自動 sync git remote repository,而此 repository 存有 image 的版號。做了同步之後 k8s 會自動更新為現有的 image 版本
- 對於無法被外界存取的 Kubernetes Cluster,GitOps 概念可以解決自動部署問題,並減少 kube config 檔案外洩的風險。
Tools
Infrastructure as Code (IaC)
- Helm - 用於 Kubernetes 的套件管理工具,幫助定義、安裝和管理 Kubernetes 應用程式。
- Kustomize - Kubernetes 的配置管理工具,用於自訂 Kubernetes 資源。
- Terraform - 用於定義和提供基礎設施的開源工具。
Continuous Integration (CI)
- Jenkins - 開源自動化伺服器,廣泛用於 CI/CD。
- CircleCI - 雲端 CI/CD 平台,支援多種語言和平台。
- Argo Workflows - Kubernetes 原生工作流引擎,支援複雜的 CI/CD 流程。
- Drone - 輕量級的 CI/CD 系統,支持 Git 存儲庫和容器化工作流。
Continuous Deployment (CD)
- ArgoCD - Kubernetes 原生的 GitOps CD 工具,用於管理應用程式的持續部署。
- Flux - 另一種 GitOps 工具,專注於自動同步 Kubernetes 環境與 Git 存儲庫中的配置。
References
https://www.hwchiu.com/docs/2020/gitops
https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/everything-as-code.html