赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 分布式云容器平台ACK One
  4. 实践教程
  5. CICD
  6. ACK One GitOps最佳实践
  7. 使用ACK One GitOps部署应用

使用ACK One GitOps部署应用

  • ACK One GitOps最佳实践
  • 发布于 2025-04-18
  • 0 次阅读
文档编辑
文档编辑

ACK One GitOps托管并完全兼容ArgoCD相关能力,支持持续迭代,可通过使用Git部署模板代替模板化分发能力。本文介绍如何通过ACK One GitOps控制台或CLI的方式部署应用。

前提条件

  • 已开启舰队管理功能。具体操作,请参见开启舰队管理功能。

  • 舰队的Fleet实例已添加2个关联集群(服务提供者集群、服务消费者集群)。具体操作,请参见添加关联集群。

  • 已从ACK One控制台获取Fleet实例的KubeConfig,并通过kubectl连接至Fleet实例。

  • 已安装最新版阿里云CLI并配置凭证。请参见安装阿里云CLI和配置凭证。如果是RAM用户操作,请确保RAM用户已授予AliyunAdcpFullAccess权限。具体操作,请参见为RAM用户授权。

  • 已通过ArgoCD下载安装最新版本的ArgoCD CLI。

  • 已登录GitOps系统。具体操作,请参见登录GitOps系统。

通过ACK One GitOps部署应用

开启ACK One GitOps后,您可以通过ACK One GitOps(ArgoCD)控制台和ArgoCD CLI两种方式部署管理应用。

通过ACK One GitOps(ArgoCD)控制台部署应用

步骤一:在ArgoCD控制台添加Git Repo并同步至目标集群

  1. 在浏览器中输入已获取到的ArgoCD Server域名,访问ArgoCD控制台。关于如何获取域名,请参见登录GitOps系统。

  2. 在ArgoCD首页,单击LOGIN VIA ALIYUN,登录ArgoCD控制台。

  3. 添加发布源Git Repo。

    1. 在左侧导航栏,选择Settings > Repositories,然后单击+ CONNECT REPO。

    2. 在弹出面板中配置如下信息,然后单击CONNECT。添加Git repo.png

      添加成功后,该页面会显示Git的CONNECTION STATUS为Successful。success.png

  4. 创建ArgoCD Application,并发布应用到目标集群。

    1. 在Applications页面,单击+ NEW APP,配置如下信息。 Application将拉取Git Repo中的Helm Chart并部署到目标集群的default命名空间。添加应用.png

    2. 配置完成,单击页面上方的CREATE。

      创建完成后,在ArgoCD的Applications页面,即可查看echo-server-app的应用状态。查看状态.png

    3. 单击目标应用下方的SYNC,将应用同步部署至目标集群。

    4. 同步完成后,echo-server-app 应用的Status右侧出现Healthy和Synced,表示应用已同步。单击echo-server,即可查看该应用详情,ArgoCD将展示应用相关Kubernetes资源的拓扑结构及相应的状态。同步.png

步骤二:查看应用的实际部署情况

连接Fleet实例的KubeConfig,在Fleet实例中执行命令查看应用的实际部署情况。

  1. 执行以下命令,查看Fleet实例已关联的关联集群。

    kubectl amc get managedcluster

    预期输出:

    Name         Alias             HubAccepted
    cd****      ackpro-cluster2      true
    ce****      ackpro-cluster1      true    // GitOps部署的目标集群。
  2. 执行以下命令,通过amc -m参数指定集群,查看default命令空间下的Deployment、Service和Pod资源。

    kubectl amc get all -n default -m ce****

    预期输出:

    Run on ManagedCluster ce**** (ackpro-cluster1)
    NAME                               READY   STATUS    RESTARTS   AGE
    pod/echo-server-5cf54bdbcb-jv58k   1/1     Running   0          59m
    
    NAME                  TYPE           CLUSTER-IP        EXTERNAL-IP    PORT(S)          AGE
    service/echo-server   LoadBalancer   192.XX.XX.XX      39.XX.XX.XX   8080:31769/TCP   59m        21d
    
    NAME                          READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/echo-server   1/1     1            1           59m
  3. 执行以下命令,访问Loadbalancer Service的External-IP,验证应用执行情况。

    curl http://39.XX.XX.XX:8080/version

    预期输出:

    "Hello Echo Server v1.0"

    预期输出表明,当前应用版本为v1.0。

步骤三:升级应用版本

  1. 将Git中的Image Tag版本v1.0修改为v2.0。修改tag.png

    由于Git Repo发生变化,ArgoCD Application会显示OutOfSync。

  2. 单击黄色的OutOfSync图标,可以查看详细的区别。

    更新并同步.png

    区别如下图所示。查看区别.png

  3. 单击SYNC,发起同步,同步完成后,Pod Image Tag变成v2.0,与预期一致。确认版本.png

  4. 执行以下命令,访问Service,查看实际版本。

    curl http://39.XX.XX.XX:8080/version

    预期输出:

    "Hello Echo Server v2.0"

    预期输出表明,应用版本已升级为v2.0版本。

步骤四:回滚应用版本

