应用中心迁移应用至ACKOne GitOps实践向导

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本文为您介绍如何从应用中心迁移应用至ACKOne GitOps。

本部分文档只适用于迁移以Git为源的应用中心应用,编排模板为源的应用迁移问题移步 Q&A部分。


前置条件

(1) 已创建ACK One多集群管理实例, 可参考 开启多集群管理

(2) ACK One多集群管理实例中已接入子集群,可参考 管理关联集群

(3) 已在ACk One多集群管理实例中开启GitOps, 可参考 GitOps使用快速入门


步骤一: 下载argocd CLI并访问应用中心主控实例

(1) 访问ArgoCD,下载安装最新的argocd CLI

(2) 使用argocd CLI 访问应用中心主控实例

导入环境变量:

$ export ARGOCD_OPTS='--port-forward-namespace appcenter --plaintext'

查看应用列表,示例如下:

$ argocd app list
NAME                   CLUSTER                     NAMESPACE  PROJECT  STATUS  HEALTH   SYNCPOLICY  CONDITIONS  REPO                                              PATH  TARGET
appcenter/gitops-demo  https://192.168.0.244:6443  gitops     default  Synced  Healthy  <none>      <none>      git@github.com:haoshuwei/gitops-demo-private.git  helm  main

获取需要迁移的应用名称为gitops-demo, 使用的repo为git@github.com:haoshuwei/gitops-demo-private.git,应用部署在目标集群 https://192.168.0.244:6443

步骤二: 导出应用Manifest

(1) 导出应用Application CR Manifests,示例如下:

$ kubectl -n appcenter get application gitops-demo -oyaml > gitops-demo.yaml

(2) 导出应用使用的repo secret,示例如下:

查看repo secret列表:

$ kubectl -n appcenter get secret -l argocd.argoproj.io/secret-type=repository
NAME              TYPE     DATA   AGE
repo-3914117193   Opaque   5      50m

根据步骤一中应用gitops-demo使用的repo url为git@github.com:haoshuwei/gitops-demo-private.git,确认需要导出的repo secret名称,查看repo secret信息如下所示:

$ kubectl -n appcenter get secret repo-3914117193 -o jsonpath="{.data.url}" | base64 -d
git@github.com:haoshuwei/gitops-demo-private.git

确认并导出名称为repo-3914117193的repo secret:

$ kubectl -n appcenter get secret repo-3914117193 -oyaml > repo-3914117193.yaml

步骤三: 下载argocd CLI并访问ACK One主控实例

(1) 请参考 通过ArgoCD CLI方式访问ACK One GitOps

(2) 查看子集群信息,示例如下:

$ argocd cluster list
SERVER                          NAME                                                      VERSION  STATUS      MESSAGE                                                  PROJECT
https://<apiserver>:6443        <clusterid>-ack-production-oversea  1.24+    Successful
https://kubernetes.default.svc  in-cluster                                                         Unknown     Cluster has no applications and is not being monitored.

步骤四: 导入应用Manifest到ACK One主控实例

(1)修改步骤二中导出的gitops-demo.yaml 和repo-3914117193.yaml 文件:

请确认gitops-demo.yaml 中的 {.spec.destination.server} server地址与步骤三ACK One实例中列出的目标集群的server地址是否一致(通常是公网地址或内网地址的区别),若不一致,则执行以下shell命令进行修改,示例如下:

$ sed -i "s/192.168.0.244/<请替换为ACK One实例中集群server ip地址>/g" gitops-demo.yaml

修改 gitops-demo.yaml 中的namespace 为argocd,示例如下:

$ sed -i "s/namespace: appcenter/namespace: argocd/g" gitops-demo.yaml

修改 repo-3914117193.yaml 中的namespace 为argocd,示例如下:

$ sed -i "s/namespace: appcenter/namespace: argocd/g" repo-3914117193.yaml

(2) 导入repo Manifests到ACK One主控实例

导入 repo-3914117193.yaml

$ kubectl apply -f repo-3914117193.yaml

查看repo是否已导入,并确认STATUS为Successful(表示连接repo成功):

$ argocd repo list
TYPE  NAME                 REPO                                              INSECURE  OCI    LFS    CREDS  STATUS      MESSAGE  PROJECT
git   gitops-demo-private  git@github.com:haoshuwei/gitops-demo-private.git  true      false  false  false  Successful

(3) 导入application Manifests到ACK One主控实例

导入 gitops-demo.yaml

$ kubectl apply -f gitops-demo.yaml

查看application列表,并确认应用状态是否与应用中心一致:

$ argocd app list
NAME         CLUSTER                   NAMESPACE  PROJECT  STATUS  HEALTH   SYNCPOLICY  CONDITIONS  REPO                                              PATH  TARGET
gitops-demo  https://<apiserver>:6443  gitops     default  Synced  Healthy  <none>      <none>      git@github.com:haoshuwei/gitops-demo-private.git  helm  main

步骤五:从应用中心移除应用

