argoCD与droneCI结合

简介: 我们的CI/CD流程采用了argoCD与droneCI两款工具,droneCI的关键文件是drone.yaml文件,配置在开发代码里。 argoCD的关键是helm包和不同环境的values.yaml参数。两者需要打通起来,让开发人员专注提交业务代码,后续程序的自动更新,部署等问题不影响他们。

背景

我们的CI/CD流程采用了argoCD与droneCI两款工具,droneCI的关键文件是drone.yaml文件,配置在开发代码里。 argoCD的关键是helm包和不同环境的values.yaml参数。两者需要打通起来,让开发人员专注提交业务代码,后续程序的自动更新,部署等问题不影响他们。

流程图

Image7.png

droneCI需要修改的部分

---
kind: pipeline
type: kubernetes
name: argocd
steps:
  - name: argocd deploy
    image: drone-argocd-plugin(自己制作的,就是一个ubuntu基础镜像,里面安装了一个argocd-cli工具)
    environment:
      ARGOCD_AUTH_TOKEN:
        from_secret: argocd_auth_token
      ARGOCD_SERVER:
        from_secret: argocd_server
    commands:
      - argocd --insecure app set 应用程序名 -p 应用镜像tag号=git-${DRONE_COMMIT_SHA:0:10}
      - argocd --insecure app sync 应用程序名
depends_on:
  - push
trigger:
  branch:
    - develop
  event:
    - push
---
kind: secret
name: argocd_server
get:
  path: drone/data/argocd
  name: server
---
kind: secret
name: argocd_auth_token
get:
  path: drone/data/argocd
  name: auth_token

这块代码的主要作用就是,在drone推送镜像到私有仓库之后,通过argocd的cli工具,加载argocd的登录信息,对argocd上,需要更新的应用程序设置镜像tag号,然后触发更新操作,完成自动更新


argoCD需要准备的内容

1.准备一个git仓库如下图。helm目录下放置需要部署的应用程序的所有helm文件夹,node目录放置每个节点集群需要的values.yaml文件,如开发环境是dev.yaml,测试环境是test.yaml,生产环境是prod.yaml

argocd1.png

2.在argoCD上部署应用app,如下图所示,只要设置好对应的git仓库,helm路径,values路径即可

argocd2.png

(此处也是笔者踏了很多坑得出的结论,最好使用git和submodule的方式来管理,不要使用harbor仓库等方式管理helm和values,因为argocd有一些设置是不符合使用习惯的,除非这个pr被合并https://github.com/argoproj/argo-cd/pull/6280)

全部打通完成之后,开发人员只要正常提交代码,通过sonarqube等扫描工具之后,代码合入develop分支之后,会触发argoCD根据git-hash自动更新,更新完成会在gitea的代码仓库上打一个小绿标,全程无人值守,666

目录
相关文章
|
运维 Prometheus 监控
Grafana 系列 - 统一展示 -11-Logs Traces 无缝跳转
Grafana 系列 - 统一展示 -11-Logs Traces 无缝跳转
|
Kubernetes 持续交付 开发工具
使用Drone搭建CICD服务
Drone是Go语言编写的,基于容器技术的CI/CD系统。它具有以下几个关键特性。 1、Everything is a Docker Container 2、One Server, Multiple Agents 3、Configuration as a code 4、丰富的插件
2799 1
|
数据挖掘 项目管理 数据库
用语雀数据表做项目管理
项目管理是技术同学经常会面临的课题,有没有什么轻量级的工具可以便捷使用呢? 且看看科技公司项目经理的实践案例吧~
|
域名解析 人工智能 机器人
AppFlow:企业微信支持流式群聊机器人
企业微信近日更新,新增群聊机器人功能,支持与自定义大模型对话。通过@机器人,可实现流式输出,提升交互效率。只需简单配置,即可将AI能力集成至群聊,完成即时消息解析与业务联动。
3541 1
AppFlow:企业微信支持流式群聊机器人
|
11月前
|
Java 测试技术 编译器
@GrpcService使用注解在 Spring Boot 中开始使用 gRPC
本文介绍了如何在Spring Boot应用中集成gRPC框架,使用`@GrpcService`注解实现高效、可扩展的服务间通信。内容涵盖gRPC与Protocol Buffers的原理、环境配置、服务定义与实现、测试方法等,帮助开发者快速构建高性能的微服务系统。
1958 0
|
存储 Ubuntu jenkins
CI/CD 工具比较:Jenkins、GitLab CI、Buildbot、Drone 和 Concourse
CI/CD 工具比较:Jenkins、GitLab CI、Buildbot、Drone 和 Concourse
2080 0
|
存储 消息中间件 监控
容器日志采集利器Log-Pilot
容器时代越来越多的传统应用将会逐渐容器化,而日志又是应用的一个关键环节,那么在应用容器化过程中,如何方便快捷高效地来自动发现和采集应用的日志,如何与日志存储系统协同来高效存储和搜索应用日志,本文将主要跟大家分享下如何通过Log-Pilot来采集容器的标准输出日志和容器内文件日志。
24087 0
|
Prometheus 监控 前端开发
Grafana 安装配置教程,让你的 Prometheus 监控数据变得更美观
《Grafana安装配置教程,让你的Prometheus监控数据变得更美观》简介: Grafana是一个开源的度量分析与可视化工具,支持多种数据源(如Prometheus),提供丰富的可视化功能和警报机制。本文详细介绍了Grafana的安装、汉化方法及模板使用,帮助用户轻松创建美观、灵活的数据面板,并实现数据的协作与共享。通过Docker镜像、配置文件修改或替换前端页面等方式实现汉化,让用户更便捷地使用中文界面。此外,还提供了导入JSON格式模板的具体步骤,方便快速搭建仪表盘。
3491 2

热门文章

最新文章