在學習 ArgoCD 前,先來想想之前我們是如何部屬服務到 Kubernetes,普通方法會先將所需的原件寫成 yaml 檔案,接著包裝到 Helm Chart 裡,最後就可以使用 helm install
的指令安裝服務。
忘記 Helm Chart 如何建立可以回到 Day15 複習一下。
當你的應用程式有新的更動,就需要更新 Helm Chart 裡面的內容,並且再重新佈署一次,這樣一來一回的動作常會導致許多問題
當手動操作容易發生問題, DevOps 方法告訴你這時候就要想辦法用自動化來解決,於是 GitOps 的概念就出現了。今天要學習的 ArgoCD 就是一種 GitOps 方式的 CD 工具,只需要將應用程式所需元件設定檔 (如 Helm) 做版本控制,當我們更新 Git Repo,ArgoCD 就會根據新版本自動更新 Kubernetes 應用程式。
藉由版本控制的特性,不僅可以確定環境中的版本為何,也可以紀錄每次對應用程式的變動,若需要 Rollback ,只需要將 Git 退回特定版本就行。
接下來我們就在 GKE 上安裝 ArgoCD 應用,本篇參考 Argo CD Getting Started 教學。
進入 Cloud Shell 網站
點擊倒三角形->點選專案的 PROJECT_ID
,開啟專案 Terminal
argocd
命名空間kubectl create namespace argocd
K8s 利用命名空間將環境切割,使各個命名空間不能互相干擾,以達到隔離作用。
kubectl apply -n <namespace> -f <file>
建立 ArgoCD 應用kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
應用所需元件就會部屬到 argocd
的命名空間裡,可以使用 kubectl get <type> -n <namespace>
查看原件。
kubectl get pods -n argocd
(輸出結果)
NAME READY STATUS RESTARTS AGE
argocd-application-controller-0 1/1 Running 0 5m18s
argocd-dex-server-6dbfc4d6bf-hrjx2 1/1 Running 0 5m19s
argocd-redis-74d8c6db65-hxwv2 1/1 Running 0 5m19s
argocd-repo-server-5449b9744b-lrdch 1/1 Running 0 5m19s
argocd-server-5cd74676dc-m927x 1/1 Running 0 5m19s
再來我們要使用 ArgoCD 的 UI 介面,預設並沒有外部 IP 可以連線,所以我們將 argocd-server
的 Service Type 改成 LoadBalancer
, GCP 就會分發一個外部 IP 作為連接。
argocd-server
的 Service Type 改為 LoadBalancer
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
若你是在本地端工作可以下
kubectl port-forward svc/argocd-server -n argocd 8080:443
指令,透過 port-forward 的方式連線。
kubectl get svc argocd-server -n argocd
(輸出結果)
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
argocd-server LoadBalancer 10.3.250.234 34.96.199.37 80:31624/TCP,443:32380/TCP 7m39s
可以看到 Type 為 LoadBalancer
,並且得到了一組 External-IP ,透過此 IP 就能可以連線到 ArgoCD 。
http://<EXTERNAL-IP>
可以看到 ArgoCD 登入畫面,預設密碼是隨機產生的,可以使用 kubectl
指令獲取密碼。
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo
(輸出結果)
T5akbLXLVfdUW30K
User Info
UPDATE PASSWORD
,輸入新的密碼後點選 SAVE NEW PASSWORD
ArgoCD 的基本安裝與配置就完成了。