Gitops

GitOps leverages Git repositories for managing and automating deployments.

Prerequisite

  1. Git
  2. CI/CD
  3. Kubenetes

Traditional deployment methods

image

Traditional Deployment

GitOps

image

GitOps

What is difference between them?

  1. 最大的差異在傳統的方法 Deploy 在 CI/CD Pipeline 做
  2. Gitops 是透過自動 sync git remote repository,而此 repository 存有 image 的版號。做了同步之後 k8s 會自動更新為現有的 image 版本
  3. 對於無法被外界存取的 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

comments