天天看點

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

本文分享自華為雲社群《Argo CD對接CCE完成不同測試、生産環境業務部署-雲社群-華為雲》,作者: 可以交個朋友。

一 背景說明

  • Argo CD是用于Kubernetes的聲明性GitOps持續傳遞工具,遵循GitOps模式,該模式使用Git倉庫作為定義所需應用程式狀态的真實來源。
  • Argo CD可在指定的目标環境中自動部署所需的應用程式狀态,應用程式部署可以在Git送出時跟蹤對分支,标簽的更新,或固定到清單的特定版本。
  • 本文檔使用兩個CCE叢集(cce-test-cluster、cce-prod-cluster)模拟測試及生産環境,使用gitlab倉庫作為應用部署yaml檔案存儲倉庫,通過Argo CD對接不同CCE叢集完成測試、生産環境業務部署。

二 Argo CD安裝配置

本章節主要指導完成argo cd的基本部署,相關關聯配置後續章節說明。

2.1 ArgoCD部署

Argo CD部署可以參考https://github.com/argoproj/argo-cd/releases/tag/v2.9.3,目前新版本為2.9.3,這裡采用Non-HA的方式進行部署示範。

kubectl create namespace argocd

kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v2.9.3/manifests/install.yaml

Argo CD安裝完成後如下所示:

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署
從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

修改argocd-server應用的serivce類型為nodeport,通過節點IP+端口通路Argo CD UI界面。

2.2 Argo CD用戶端工具使用

Argo CD提供指令行工具,可以通過指令行用戶端添加叢集,修改登入密碼等操作,安裝指令如下:

wget https://github.com/argoproj/argo-cd/releases/download/v2.9.3/argocd-linux-amd64 
cp argocd-linux-amd64 /usr/local/bin/argocd  
chmod +x /usr/local/bin/argocd
           

檢視版本資訊:

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

登入argo,位址為argo位址,使用者名為admin,密碼擷取如下:

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

Argo CD web界面是通過https登入的,通過argocd用戶端工具登入和修改初始密碼。

argocd login 192.168.1.137:31000 --username admin --password VQME4b7HSdl8REAu

通過以下指令修改admin使用者的密碼:

argocd account update-password \ --current-password VQME4b7HSdl8REAu \ --new-password Aa123456

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

2.3 Argo CD添加多叢集

多叢集管理是通過argo對接不同的k8s叢集,然後實作對各個叢集上服務的部署和管理。擷取到目标叢集的config配置資訊,根據config配置資訊,擷取到目标叢集的name資訊

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

Argo CD部署在cce-test-prod叢集上,可以使用以下指令檢視argocd管理的叢集

argocd cluster list

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

可以看到有一個預設的,就是部署argocd所在的叢集。這裡為了容易區分,重新添加如下叢集并設定名稱

argocd cluster add internal --kubeconfig /root/.kube/config --name cce-test-cluster

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

将另一個CCE叢集也添加進來,這樣就完成了argocd連接配接多叢集的配置。

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

三 ArgoCD 關聯置頂yaml倉庫完成不同環境業務部署

3.1 Argo CD登入及配置git倉庫

通過使用者名admin,密碼Aa123456登入argo CD界面

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署
從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

檢視Argo CD連接配接的叢集資訊:

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

在Settings中添加git倉庫資訊:

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

這裡通過https方式連接配接git倉庫

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

配置完成後需要確定git倉庫狀态是正常連接配接的

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

gitlab倉庫目錄結構如下,通過檔案夾區分不同環境:

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

3.2 業務釋出

在Applications頁面建立APP(應用),根據頁面進行填寫填寫或者選擇,這裡先部署業務到cce-test-cluster叢集。

Application Name: 自定義的應用名。

Project: 使用預設建立好的 default 項目。

SYNC POLICY: 同步方式,可以選擇自動或者手動,這裡我們選擇手動同步。

Repository URL: 項目的 Git 位址。

Revision: 分支名。

Path: yaml 資源檔案所在的相對路徑。

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

建立應用後應用狀态為OutOfSync(當已部署應用程式的運作狀态偏離目标狀态時将被argoCD視為OutOfSync)。

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

點選sync進行同步

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

部署成功後應用狀态為Healthy

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

檢視cce-test-cluster叢集應用部署情況:

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

用類似的配置方法部署應用到cce-prod-cluster叢集:

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

檢視cce-prod-cluster叢集應用部署情況:

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

3.3 跨叢集部署業務

  • ApplicationSet控制器是一個Kubernetes控制器,它增加了對ApplicationSet CustomResourceDefinition (CRD)的支援。這個控制器/CRD可以實作跨大量叢集和單節點管理Argo CD應用程式的自動化和更大的靈活性。從Argo CD v2.3開始,Argo CD內建了ApplicationSet控制器。
  • ApplicationSet控制器提供:通過Argo CD使用單個Kubernetes清單來針對多個Kubernetes叢集的能力;通過Argo CD使用單個Kubernetes清單從一個或多個Git存儲庫部署多個應用程式的能力。
  • 通過UI界面部署應用時隻能選擇單個叢集,無法進行多叢集業務部署。

這裡示範部署nginx應用到兩個CCE叢集,yaml檔案如下:

apiVersion: argoproj.io/v1alpha1 
kind: ApplicationSet 
metadata: 
  name: my-test 
spec: 
  generators: 
  - list: 
      elements: 
      - cluster: cce-prod 
        url: https://192.168.1.112:5443 
      - cluster: cce-test 
        url: https://192.168.1.132:5443 
  
  template: 
    metadata: 
      name: '{{cluster}}' 
    spec: 
      project: default 
      source: 
        repoURL: http://192.168.1.218:32182/devops/argocd.git 
        targetRevision: main 
        path: '{{cluster}}' 
      destination: 
        server: '{{url}}'         
        namespace: default

           

該crd實作的結果就是從同一個git倉庫中擷取配置清單并部署到cce-test-cluster、cce-prod-cluster這兩個叢集,path和server中采用變量方式,分别擷取list中對應的值。

部署應用:

argocd appset create app.yaml

檢視應用狀态

argocd app list

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署
從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

然後就可以對這兩個應用進行同步操作,同步完成後如下:

從安裝到配置,教你用Argo CD對接CCE叢集完成測試、生産部署

關注#華為雲開發者聯盟# 點選下方,第一時間了解華為雲新鮮技術~

華為雲部落格_大資料部落格_AI部落格_雲計算部落格_開發者中心-華為雲

繼續閱讀