iT邦幫忙

2021 iThome 鐵人賽

DAY 22
0
DevOps

DevOps 好想學!新手也能打造雲端 Study Lab系列 第 22

Day22 - ArgoCD 建立應用程式

前言

前一天我們在 K8s Cluster 建置好了 ArgoCD 服務,今天就來實際操作看看,透過 ArgoCD 建立 Application 的 Stage 以及 Production 環境。

連接到 Manifest Repository

因為 ArgoCD 是以 GitOps 的方式運作,一開始需要先將 Manifest Repo 連線到 ArgoCD ,我們就來實際操作看看。

  1. 使用 Day21 介紹的方式登入到 ArgoCD

  2. 點擊左邊齒輪,接著點選 Repositories

https://ithelp.ithome.com.tw/upload/images/20210922/20139235LHbIKlTrDF.png

  1. 點擊 CONNECT REPO USING HTTPS

https://ithelp.ithome.com.tw/upload/images/20210922/20139235H1CwdF6sMH.png

  1. 到你的 Manifest Repository,點擊 Clone-> Clone with HTTPS 複製地址

https://ithelp.ithome.com.tw/upload/images/20210922/20139235reDFHI6Ei4.png

  1. 回到 ArgoCD ,在 Repository URL 貼上位址,完成後點擊CONNECT

https://ithelp.ithome.com.tw/upload/images/20210922/20139235Pe1I72s3fr.png

可以看到成功連線到 Manifest Repository。

https://ithelp.ithome.com.tw/upload/images/20210922/20139235BxuReiUdNx.png

因為我們設置的是 Public Repository ,不需要提供帳號密碼就能連線,若你是使用 Privare 的 Repo,就需要建立金鑰才能連線。

使用 ArgoCD GUI 建立應用

接著試著透過 GUI ,建立 Application 的 Stage 環境。

  1. 回到主畫面,點擊 CREATE APPLICATION

https://ithelp.ithome.com.tw/upload/images/20210922/20139235o3jdHLd484.png

  1. GENERAL 輸入以下資訊
  • Application Name
    • webapp-stage
  • Project
    • default
  • SYNC POLICY
    • 選擇 Automatic
    • PRUNE RESOURCES 打勾
    • SELF HEAL 打勾
  • AUTO-CREATE NAMESPACE 打勾

https://ithelp.ithome.com.tw/upload/images/20210922/20139235nnJqTd7bwP.png

這裡的 Sync Policy 為同步方式,Automatic 代表當 Git Repo 更新 ArgoCD 也會自動同步。

  1. SOURCE 以及 DESTINATION 輸入以下資訊
  • Repository URL
    • 選擇你的 Manifest Repository URL
  • Revision
    • HEAD
  • Path
    • .
  • Cluster URL
    • 選擇 kubernetes.default.svc
  • Namespace
    • stage

https://ithelp.ithome.com.tw/upload/images/20210922/20139235K6FWotlp2i.png

Source 為你要使用的資源位置,這裡的設置代表會使用 Manifest Repo 在 HEAD 上的根目錄檔案。

Destination 為資源要部屬的位置,這裡選擇 default.svc ( 執行 ArgoCD 的 K8s Cluster ),並且會部屬在 stage 的命名空間。

還記得之前的章節我們在 Helm Chart 裡面建立了多個 values 檔案,在 ArgoCD 中,就可以根據需要的環境帶入不同配置的 values 檔案。

  1. Helm -> VALUES FILES 選擇 values.stage.yaml 檔案

https://ithelp.ithome.com.tw/upload/images/20210922/20139235bkwGwokM2i.png

  1. 輸入完成後就可以點擊 CREATE,主畫面就可以看到新的 Application

https://ithelp.ithome.com.tw/upload/images/20210922/20139235kQKQaYJyAA.png

  1. 點擊 Application ,可以看到更詳細的資訊,包括同步狀態、建立的元件。

https://ithelp.ithome.com.tw/upload/images/20210922/20139235zTiO4FptW2.png

等到 Status 顯示 Synced ,代表 ArgoCD 已經建置好服務了,我們可以到 Kubernetes 實際驗證一下。

  1. 進入 Cloud Shell 網站

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

  1. 查看 stage 命名空間的所有元件
kubectl get all -n stage

(輸出結果)

