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

目录
相关文章
|
4月前
|
存储 Linux 数据库
k8s-dashboard、helm
k8s-dashboard、helm
82 1
|
4月前
|
Kubernetes 应用服务中间件 nginx
深入了解 `kubectl`:Kubernetes 命令行工具
深入了解 `kubectl`:Kubernetes 命令行工具
164 1
|
6月前
|
Kubernetes 关系型数据库 数据库
Kubernetes Helm
Kubernetes Helm
133 0
Kubernetes Helm
|
6月前
|
Prometheus 监控 Cloud Native
Velero 系列文章(二):使用 Helm 安装 Velero
Velero 系列文章(二):使用 Helm 安装 Velero
|
运维 Kubernetes 安全
GitOps 指南
GitOps 指南
731 0
GitOps 指南
|
存储 运维 Kubernetes
GitOps 自问自答
GitOps 自问自答
102 0
GitOps 自问自答
|
消息中间件 Kubernetes 网络协议
使用minikube安装kubernetes和dashboard
使用minikube安装kubernetes和dashboard
501 0
使用minikube安装kubernetes和dashboard
|
Kubernetes Perl 容器
【kubernetes】好用的 kubectl 命令
【kubernetes】好用的 kubectl 命令
124 1
|
Prometheus Kubernetes 监控
Kubernetes Kruise Rollout
Kubernetes Kruise Rollout
240 1
|
自然语言处理 Kubernetes Devops
kustomize (四) generatorOptions详解
kustomize (四) generatorOptions详解