您可以在ACK One舰队的Fleet实例中开启GitOps,通过Git repository对应用编排、Helm编排等实现版本管理,同时支持应用一次编排的多集群持续发布。它完全兼容社区ArgoCD的使用方式,并提供了高可用的控制面。本文介绍如何在ACK One舰队的Fleet实例中开启GitOps实现多集群应用发布的流程,帮助您快速上手GitOps。
前提条件
-
已开启舰队管理功能。具体操作,请参见开启舰队管理功能。
-
舰队的Fleet实例已添加多个关联集群。具体操作,请参见添加关联集群。
-
已从ACK One控制台获取Fleet实例的KubeConfig,并通过kubectl连接至Fleet实例。
-
已安装最新版本阿里云CLI并配置阿里云CLI。
开通地域
已开通ACK One舰队管理功能的地域均可使用。更多信息,请参见使用限制。
步骤一:在ACK One Fleet实例中开启GitOps
重要
开启GitOps后,ACK One会默认创建以下资源。关于资源计费信息,请参见舰队管理云产品资源计费。
-
一个SLB,通过此SLB暴漏ArgoCD的API和UI访问端点。
-
一个按量计费的2核 4 GB的ECI实例,用于运行ArgoCD服务。
通过CLI方式开启
-
确保阿里云CLI为最新版本后,执行以下命令,开启GitOps。
替换以下
为您的Fleet实例ID。
aliyun adcp UpdateHubClusterFeature --ClusterId --ArgoCDEnabled true
-
可选:如果您使用的是RAM用户的AK,则需要为RAM用户授予以下权限。
具体操作,请参见为RAM用户授权。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "adcp:UpdateHubClusterFeature" ], "Resource": "*" } ] }
通过控制台开启
-
登录ACK One控制台,在左侧导航栏选择舰队 > GitOps。
-
在GitOps页面,单击开启GitOps。
GitOps开启后,页面上会显示GitOps控制台,您可以单击GitOps控制台进行访问。
步骤二:通过ArgoCD CLI方式访问ArgoCD
-
访问ArgoCD,下载安装最新的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
步骤三:创建和发布多集群应用
方式一:通过ArgoCD CLI方式创建和发布多集群应用
-
执行以下命令,添加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
预期输出:
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.
在ArgoCD Clusters列表中,会看到ACK One Fleet实例关联的所有关联集群。
-
创建应用并发布应用到目标集群。
-
方式一:使用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: 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 https://github.com/AliyunContainerService/gitops-demo.git manifests/helm
-
-
方式二:使用ApplicationSet方式
-
使用以下内容,创建applicationset.yaml。
apiVersion: argoproj.io/v1alpha1 kind: ApplicationSet metadata: name: echo-server spec: generators: - list: elements: - cluster: production url: https://47.97.xx.xx:6443 - cluster: staging url: https://47.97.xx.xx:6443 template: metadata: name: '{{cluster}}-echo-server' spec: project: default source: repoURL: https://github.com/AliyunContainerService/gitops-demo.git targetRevision: main path: manifests/directory/{{cluster}} destination: server: '{{url}}' namespace: multi-echo-server
-
执行以下命令,部署ApplicationSet。
kubectl -n argocd apply -f applicationset.yaml
-
执行以下命令,查看ApplicationSet状态。
kubectl -n argocd get applicationset
预期输出:
NAME AGE echo-server 40s
-
执行以下命令,查看应用列表。
argocd app list
预期输出:
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET production-echo-server https://47.97.xx.xx:6443 multi-echo-server default OutOfSync Missing https://github.com/AliyunContainerService/gitops-demo.git manifests/directory/ack main staging-echo-server https://47.97.xx.xx:6443 multi-echo-server default OutOfSync Missing https://github.com/AliyunContainerService/gitops-demo.git manifests/directory/idc main
-
执行以下命令,同步应用到目标集群。
argocd app sync production-echo-server staging-echo-server
-
-
方式二:通过ArgoCD UI页面创建和发布多集群应用
-
执行以下命令,在本地使用ACK One Fleet实例的KubeConfig进行port-forward代理,通过代理访问ArgoCD UI页面。
kubectl port-forward -n argocd service/argocd-server 8080:https
-
在浏览器输入
https://127.0.0.1:8080
访问ArgoCD UI页面。使用默认用户
admin
登录,可以查看应用信息。 -
添加Git Repo。
-
在ArgoCD的Settings > Repositories 页面中,单击+ CONNECT REPO USING HTTPS。
-
在弹出面板中配置相应信息,然后单击CONNECT。
添加成功后,该页面会显示Git的CONNECTION STATUS为Successful。
-
-
创建应用并同步至集群。
-
在ArgoCD的Applications页面中,单击+ NEW APP,进行如下配置。
区域
参数
设置值
GENERAL
Application Name
echo-server-app
Project Name
default
SYNC POLICY
在下拉列表中选择Manual,取值:
-
Manual:当Git端有变更时,需要用户手动执行同步动作将其部署至目标集群。
-
Automatic:ArgoCD Server每隔3mins自动检测Git端的变更并将其自动部署至目标集群。
SOURCE
Repository URL
在下拉列表选择已有Git Repo,此处选择
https://github.com/AliyunContainerService/gitops-demo.git
。Revision
main
Path
manifests/helm
DESTINATION
Cluster Name
在下拉列表中选择目标集群。
Namespace
echo-server
-
-
配置完成,单击页面上方的CREATE。
创建完成后,在ArgoCD的Applications页面,即可查看echo-server-app的应用状态。
-
单击目标应用下方的SYNC,将应用同步部署至目标集群。
同步完成后,echo-server-app应用的Status右侧出现Healthy和Synced,表示应用已同步。单击echo-server-app,即可查看该应用详情。
-
步骤四:在ACK One Fleet实例中关闭GitOps
通过CLI方式关闭
确保阿里云CLI为最新版本后,执行以下命令,关闭GitOps。
aliyun adcp UpdateHubClusterFeature --ClusterId --ArgoCDEnabled false
通过控制台关闭
-
登录ACK One控制台,在左侧导航栏选择舰队 > GitOps。
-
在GitOps页面右上角,单击关闭功能。
说明
如需删除ACK One Fleet实例,请先关闭GitOps。
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/170083.html