您可以在ACK One艦隊(Fleet)執行個體中通過GitOps將Git repositories作為應用來源,對多種編排方式(YAML manifests目錄、Helm Charts、Kustomize等)的應用實現版本管理、多叢集分發和持續部署。GitOps完全相容社區ArgoCD的使用方式,並提供了高可用的控制面。本文介紹如何在ACK One Fleet執行個體中使用GitOps實現多叢集應用發布的流程,協助您快速上手GitOps。
前提條件
已開啟艦隊管理功能。
艦隊執行個體已添加多個關聯集群。具體操作,請參見添加關聯集群。
已授予RAM使用者AliyunAdcpFullAccess許可權。具體操作,請參見為RAM使用者授權。
(CLI方式需要)已從ACK One控制台擷取Fleet執行個體的KubeConfig,並通過kubectl串連至Fleet執行個體。
(CLI方式需要)已安裝最新版本阿里雲CLI並配置阿里雲CLI。
計費說明
開啟GitOps後,ACK One會預設建立以下資源。
建立一個SLB執行個體,通過此SLB暴露ArgoCD的API和UI訪問端點。
建立一個隨用隨付的2核4 GB的ECI執行個體,用於運行ArgoCD服務。
具體計費資訊,請參見多叢集艦隊雲產品資源計費。
開通地區
已開通ACK One艦隊管理功能的地區均可使用。更多資訊,請參見多叢集艦隊和工作流程叢集支援地區。
步驟一:開啟公網訪問GitOps控制台
ACK One Fleet執行個體建立時,預設會開啟GitOps功能,並支援VPC內網訪問GitOps控制台(需要您的辦公網與雲上VPC打通)。
如果您需要通過公網訪問GitOps控制台,如提交和查看應用,可根據以下步驟開啟公網訪問GitOps控制台。
開啟公網訪問後會有一定的安全風險,因此,在開啟公網訪問時必須配置存取控制(ACL)。
通過控制台開啟
登入ACK One控制台,在左側導覽列選擇。
在多叢集GitOps頁面左上方單擊艦隊名稱後的
按鈕,在下拉式清單中選擇目標艦隊。建立艦隊預設已開啟GitOps,如果您的艦隊未開啟,可單擊立即開啟 GitOps,在彈出的對話方塊中單擊確定完成開啟。
若艦隊已開啟GitOps,多叢集GitOps頁面會顯示GitOps控制台。
在多叢集GitOps頁面,單擊公網訪問後的開啟,在彈出的開啟公網訪問對話方塊中輸入需要加入白名單的IP地址或位址區段,然後單擊確定。
艦隊更新完成後,您可以單擊頁面右上方的GitOps控制台,通過公網訪問GitOps控制台。
通過阿里雲CLI開啟
確保阿里雲CLI為最新版本後,執行以下命令,開啟GitOps並開通公網訪問。
替換以下
<your_clusterid>為您的Fleet執行個體ID。替換
AccessControlList中的值為您的控制白名單位址區段,如何擷取,請參見開通公網訪問GitOps。
aliyun adcp UpdateHubClusterFeature --ClusterId <your_clusterid> --PublicAccessEnabled true --AccessControlList "[\"10.100.XX.XX/24\"]" --ArgoCDEnabled true可選:如果您使用的是RAM使用者的AK,則需要為RAM使用者授予AliyunAdcpFullAccess許可權。具體操作,請參見為RAM使用者授權。
步驟二:在GitOps控制台建立應用並分發至目的地組群
通過控制台發布
在多叢集GitOps頁面單擊GitOps控制台,進入ArgoCD UI登入頁面,單擊LOG IN VIA ALIYUN,通過阿里雲帳號SSO登入至ArgoCD UI。
串連Repo。
在ArgoCD UI左側導覽列選擇Settings,然後選擇 。
在彈出的面板中配置以下資訊,然後單擊CONNECT添加串連。
地區
參數
參數值
Choose your connection method
-
VIA HTTP/HTTPS
CONNECT REPO USING HTTP/HTTPS
Type
git
Project
default
Repository URL
https://github.com/AliyunContainerService/gitops-demo.git
Skip server verification
勾選

串連添加成功後會顯示Git的CONNECTION STATUS為Successful。

建立應用。
在ArgoCD UI左側導覽列選擇Applications,然後單擊+ NEW APP。
在彈出的面板配置以下資訊,然後單擊CREATE進行建立。
地區
參數
參數值
GENERAL
Application Name
echo-server-demo
Project Name
default
SYNC POLICY
在下拉式清單中選擇Automatic。
參數取值如下:
Manual:當Git端有變更時,需要使用者手動執行同步動作將其部署至目的地組群。
Automatic:ArgoCD Server每隔3分鐘自動檢測Git端的變更並將其自動部署至目的地組群。
SYNC OPTIONS
勾選AUTO-CREATE NAMESPACE。
SOURCE
Repository URL
在下拉式清單選擇已有Git Repo,此處選擇https://github.com/AliyunContainerService/gitops-demo.git。
Revision
HEAD
Path
manifests/helm/echo-server
DESTINATION
Cluster URL/Cluster Name
在下拉式清單中選擇目的地組群。
Namespace
echo-server-demo
HELM
VALUES FILES
values.yaml
建立完成後,在Application頁面,即可看到echo-server-demo的應用狀態。
如果SYNC POLICY選擇的是Manual方式,需要手動點擊SYNC,將應用同步部署至目的地組群。應用的Status為Healthy和Synced,表示已經成功同步。

單擊echo-server-demo應用程式名稱,即可查看應用詳情,展示應用相關的Kubernetes資源的拓撲結構及相應狀態。

