iT邦幫忙

2021 iThome 鐵人賽

DAY 21
0

ArgoCD 介紹

在學習 ArgoCD 前,先來想想之前我們是如何部屬服務到 Kubernetes,普通方法會先將所需的原件寫成 yaml 檔案,接著包裝到 Helm Chart 裡,最後就可以使用 helm install 的指令安裝服務。

忘記 Helm Chart 如何建立可以回到 Day15 複習一下。

https://ithelp.ithome.com.tw/upload/images/20210921/20139235Nb8vEaZjER.png

當你的應用程式有新的更動,就需要更新 Helm Chart 裡面的內容,並且再重新佈署一次,這樣一來一回的動作常會導致許多問題

  • 不知道環境裡到底是哪個版本的應用程式
  • 不小心更新錯了,也沒有一個好的方式可以 Rollback

當手動操作容易發生問題, DevOps 方法告訴你這時候就要想辦法用自動化來解決,於是 GitOps 的概念就出現了。今天要學習的 ArgoCD 就是一種 GitOps 方式的 CD 工具,只需要將應用程式所需元件設定檔 (如 Helm) 做版本控制,當我們更新 Git Repo,ArgoCD 就會根據新版本自動更新 Kubernetes 應用程式。

https://ithelp.ithome.com.tw/upload/images/20210921/201392350NpBaoRHHA.png

藉由版本控制的特性,不僅可以確定環境中的版本為何,也可以紀錄每次對應用程式的變動,若需要 Rollback ,只需要將 Git 退回特定版本就行。

ArgoCD 安裝

接下來我們就在 GKE 上安裝 ArgoCD 應用,本篇參考 Argo CD Getting Started 教學。

  1. 進入 Cloud Shell 網站

  2. 點擊倒三角形->點選專案的 PROJECT_ID,開啟專案 Terminal

  1. 建立 argocd 命名空間
kubectl create namespace argocd

K8s 利用命名空間將環境切割,使各個命名空間不能互相干擾,以達到隔離作用。

  1. 使用 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> 查看原件。

  1. 查看 ArgoCD Pods 運行狀態
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 作為連接。

  1. 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 的方式連線。

  1. 查看 argocd-server Service
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 。

  1. 開啟瀏覽器,輸入網址後送出
http://<EXTERNAL-IP>

https://ithelp.ithome.com.tw/upload/images/20210921/20139235Hqd7Bvqg8P.png

可以看到 ArgoCD 登入畫面,預設密碼是隨機產生的,可以使用 kubectl 指令獲取密碼。

  1. 獲取預設密碼
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo

(輸出結果)

T5akbLXLVfdUW30K
  1. 輸入帳號密碼登入 ArgoCD 介面。
  • Username
    • admin
  • Password
    • 剛剛拿到的密碼
  1. 進入到 UI 介面後,點擊左邊 User Info

https://ithelp.ithome.com.tw/upload/images/20210921/20139235VW624kjs0P.png

  1. 點擊 UPDATE PASSWORD ,輸入新的密碼後點選 SAVE NEW PASSWORD

https://ithelp.ithome.com.tw/upload/images/20210921/20139235SO9dXk8q3C.png

ArgoCD 的基本安裝與配置就完成了。


上一篇
Day20 - GitLab CI 更新 Manifest Image Tag
下一篇
Day22 - ArgoCD 建立應用程式
系列文
DevOps 好想學!新手也能打造雲端 Study Lab30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言