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

本文涉及的产品
容器镜像服务 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


相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。 &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
相关文章
|
7月前
|
Web App开发 Kubernetes 应用服务中间件
云效产品使用报错问题之yaml发布不可以,限制直接执行如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
7月前
阿里云ARMS的新版和老版界面是两套不同的系统
阿里云ARMS的新版和老版界面是两套不同的系统
157 2
|
5月前
|
数据采集 DataWorks 安全
DataWorks产品使用合集之怎么删除或更新已发布部署的文件实例
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
4月前
|
运维 分布式计算 DataWorks
DataWorks产品使用合集之运维中心中的运行日志可以保留多久
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
5月前
|
弹性计算 Kubernetes Java
阿里云云效操作报错合集之在绑定其他主体下的k8s集群时,通过kubeconfig导入集群时,出现报错,该如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
6月前
|
Kubernetes 监控 Java
阿里云云效产品使用问题之进行Kubernetes分批发布时应用名被更改,是什么导致的
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
6月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用问题之流水线如何在运行过程中设置(或者说是变更)自定义环境变量
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
7月前
|
运维 Devops Shell
云效产品使用报错问题之流水线通过控制台创建的用yaml实现失败如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
7月前
|
敏捷开发 运维 Kubernetes
云效产品使用常见问题之流水线的AppStack部署自动创建发布单让更新了编排配置后也自动创建失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
7月前
|
分布式计算 DataWorks 监控
Dataphin常见问题之生产环境任务无法下线如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。

热门文章

最新文章