【DevOps】Jpom&Spug

本文比较了Jenkins和Spug两个DevOps工具在便捷部署、权限控制、线上审核等方面的表现,Spug以其更轻量级和更好的用户体验胜出,尤其在权限管理和一键发布方面具有优势。
摘要由CSDN通过智能技术生成

背景

使用jenkins作为DevOps工具,在实际使用中发现了一个问题,如果环境是在开发、测试、预发,一键部署问题都不大,即便是崩了那就崩了,但是线上环境不小心点了一下发布事情就大了,这就必须有一些手段来达到控制的目的,比如线上发布要审核等。

目的

各种环境便捷部署,并且带有权限控制,对线上环境的部署做一些审核控制等

介绍

Jpom跟Spug都是开源的DevOps工具,都能实现便捷部署,并且各自都有自己的一套权限控制体系

对比

JpomSpug
开发语言Java+VuePython+React
便捷部署支持支持
权限控制支持支持
监控报警支持支持
docker可视化支持不支持
应用一键启停支持不支持
ssh支持支持
文件上传下载支持支持

结论是Spug对比Jpom会更轻一些,但是从另一个角度上看Jpom提供了更强大的在线运维的能力

Jpom

github:GitHub - dromara/Jpom: 🚀简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件

gitee:Jpom: 简而轻的低侵入式在线构建、自动部署、日常运维、项目运维监控软件

第一步:安装

readme里面讲清楚了,这边直接上最简洁的通过docker-compose的方式

直接就是第五种方式,但是安装过程中出现了问题,Jpom在构建中使用了buildkit,但是我部署的机器docker的版本并不支持,所以最终通过升级docker解决了,这里记一下出现问题的docker版本

  • docker:23.0.1
  • docker-compose:1.26.2

升级之后的版本

  • docker:24.0.7
  • docker-compose:2.6.1

第二步:操作

监控机器

直接点击快速安装

这一行curl在需要监控的目标机器上执行,在目标机器上会启动一个插件(应用)并且监听2123端口,用于跟监控端进行交互,其他的自行查看

监控应用

其他方式看到基本就明白如何使用了,但是Dsl需要思考一下,具体看Dsl的脚本

# scriptId 可以是项目路径下脚本文件名或者系统中的脚本模版ID
description: 测试
run:
  start:
#    scriptId: project.sh
    scriptId: 
    scriptArgs: start
    scriptEnv:
      "boot_active": test
  status:
#    scriptId: project.sh
    scriptId: 
    scriptArgs: status
  stop:
#    scriptId: project.sh
    scriptId: 
    scriptArgs: stop
#  restart:
##    scriptId: project.sh
#    scriptId: 
#    scriptArgs: restart
#    scriptEnv:
#      "boot_active": test
file:
# 备份文件保留个数
#  backupCount: 5
# 限制备份指定文件后缀(支持正则)
#  backupSuffix: [ '.jar','.html','^.+\.(?i)(txt)$' ]
# 项目文件备份路径
#  backupPath: /data/jpom_backup
config:
# 是否开启日志备份功能
#  autoBackToFile: true

脚本里面加入了启动、查状态、停止、重启,这几个操作,这就是监控应用里面可以操作的能力

监控docker

docker的守护进程需要开启2375(默认)端口监听

# 修改docker的service文件
vim /usr/lib/systemd/system/docker.service

在ExecStart处加入 -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

开启之后无脑添加即可,开启之后需要注意攻击,内网无所谓,外网添加ssl校验增加安全性

权限

权限的菜单通过工作空间的形式隔离,具体操作通过角色关联操作权限来区分

右边的节点菜单控制的是逻辑节点的详情的菜单权限

理解了他这种设计,操作起来还是很简单的

构建部署

具体示例可以直接看项目中的示例,这边提供一种构建加部署的思路

  1. 通过平台打包成一个docker镜像,然后上传到私有部署的镜像库里面
  2. 在通过应用里面的脚本把镜像拉到目标机执行部署

Spug

github:GitHub - openspug/spug: 开源运维平台:面向中小型企业设计的轻量级无Agent的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布部署、在线任务计划、配置中心、监控、报警等一系列功能。

gitee:spug: 开源运维平台:面向中小型企业设计的无 Agent的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布、任务计划、配置中心、监控、报警等一系列功能。

第一步:安装

没有任何痛点,按照官方文档直接安装即可

第二步:操作

监控机器

通过ssh的方式

监控其他

监控栏新增任务,Jpom的监控在Spug以这种方式都能满足

权限

权限最重要的就是角色的配置了,通过功能、发布、主机,这三个栏控制所有权限,并且spug控制了之后对应的按钮也会隐藏,体验比jpom强

构建部署

整个发布路径:新建应用->配置应用发布的环境(发布规则)->执行发布(可控权限)

在这里把应用跟发布环境(规则)配置完成,整个发布环境可以理解成打包机跟目标机,在打包机执行打包把应用包打出来,然后告诉Spug,Spug会把应用包部署到目标机器,然后自定义脚本把应用启动

每次需要发布的时候点新建发布即可,并且这个面板支持直接回滚

总结