版本升级为v2.0后,ArgoCD会保留之前的ReplicaSet,便于快速回滚之前的版本。

  1. 在ACK one Fleet实例上执行以下命令,通过amc -m参数,查看指定的关联集群的资源状态。

    kubectl amc get replicaset  -n default -m ce****

    预期输出:

    Run on ManagedCluster ce**** (ackpro-cluster1)
    NAME                     DESIRED   CURRENT   READY   AGE
    echo-server-55664c4677   1         1         1       26m    // 版本v2.0。
    echo-server-5cf54bdbcb   0         0         0       109m   // 版本v1.0。
  2. 如需回滚到版本v1.0,可在应用页面,单击HISTORY AND ROLLBACK,查看应用的所有历史版本。回滚版本.png

  3. 选择对应的v1.0版本进行回滚,然后单击Rollback。确认回滚.png

    此时,Pod Image Tag已经回滚到v1.0,由于ArgoCD和Git Repo相比出现差异,因此应用状态变为OutOfSync,在问题修复后,单击SYNC发起同步。

    说明

    ArgoCD也支持自动同步Git Repo信息。

通过ArgoCD CLI部署应用

  1. 执行以下命令,通过ArgoCD Server域名登录ArgoCD,CLI将打开浏览器完成SSO登录。

    argocd login argocd.<ackone cluster id>.<region>.alicontainer.com --sso
    Opening browser for authentication
    Performing authorization_code flow login: https://signin.aliyun.com/oauth2/v1/auth?xxx
    Authentication successful
    'root' logged in successfully
    Context 'argocd.<ackone cluster id>.<region>.alicontainer.com' update
  2. 执行以下命令,增加Git Repo。

    argocd repo add https://github.com/AliyunContainerService/gitops-demo.git --name echo-server

    预期输出:

    Repository 'https://github.com/AliyunContainerService/gitops-demo.git' added
  3. 执行以下命令,查看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
  4. 执行以下命令,查看集群。

    argocd cluster list

    预期输出:

    SERVER                          NAME                    VERSION  STATUS   MESSAGE                                                  PROJECT
    https://10.XX.XX.XX:XX      ce****-ackpro-cluster1               Unknown  Cluster has no applications and is not being monitored.
    https://10.XX.XX.XX:XX      cd****-ackpro-cluster2               Unknown  Cluster has no applications and is not being monitored.
    https://kubernetes.default.svc  in-cluster                       Unknown  Cluster has no applications and is not being monitored.

    您可以通过ACK one Fleet实例,添加新的关联集群,ACK One将自动同步集群到ArgoCD中。

  5. 执行以下命令,创建应用。

    argocd app create echo-server --repo https://github.com/AliyunContainerService/gitops-demo.git --path manifests/helm --revision one-demo --dest-namespace default --dest-server https://10.0.XX.XX:6443

    预期输出:

    application 'echo-server' created
  6. 执行以下命令,从Git中拉取同步应用,并部署到目标集群中。

    argocd app sync echo-server

通过ArgoCD ApplicationSet实现多集群GitOps部署

关于实现多集群GitOps部署的具体操作,请参见使用ApplicationSet创建多个应用。

通过ArgoCD Application部署OCI Helm Chart

关于部署OCI Helm Chart的具体操作,请参见使用ACK One GitOps部署ACR EE OCI Helm Chart。

相关文档

  • GitOps快速入门

  • 配置ACK One GitOps多租户权限

  • 基于ACK One GitOps和ACR构建CI/CD流水线

  • ArgoCD官方文档

  • ArgoCD ApplicationSet

相关文章

最佳实践概述 2025-04-18 18:06

在完整的CI/CD流水线中,您可以通过修改代码自动触发CI构建,并将镜像推送到容器镜像服务ACR,然后触发ACK One GitOps将应用持续部署到各个集群。本文通过示例介绍完整流程中ACK One GitOps最佳实践的相关概念和流程。 相关概念

基于ACK One GitOps部署的应用示例介绍 2025-04-18 18:06

本文介绍基于ACK One GitOps部署的应用示例。 应用部署仓库的目录结构 一个完整的CI/CD流水线中,涉及业务代码仓库和应用部署代码仓库两类。ACK One GitOps本实践的仓库说明如下。 业务代码仓库包含2个,分别从echo-server项目

使用ACK One分布式工作流集群构建容器镜像CI 2025-04-18 18:06

本文介绍如何使用ACK One分布式工作流集群构建容器镜像CI。 前提条件 已创建工作流集群,从ACK One控制台获取分

使用ACK One GitOps部署应用 2025-04-18 18:06

ACK One GitOps托管并完全兼容ArgoCD相关能力,支持持续迭代,可通过使用Git部署模板代替模板化分发能力。本文介绍如何通过ACK One GitOps控制台或CLI的方式部署应用。 前提条件 已开启舰队管理功能。具体操作,请参见

基于ACK One GitOps和ACR构建CICD流水线 2025-04-18 18:06

ACK One GitOps可实现多集群GitOps应用的持续交付,容器镜像服务ACR支持绑定业务代码仓库,以实现应用的持续集成。本实践基于这两者构建开发(Dev)、预发(Staging)、生产(Production)集群的CI/CD流水线,实现代码修改提交到代码仓库后,自动将最新镜像更新至应用,并

基于ACK One Gitops使用Argo Rollouts实现金丝雀发布 2025-04-18 18:05

ACK One整合了ArgoCD GitOps的能力,同时结合渐进式发布组件Argo Rollouts,通过Git Commit实现全自动的金丝雀发布。本文介绍如何通过ACK One GitOps结合Argo Rollouts组件快速构建应用的金丝雀发布能力。

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号