Devops系列四(使用argocd部署java应用到k8s容器)

一、说在前面的话

上文已为我们准备好了以下内容:

  • 制作java应用的docker镜像,并推送至镜像仓库
  • 上传helm yaml代码至gitlab仓库(此gitlab和java应用所在的gitlab可以独立,也可以在一起,但是不宜在同一个工程,所以这里特此区分)
  • 安装k8s和argocd
  • argocd的权限设计和对接ldap(非必须)

本文先梳理出整个devops的设计框架,然后将演示java应用是如何在argocd中部署的,以及升级程序的版本号后,自动触发更新部署。

二、总体设计

在这里插入图片描述

  • 这里的jenkins CI部分将交由下文继续展开,不属于本文的范畴
  • 本文重点讲述argocd CD部分是如何部署的细节

三、argocd project

这里我采用的是default–默认组,在实际使用中,你需要创建多个project,用于隔离不同组里的人员其权限。
换句话说,你公司有5个业务组,那么就需要创建5个project。(这里不去翻译为中文,因为工程或者说项目,实在和我们实际的组不是很搭)

  • 我理解的argocd中的project是指物理/虚拟组的概念,和权限是搭配使用的。给不同的人分配至不同的project,隔离不同组之间的权限。

在这里插入图片描述

四、 argocd cluster

因为我们把argocd部署在k8s,所以默认就有一个k8s可供部署应用。
在这里插入图片描述

你如果需要部署到其他k8s里,在这里再新增k8s的配置项即可。后面你在创建argocd 应用的时候就可以选择它。

五、argocd Repositories

这里的仓库,是指Helm yaml文件所存储的地方。前文我们已详细描述了如何制作并推送helm,本文就直接拿来使用,不再赘述。

gitlab的准备工作

在这里插入图片描述
在这里插入图片描述
把ssh密钥对的公钥存储在gitlab, 私钥保存在argocd。
在这里插入图片描述

正式创建argocd的仓库

下面的ssh private key data就是上图中的ssh私钥文件的内容。
在这里插入图片描述
返回仓库列表:
在这里插入图片描述

  • 注意,你仓库的CONNECTION STATUS是Successful,说明授权成功。
  • 接下里就是创建argocd 应用了。

六、argocd application

本文的重头戏了,前文所有的准备皆是为这一步做准备。

创建应用名称,选择所属的组,并设置自动部署还是手动部署

在这里插入图片描述

helm yaml和部署目标

在这里插入图片描述

yaml的部署方式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

应用详情

创建好的应用见下
在这里插入图片描述
在这里插入图片描述

七、对argocd 应用的补充说明

  • 应用中的参数覆盖,在详情界面,会有一个锤子状的图标以示区分。我这里要说的是,被覆盖的参数,只能手动修改后触发部署。像版本号等字段,是需要采用gitops技术来实现自动更新部署的,不要在argocd中进行参数覆盖,修改入口必须是在gitlab代码库。
    在这里插入图片描述
  • 查看应用的详情:yaml格式
    你查看MANIFEST内容,右上方点击“EDIT”即可修改。
    在这里插入图片描述
  • 同步策略详情见下:
  syncPolicy:automated:prune: trueselfHeal: trueallowEmpty: falsesyncOptions:- Validate=false- CreateNamespace=true- PruneProagationPolicy=foreground- PruneLast=trueretry:limit: 5backoff:duration: 5sfactor: 2maxDuration: 3m

八、总结

每次更新部署的时候,你只要修改git工程里的devops-service/values.yaml中的版本号,argocd就会自动触发部署。

后文有jenkins这款CI工具后,如果要把CI和CD串联起来,做到自动化,只需要在jenkins里修改values.yaml文件中的版本号。这也就是gitops是思想,基于git代码的提交触发以前人工的操作。

本文把我在使用argocd的过程中遇到的坑都一一总结出来,希望后来者有个对照。

踩过的坑,最大就是在helm部署的时候,没有做到gitops,要么没有选择values.yaml文件,要么覆盖了不应该覆盖的参数–程序版本号。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/16021.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vscosde中写html的速写规则和快捷键