这两款devops都试用了一下,对比下来Jpom会有一些门槛,Jpom设计了一些功能,通过这些功能来达到具体的目的(具体直接看操作介绍),但是刚接触是真的觉得很傻(至少我是这么觉得),而且Jpom对于权限在按钮层面只控制到了是否有权限,没有控制是否显示,这就导致你能看到一排按钮,但是每个按钮你点击就告诉你权限不足,所以就体验而言Spug更胜一筹。

回到最终目的,是为了带权限控制的DevOps,虽然Jpom使用Java二开的成本更低一些,但是Spug使用下来更舒服,功能层面Spug虽然简洁,但是也确实够用了,在我心里spug完胜。

  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Jpom是一款简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件。 项目主要功能及特点: 1、创建、修改、删除项目、Jar包管理 2、实时查看控制台日志、备份日志、删除日志、导出日志 3、cpu、ram 监控、导出堆栈信息、查看项目进程端口、服务器状态监控 4、多节点管理、多节点自动分发 5、实时监控项目状态异常自动报警 6、在线构建项目发布项目一键搞定 7、多用户管理,用户项目权限独立(上传、删除权限可控制),完善的操作日志 8、系统路径白名单模式,杜绝用户误操作系统文件 9、在线管理Nginx配置、ssl证书文件 10、Tomcat状态、文件、war包在线实时管理 特别提醒:在Windows服务器中可能有部分功能因为系统特性造成兼容性问题,建议在实际使用中充分测试。Linux目前兼容良好 Jpom更新日志: v2.5.1 新增功能 【Server】保存邮箱信息时候验证邮箱配置是否正确 【Server】Token 机制采用 jwt 【Server】git 构建新增进度日志输出 【Server】添加操作监控相关 api 和页面功能 【Server】完善 JWT token 过期自动续签功能 【Server】添加前端页面引导系统(使用 introJs) 【Server】访问 ip 限制,支持配置白名单和黑名单来控制 ip 访问权限 【Server】添加服务自启动脚本创建方案,下面贴一下 Server 端自启动方式: 解决BUG、优化功能 【Server】全局网络请求新增 loading 状态控制 【Server】获取构建日志关闭 loading 状态 【Agent】控制台日志支持定时清空,避免日志文件太大 【Server】在线升级状态判断修复 【Server】修复项目获取进程信息失败 【Server】项目文件管理中显示项目文件存放真实目录 【Server】项目文件管理中文件夹不存在时,loading不消失 【Server】文件管理列表不能正常加载二级以上的目录 【Server】添加监控判断用户是否配置报警联系方式 【Server】初始化安装不能自动登录 【Server】页面组件采用国际化采用 zh_cn 【Server】服务器中验证码无法加载 【Agent】解决控制台输出 Failed to check connection: java.net.ConnectException: Connection refused: connect,因为没有关闭对应的 jmx 【Agent】解决首页控制台 java 进程列表慢的问题(采用定时拉取并缓存) 【server】fix bug: 节点列表页面,展开某个节点之后点击操作按钮会出现新的一行无效数据 【server】fix bug: 节点列表页面,在没有安装节点的情况下,点击终端按钮会在控制台报错。点击这里查看对应 issue 【server】fix bug: 节点管理里面的 Nginx 管理,关闭服务的接口参数传递错了。点击这里查看对应 issue 【server】优化系统配置页面的样式,在小屏幕设备上会出现多个竖方向上的滚动条,甚至有时候会遮住底部的操作按钮 【server】ssh 终端命令交互优化(改优化取消之前版本快捷解压功能,删除命令检查) 【server】优化表格的排版和高度等样式,适配页面。
1. 什么是DevOps?它的目的是什么? DevOps是一种软件开发和运营的方法论,旨在通过自动化和协作来加速软件交付和部署过程,提高软件质量和可靠性,同时降低成本和风险。 2. 什么是CI/CD?它们的区别是什么? CI/CD是DevOps中的两个重要概念,CI(Continuous Integration)指持续集成,CD(Continuous Delivery/Deployment)指持续交付/部署。CI是指在代码提交到版本控制系统后,自动进行编译、测试和打包等操作,以确保代码的质量和稳定性。CD则是指将经过CI测试的代码自动部署到生产环境中,以实现快速、可靠的软件交付。 3. 你如何实现CI/CD? 实现CI/CD需要使用一系列工具和技术,包括版本控制系统、自动化构建工具、自动化测试工具、容器化技术、持续集成/交付/部署工具等。具体实现方式因公司和项目而异,但一般需要遵循一些最佳实践,如代码规范、自动化测试、持续集成、持续交付等。 4. 你如何处理CI/CD中的错误和故障? 处理CI/CD中的错误和故障需要遵循一些最佳实践,如记录错误日志、自动化告警、自动化回滚等。同时,需要建立一套完善的监控和报警系统,及时发现和解决问题,确保系统的稳定性和可靠性。 5. 你如何评估CI/CD的效果? 评估CI/CD的效果需要考虑多个指标,如软件交付速度、软件质量、部署频率、故障率、用户满意度等。可以通过监控和分析这些指标来评估CI/CD的效果,并不断优化和改进CI/CD流程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值