在应用中心主控实例中,通过以下命令移除Application:

$ argocd app delete gitops-demo --cascade=false

注意: 必须要使用参数--cascade=false,否则会导致实际运行在目标集群中的k8s资源跟随该Application一起被删除。


至此,您已成功完成应用中心迁移应用至ACKOne GitOps实践向导。


Q&A

(1)编排模版源的应用如何迁移?

ACK One GitOps跟随Argocd开源社区进行功能迭代,只支持以Git为源的应用创建和管理。 如果您在应用中心的应用使用编排模板为源,则需要先手动将编排模板迁移为Git源,再使用Git源在ACK One GitOps系统中发布该应用,最后按照步骤五移除应用中心应用。

(2)编排模版源的应用触发器如何替换?

应用中心触发器只支持编排模版源的应用,在ACK One GitOps系统中,Git源的应用则使用image-updater自动更新应用镜像。如何使用image-updater自动更新应用镜像请参考文档:https://developer.aliyun.com/article/1122570?groupCode=kubernetes

(3)应用中心使用image-updater自动更新的应用如何迁移ACK One GitOps?

完成本文步骤一到步骤五的迁移步骤后,还需要在ACK One主控实例中配置访问ACR和Git仓库的凭证:

配置访问ACR的凭证:

$ kubectl -n argocd apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
  name: acr
type: Opaque
stringData:
  acr: <your_username>:<your_password>  # 将<your_username>:<your_password>更换为您自己的容器镜像仓库访问凭证。
EOF

配置访问Git仓库的凭证:

$ kubectl -n argocd create secret generic git-creds \
--from-literal=username=<your_username> \
--from-literal=password=<your_password>

更新应用Application中的annotaion argocd-image-updater.argoproj.io/write-back-method,示例:

metadata:
  annotations:
    argocd-image-updater.argoproj.io/write-back-method: git:secret:argocd/git-creds

即更新  git:secret:<modify from appcenter to argocd>/git-creds 中的命名空间appcenter为argocd


相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
2月前
|
Prometheus 监控 前端开发
prometheus|云原生|grafana-9.4.3版本的主题更改
prometheus|云原生|grafana-9.4.3版本的主题更改
174 0
|
10天前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用问题之代码库主账号新建库无法选择"公开性",是什么导致的
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
2月前
|
安全 Linux 网络安全
其他云平台的业务迁移到阿里云最新优惠,使用服务器迁移中心SMC快速迁移简介
越来越多的个人和企业希望将部署在其他云平台或者IDC企业的业务迁移到阿里云上,对于这部分用户来说,最为关注的问题就是迁移到阿里云有没有什么优惠,迁移过程是否麻烦,针对这部分用户的需求,阿里云推出了5亿算力补贴,针对迁移用户做出补贴优惠,在迁移过程中,用户可以自行做数据传输迁移,也可以使用阿里云的服务器迁移中心,快速完成迁移。本文为大家介绍其他云服务商的业务迁移到阿里云最新优惠政策,以及使用服务器迁移中心实现快速迁移的方法。
其他云平台的业务迁移到阿里云最新优惠,使用服务器迁移中心SMC快速迁移简介
|
10天前
|
前端开发 Devops 测试技术
阿里云云效产品使用问题之更换所部署的环境关联的ACK集群该如何实现
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
2月前
|
敏捷开发 Devops 测试技术
Jira Server 不维护了,如何将 Jira 平滑迁移到阿里云云效
云效是阿里云提供的一站式 DevOps 平台,提供涵盖软件研发全生命周期的研发工具链和研发管理服务,目前已服务数十万家企业。希望进行 Jira 迁移的企业,可以借助云效的项目协作平台 Projex 轻松实现研发流程的定制化、规范化和自动化。
62960 3
|
2月前
|
敏捷开发 运维 Kubernetes
云效产品使用常见问题之流水线的AppStack部署自动创建发布单让更新了编排配置后也自动创建失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
12月前
|
存储 关系型数据库 MySQL
rancher服务部署之DevOps流水线(一)—基础数据库服务部署及rancher相关配置私服信息
rancher服务部署之DevOps流水线(一)—基础数据库服务部署及rancher相关配置私服信息
|
运维 分布式计算 Kubernetes
阿里云 ACK One 多集群管理再升级:GitOps 多集群持续集成,统一报警管理
本文介绍了 ACK One 近期发布的 2 个主要特性,增强了多集群应用分发与运维管理能力,包括应用分发 GitOps,统一报警管理。
阿里云 ACK One 多集群管理再升级:GitOps 多集群持续集成,统一报警管理
|
存储 运维 Kubernetes
GitOps 多环境部署问题及解决方案(下)
GitOps 多环境部署问题及解决方案(下)
270 0
GitOps 多环境部署问题及解决方案(下)
|
存储 Kubernetes 测试技术
GitOps 多环境部署问题及解决方案(上)
GitOps 多环境部署问题及解决方案(上)
217 0
GitOps 多环境部署问题及解决方案(上)