目录 vsCode速写规则! enter 生成html框架ctrl / 注释生成html元素:直接写html,enter直接生成 并且添加内容批量生成> 元素嵌套 同级生成每个元素都有的属性. class # id样式放入css中 link 连接快速使用样式优先级 vsCode速写规则 ! enter 生成h…

PS188——谱瑞(Parade)推动的 Type-C扩展坞红海战略

2020年7月份谱瑞(Parade)以3750万美元的价格收购了睿思科技(Fresco Logic),对于芯片设计公司来说,并购往往是资本因素考量 >技术因素考量 >市场战略考量。 芯片设计公司的并购,往往更看重的是客户的…

mysql离线安装

MySQL离线安装 进行MySQL离线安装包,当前安装版本为MySQL8.0.32 下载页面:https://downloads.mysql.com/archives/community/ 下载地址:https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.36-1.el7.x86_64.rpm-bundle.tar 将下载完成的安…

梅雨季“霉”烦恼,防潮自救指南请收好

魔都的雨下个不停,天气也异常闷热,原来是上海已经入梅了。“雨连连、湿哒哒、闷兮兮”的梅雨季,湿漉漉的空气,感觉身体也跟着“发霉”。不想做梅雨季最“潮”人,赶紧码住这份抗“霉”攻略。 梅雨季最大的特点是空气湿度…

第2章 SSD主控和全闪存阵列

通过第一章可知,SSD主要由两大模块组成:主控和闪存介质。其中,主控的作用包括: (1)实现标准主机接口与主机通信; (2)实现与闪存的通信; (1&#x…

vue2 element-ui 2.9.1版不支持抽屉el-drawer

一个老项目中想使用抽屉 el-drawer,死活没有反应。 查了下element-ui的版本是2.9.1 再看其他一个正常使用抽屉的项目的element-ui版本。 但是 2.14.1 的element-ui版本又存在菜单管理无法折叠菜单项的问题。 看来还是得抽空解决在2.14.1菜单无法折叠的问题了。

C++ 实现生产者消费者模型 (线程同步、互斥锁、条件变量锁)详细注释

代码结构 任务:这里用一个int类型的taskNumber代替任务任务队列类:封装了任务队列,存,取等操作。生产者工作函数:生产者执行的函数,向任务队列中添加任务,每个生产者生产3个任务消费者工作函数…

投票评选活动小程序v2-用户报名图片上传

投票评选活动小程序v2-用户自行报名收集材料页面 主要收集项目或者作品图片及其描述,可以在后台进行统一录入,也可以是在用户界面,让用户自行报名上传。 这里开发了一个“我要报名”页面,在首页点击“我要报名”按钮跳转过来。 …

小程序代码提审用户隐私保护协议修改指引

为规范开发者的用户个人信息处理行为,保障用户合法权益,小程序涉及处理用户个人信息的开发者,均需补充相应用户隐私保护指引;微信会根据小程序版本隐私接口调用情况展示必填项,开发者可自主勾选其他项目。 一、代码提…

SpringBoot 实现 elasticsearch 查询操作(RestHighLevelClient 的案例实战)

文章目录 1. 环境准备1. 查询全部2. 根据 name 查询 match 分词查询3. 根据 name 和 品牌查询 multiMatch 分词查询4. 根据 brand 查询 match 分词查询5. 按照价格 范围查询6. 精确查询7. boolQuery8. 分页9. 高亮查询9. 公共解析 上一节讲述了 SpringBoot 实现 elasticsearch …

小程序蓝牙通信

蓝牙通信能力封装 一开始是根据uniapp提供的蓝牙api写的蓝牙方法,之后发现复用性,以及一些状态的监听存在缺陷,之后整理成了类。这样复用性以及状态监听的问题就解决了。 蓝牙组件 创建蓝牙组件的类 单例模式是为了保证蓝牙长连接&#xff0…

(22)LED灯(外部)

文章目录 前言 22.1 带有I2C连接的RGB LEDs/显示器 22.2 串行连接的设备 22.3 NTF LED的含义 前言 外部 LED 或 LED 显示屏可以通过连接到自动驾驶仪的 I2C 端口,或者在 4.0 及以后的版本中,如果是串行编程的设备,可以通过输出使用 SERV…