NAME                                READY   STATUS    RESTARTS   AGE
pod/webapp-stage-5bcbc8d798-4nf9j   1/1     Running   0          9m36s
pod/webapp-stage-5bcbc8d798-4nvkr   1/1     Running   0          9m36s
pod/webapp-stage-5bcbc8d798-9nhdb   1/1     Running   0          9m36s

NAME                  TYPE          CLUSTER-IP    EXTERNAL-IP    PORT(S)       AGE
service/webapp-stage  LoadBalancer  10.3.254.204  34.150.28.184  80:31918/TCP  9m39s

NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/webapp-stage   3/3     3            3           9m40s

NAME                                      DESIRED   CURRENT   READY   AGE
replicaset.apps/webapp-stage-5bcbc8d798   3         3         3       9m41s

可以看到元件都已建置完成,使用 Service 的 EXTERNAL-IP 連線到服務確認有無正常執行。

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

可以看到服務正常運行。

https://ithelp.ithome.com.tw/upload/images/20210922/20139235CLLfdH8xmu.png

使用 Kubectl CLI 建立應用

ArgoCD 的 Application 也是一種 Kubernetes 元件,所以可以建置相關的 yaml 檔案,並用 kubectl apply 的方式來建立,就來試著用 CLI 的方式建立 Application 的 Production 環境。

  1. 建立 webapp-prod.yaml 檔案
mkdir ~/argocd && cd ~/argocd
touch webapp-prod.yaml
  1. 點擊左上 Explorer -> Open Folder -> 選擇 argocd 資料夾 -> Open

https://ithelp.ithome.com.tw/upload/images/20210922/20139235wQgcZG5C7y.png

  1. 點擊 webapp-prod.yaml 檔案並輸入以下內容,需要將 repoURL 改成你的 Manifest Repo

https://ithelp.ithome.com.tw/upload/images/20210922/20139235gOsD5afLXs.png

  • webapp-prod.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: webapp-prod
spec:
  destination:
    name: ''
    namespace: prod
    server: 'https://kubernetes.default.svc'
  source:
    path: .
    repoURL: '<YOUR Manifest Repo>'
    targetRevision: HEAD
    helm:
      valueFiles:
        - values.production.yaml
  project: default
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - CreateNamespace=true
  1. 使用 kubectl apply -f <file> 建立 ArgoCD Application
kubectl apply -f webapp-prod.yaml
  1. 確認 Application 是否成功建立
kubectl get application -n argocd

(輸出結果)

NAME           SYNC STATUS   HEALTH STATUS
webapp-prod    Synced        Progressing
webapp-stage   Synced        Healthy

會看到多了一個 webapp-prod 的 App ,在 ArgoCD 的 GUI 也可以看到。

https://ithelp.ithome.com.tw/upload/images/20210922/20139235RkkQkkV7sl.png

  1. 查看 prod 命名空間的所有元件
kubectl get all -n prod

(輸出結果)

NAME                              READY   STATUS    RESTARTS   AGE
pod/webapp-prod-6448d5b84-5fsfs   1/1     Running   0          2m9s
pod/webapp-prod-6448d5b84-bqh8n   1/1     Running   0          2m9s
pod/webapp-prod-6448d5b84-hnsjr   1/1     Running   0          2m9s

NAME                 TYPE          CLUSTER-IP   EXTERNAL-IP  PORT(S)       AGE
service/webapp-prod  LoadBalancer  10.3.254.73  34.92.49.24  80:30082/TCP  2m11s

NAME                          READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/webapp-prod   3/3     3            3           2m10s

NAME                                    DESIRED   CURRENT   READY   AGE
replicaset.apps/webapp-prod-6448d5b84   3         3         3       2m10s

可以看到 Production 環境的元件也建置完成。

總結

今天學習到如何使用 ArgoCD 建立應用程式,也代表從 Day16 - Day22 製作的 CI/CD 流水線已經可以工作了,明天我們就來試試看,到底多了 CI/CD 工具對開發以及維運有哪些好處。


上一篇
Day21 - ArgoCD 介紹及安裝
下一篇
Day23 - 有了 CI/CD Pipeline ,還需要合適的 Git Workflow
系列文
DevOps 好想學!新手也能打造雲端 Study Lab30

尚未有邦友留言

立即登入留言