.NET 微服务——CI/CD(4):避坑和一点经验
如果你看过之前几篇文章,应该已经Jenkins成功搭建了CICD环境,但是进入正式环境会有一些坑,不注意中招的话很难受,这里总结一下,避免重复消耗精力。
后门漏洞
Jenkins有后门,这是个老问题了。虽然早在18年就有人发现,而且当时Jenkins团队也快速打了补丁(2.137以后),但你下载的某些插件如果有漏洞(比如最近Log4j的大雷)也可能导致被黑。
为了杜绝这个问题,我建议你做到这几点:
1、升级Jenkins到最新稳定版(2021-12-01最新2.319.1)
2、如果可以,不要把Jenkins服务器暴露在公网。可以选择个人电脑+花生壳。
3、放通docker tcp端口时,不要放2376端口。
4、不要在业务服务器上安装Jenkins。
5、替换/删除掉可能出现问题的插件。
6、SSH Server不要配置root账户。
6、修改Jenkins授权:

无用镜像
通过Jenkins自动构建镜像后,会在Docker留下一个空镜像,大概700-800M左右,要命的是每构建一次就会多一个,多来几次服务器的磁盘就不够用了。。。。手动可以解决但不优雅,CICD嘛,必须全自动。
增加构建步骤,通过SSH执行这段命令:
echo "==========清理空镜像=========="
clearImagesList=$(docker images -f "dangling=true" -q)
if [ ! -n "$clearImagesList" ]; then
echo "没有空镜像"
else
docker rmi $(docker images -f "dangling=true" -q)
echo "空镜像已清理"
fi
如果你选择上传镜像到阿里云仓库(或其他云仓库),还会留下一个tag镜像和原镜像,也可以在构建步骤中删除:
echo "==========清理镜像=========="
docker rmi -f mydotnet6
docker rmi registry.cn-shenzhen.aliyuncs.com/命名空间/仓库名:版本号
硬件配置
根据实践经验,建议Jenkins所在服务器至少拥有2核4GB的配置,低于这个配置时,构建过程可能会十分缓慢,会导致它经常弹出异常错误。
私服镜像仓库
Jenkins默认支持Harbor,非常简单但需要你先搭建好Harbor。通过这种方式上传可以勾选“清理本地镜像”:

其他的小细节不再赘述,进入生产环境后大家都会有自己的经验。欢迎讨论。
如果你现在还没有利用Jenkins搭建过CICD环境,建议你查看前几篇文章。
.NET 微服务——CI/CD(4):避坑和一点经验的更多相关文章
- 分布式架构和微服务CI/CD的范本技术解读
随笔分类 - 分布式架构--http://www.cnblogs.com/hujihon/category/858846.html (ZooKeeper.activemq.redis.kafka)的分 ...
- 唱吧DevOps的落地,微服务CI/CD的范本技术解读----最大的难点并不是实际业务代码的编写,而是服务的监控和调试以及容器的编排
1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...
- 唱吧DevOps的落地,微服务CI/CD的范本技术解读
1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...
- .NET6 微服务——CI/CD(1):搭建Jenkins并实现自动构建
CI/CD 它的意思是 持续集成/持续部署,这也不是新概念.那些八股文就不写了,说话的方式简单点:如果成功搭建CI/CD环境,当你需要迭代线上程序时,只需通过git提交代码就可以,其他什么都不用做.是 ...
- .NET 微服务——CI/CD(3):镜像自动分发
如何通过Jenkins完成镜像分发?基本做法是:打包镜像→上传镜像到仓库→脚本分发.镜像仓库也有很多,比如docker hub.Harbor等,今天这一篇讲一下基于阿里云镜像仓库的操作. 首先,准备一 ...
- .NET 微服务——CI/CD(2):自动打包镜像
准备工作 一.开启docker的tcp 我的服务器是linux,以端口2376为例,找到docker.service,在ExecStart下新增这段代码即可: -H tcp://0.0.0.0:237 ...
- 【下一代核心技术DevOps】:(五)微服务CI与Rancher持续集成
1. 引言 DevOps的核心魅力是快速的持续集成交付,降低研发和实施运维之间的交互,使得传统的各种扯皮现象统统消失.最重要的是降低成本 保障产品交付可靠性. 使用Rancher作为持续集成的关键环节 ...
- 使用http://start.spring.io/构建maven微服务项目的几个坑及eclipse构建spring boot微服务项目
一,使用http://start.spring.io/构建maven微服务项目 本来嘛,直接构建的项目导入时没有任何问题的导入就可以运行,可是最近构建好项目,然后导入,种种报错 1.导入之后POM报错 ...
- 看完这篇微服务架构设计思想,90%的Java程序员都收藏了
本博客强烈推荐: Java电子书高清PDF集合免费下载 https://www.cnblogs.com/yuxiang1/p/12099324.html 微服务 软件架构是一个包含各种组织的系统组织, ...
随机推荐
- Boss直聘App上“天使投资、VC、PE” 与“A轮、B轮、C轮融资”的关系
我们经常看到朋友圈里某某公司获得了某轮融资,所谓的A轮B轮究竟是个什么概念呢?今天就跟小伙伴们分享一下A.B.C.D轮融资与天使投资.VC.PE的关系. 天使投资(AI):天使投资所投的是一些非常早期 ...
- Latex-安装_第一天
LaTex安装 Windows 小知识: \(Tex\)来源technology,希腊词根是\(tex\),Latex应该读成"拉泰赫". https://miktex.org/ ...
- Mac brew安装MySQL8.0.18后忘记密码(重置密码篇)
前要:MySQL8后密码要求很高,要有大小写字母和数字特殊字符,导致自己忘记以前配置的密码 一.跳过mysql的密码认证,修改配置文件my.cnf $ ls /usr/local/etc/my.cnf ...
- CF742B Arpa's obvious problem and Mehrdad's terrible solution 题解
Content 有一个长度为 \(n\) 的数组,请求出使得 \(a_i \oplus a_j=x\) 且 \(i\neq j\) 的数对 \((i,j)\) 的个数.其中 \(\oplus\) 表示 ...
- WinFrm中多线程操作窗体属性
首先声明一个委托. delegate void SetTextCallback(string text); 然后再写一个事件. private void SetInfo(string text) { ...
- AcWing 1204. 错误票据
题目: 某涉密单位下发了某种票据,并要在年终全部收回. 每张票据有唯一的ID号. 全年所有票据的ID号是连续的,但ID的开始数码是随机选定的. 因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成 ...
- JAVA在JDK1.8中Stream流的使用
Stream流的map使用 转换大写 List<String> list3 = Arrays.asList("zhangSan", "liSi", ...
- istio的sidecar原理学习
目的 从内嵌到应用的SDK模式转成istio servicemesh,再到最新提出来的proxyless可谓是发展太快了.刚开始我只是围绕着服务注册和发现是怎么转变来展开研究,但是发现这个话题有点大, ...
- 一个windows主题网站-
地址 地址 说明 选择适合自己的,下载,双击安装,就可使用了
- Android Linux vmstat 命令详解
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.这个命令是我查看Linux/Unix最 ...