通過ArgoCD CLI發布
登入和訪問AgroCD。
訪問ArgoCD v2.8.7,下載安裝v2.8.7版本的ArgoCD CLI。
在ACK One Fleet執行個體中執行以下命令,擷取ArgoCD系統的初始密碼。
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d在ACK One Fleet執行個體中執行以下命令,通過port-forward的方式登入ArgoCD,預設使用者名為
admin。export ARGOCD_OPTS='--port-forward-namespace argocd --port-forward' argocd login Username: admin Password:預期輸出:
'admin:login' logged in successfully Context 'port-forward' updated在ACK One Fleet執行個體中執行以下命令,更新預設使用者
admin的密碼。argocd account update-password *** Enter password of currently logged in user (admin): *** Enter new password for user admin: *** Confirm new password for user admin:預期輸出:
Password updated Context 'port-forward' updated
串連Repo。
執行以下命令添加Git Repo。
argocd repo add https://github.com/AliyunContainerService/gitops-demo.git --name echo-server預期輸出:
Repository 'https://github.com/AliyunContainerService/gitops-demo.git' added執行以下命令,查看已添加的Git Repo列表。
argocd repo list預期輸出:
TYPE NAME REPO INSECURE OCI LFS CREDS STATUS MESSAGE PROJECT git https://github.com/AliyunContainerService/gitops-demo.git false false false false Successful default執行以下命令,查看Clusters列表。
argocd cluster list預期輸出:在ArgoCD Clusters列表中,會看到ACK One Fleet執行個體關聯的所有關聯集群。
SERVER NAME VERSION STATUS MESSAGE PROJECT https://47.97.XX.XX:6443 c83f3cbc90a****-temp02 1.22+ Successful https://kubernetes.default.svc in-cluster Unknown Cluster has no applications and is not being monitored.
使用Application建立應用。
執行以下命令,建立應用。
argocd app create echo-server --repo https://github.com/AliyunContainerService/gitops-demo.git --path manifests/helm --dest-namespace echo-server-cli --dest-server https://47.97.XX.XX:6443預期輸出:
application 'echo-server' created執行以下命令,同步應用到目的地組群。
argocd app sync echo-server預期輸出:
TIMESTAMP GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE 2022-09-22T14:32:45+08:00 Service echo-server-cli echo-server OutOfSync Missing 2022-09-22T14:32:45+08:00 apps Deployment echo-server-cli echo-server OutOfSync Missing 2022-09-22T14:32:45+08:00 Service echo-server-cli echo-server Synced Progressing 2022-09-22T14:32:45+08:00 Service echo-server-cli echo-server Synced Progressing service/echo-server created 2022-09-22T14:32:45+08:00 apps Deployment echo-server-cli echo-server OutOfSync Missing deployment.apps/echo-server created 2022-09-22T14:32:45+08:00 apps Deployment echo-server-cli echo-server Synced Progressing deployment.apps/echo-server created Name: echo-server Project: default Server: https://47.97.XX.XX:6443 Namespace: echo-server-cli URL: https://127.0.0.1:52742/applications/echo-server Repo: https://github.com/AliyunContainerService/gitops-demo.git Target: Path: manifests/helm SyncWindow: Sync Allowed Sync Policy: <none> Sync Status: Synced to (e5c2618) Health Status: Progressing Operation: Sync Sync Revision: e5c261880a4072cdbfa5173add2be426f7f3**** Phase: Succeeded Start: 2022-09-22 14:32:44 +0800 CST Finished: 2022-09-22 14:32:45 +0800 CST Duration: 1s Message: successfully synced (all tasks run) GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE Service echo-server-cli echo-server Synced Progressing service/echo-server created apps Deployment echo-server-cli echo-server Synced Progressing deployment.apps/echo-server created執行以下命令,查看應用列表。
argocd app list預期輸出:
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET echo-server https://47.97.XX.XX:6443 echo-server-cli default Synced Healthy <none> <none> https://github.com/AliyunContainerService/gitops-demo.git manifests/helm
相關操作
在GitOps中部署應用後,您可以通過以下幾個操作來提高艦隊和GitOps的安全性和可觀測性。
配置Argo CD ConfigMap
在多叢集GitOps頁面的GitOps摺疊塊部分找到Argo CD ConfigMap。
單擊Argo CD ConfigMap後的配置。
在Argo CD ConfigMap配置頁面,通過選擇配置項下拉框選擇配置項,在編輯配置項代碼地區進行編輯。部分高頻配置項及對應重啟策略,請參見常用配置項。
重啟Argo CD組件
在多叢集GitOps頁面的GitOps摺疊塊部分找到Argo CD 組件。
單擊Argo CD 組件後的重啟。
在彈出框中的選擇待重啟應用下拉框選擇需要重啟的組件名稱,例如argocd-server,單擊確定。
(可選)關閉GitOps
當您不再需要使用GitOps能力時,可以先刪除其中的應用,再進行關閉GitOps操作。
如需刪除ACK One Fleet執行個體,請先關閉GitOps。
通過控制台關閉
登入ACK One控制台,在左側導覽列選擇。
在多叢集GitOps頁面左上方單擊艦隊名稱後的
按鈕,在下拉式清單中選擇目標艦隊。在多叢集GitOps頁面右上方,單擊關閉GitOps,在彈出的提示對話方塊中單擊確定。
通過阿里雲CLI關閉
確保阿里雲CLI為最新版本後,執行以下命令,關閉GitOps。
aliyun adcp UpdateHubClusterFeature --ClusterId <your_clusterid> --ArgoCDEnabled false