---
# System prepended metadata

title: Argo CD Study Note
tags: [RT LAB]

---

# Argo CD Study Note
###### tags: `RT LAB`

### GitOps
顧名思義是Git+Ops去實行。這個概念目的是希望以Git的資料去做基底操作，也就是Git就是資料來源，所以內容應用程式只能依照Git去做改變。

#### 單一來源
以Git為基礎，整個部署的過程可帶來下列好處：
1. Git可以知道誰在哪個時間點做了什麼。
2. 版本控制
3. 分支(Branch)及標籤(tag)機制
4. 可使用pull reuest/git review機制管理程式
#### 狀態同步

### What's Argo CD 

Argo CD 是用於 Kubernetes 的聲明式 GitOps 持續交付工具。

![](https://i.imgur.com/J5EgFWj.png)
1. ArgoCD 的 API Server 支援多種控制，譬如使用 UI 操作，使用 CLI 操作，甚至可以透過 gRPC/REST 等方式控制

2. 當開發者完成 Git 程式碼的合併後， Git 可以觸發 webhook 的事件通知 ArgoCD Git 有新的版本，可以來準備更新

3. 除了 web hook 外， ArgoCD 也支持定期詢問與手動的方式來更新

4. ArgoCD 可以用來管理多套 Kubernetes 叢集，對於測試環境來說，是可以用一套 ArgoCD 的服務，控管多套叢集，但是如果有生產環境的時候，基於權限也是可以考慮分開不同的 ArgoCD，這部分就沒有唯一解答。 

5. ArgoCD 也提供相對應的時間 Hook, 譬如當同步完成後就可以觸發不同的事件，譬如通知 Slack 等