DevOps(三)
CD(二)
- 1. 整体流程
- 2. 环境准备
- 1. jenkins安装
- 2. 编译安装git
- 3. docker安装
- 4. docker-compose安装
- 5. sonarqube安装
- 6. harbor安装
- 7. gitlab私服
- 8. maven安装
- 9. Nexus部署
- 10. K8s部署
- 3. 安装java及编写代码
- 3.1 安装java
- 3.2 安装IntelliJ IDEA
- 3.3 安装tomcat
- 3.4 安装maven
- 3.5 code
- 3.6 关于maven插件
- 3.7 code更新
DevOps八卦大阵

1. 整体流程

像较于前面用例,本次搭建CD的架构更为完善,更为详细
- 由于本次使用java编写代码,新增了maven及nexus仓库
- 使用K8s部署服务
有些模块可能在现实中用的不多或者并不使用,但是为了整体链路的完整,也一并进行部署。另外,由于本文以梳理流程为目的,所以流程中有大量软件使用docker部署,确实省时省力,但是生产环境中还需要斟酌。
本次用java部署web服务
2. 环境准备
服务器规划
linux服务器操作系统均为CentOS 7.9
[root@node-132 home]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
| 主机名 | IP 地址 | 所需组件 |
|---|---|---|
| node-128 | 192.168.17.128 | docker,kubectl,kubeadm,containerd,keepalived,haproxy |
| node-129 | 192.168.17.129 | docker,kubectl,kubeadm,containerd,keepalived,haproxy |
| node-130 | 192.168.17.130 | docker,kublet, kube-proxy,containerd |
| node-131 | 192.168.17.131 | docker,kublet, kube-proxy,containerd |
| node-132 | 192.168.17.132 | docker,gitlab-ce,jenkins,nexus,java11 |
| node-133 | 192.168.17.133 | docker,maven,java11 |
| node-134 | 192.168.17.133 | docker,harbor |
windows服务器操作系统为Windows 11
| 主机名 | IP 地址 | 所需组件 |
|---|---|---|
| node-157 | 192.168.2.157 | java,IntelliJ IDEA |
1. jenkins安装
由于笔者jenkins安装的版本较高(Jenkins 2.401.2),所以要求java版本至少是11或以上的,笔者这里重新装java
注意:这里不光是安装jenkins的服务器需要较高版本的java,节点机也需要较高版本,否则无法连接节点
参考 CHAPTER 1 Jenkins部署与基础配置 1.1.2 红帽系安装
注意:
需要安装jenkins插件
http Request,Nexus Artifact Uploader和Pipeline Utility Steps,后面有用
2. 编译安装git
参考 gitlab/gerrit 2.1 环境准备
3. docker安装
参考 CHAPTER 1 Docker入门 1.3.1 yum安装
4. docker-compose安装
参考 CHAPTER 12 Compose(一)12.2.2 二进制包
5. sonarqube安装
参考 CHAPTER 5 Jenkins & SonarQube
账号:admin
密码:yurq
6. harbor安装
参考 harbor(docker仓库)仓库部署
6bDg3XQ81Y3NDWJhtIVacMDyqeNzj3oO
7. gitlab私服
参考 CHAPTER 3 Jenkins SVN GItlab 3.2.1 搭建gitlab服务器(使用官方镜像搭建)
8. maven安装
参考 Maven
9. Nexus部署
参考 Nexus - 基于docker搭建Maven私服
10. K8s部署
参考 Kubernetes - kubeadm部署
https://www.cnblogs.com/Luquan/p/12273595.html
3. 安装java及编写代码
本节在Windows服务器执行,由于笔者不是java开发工程师,所以代码是借的。折腾了挺长时间终于把本地的服务搞定了
3.1 安装java
官网下载java安装包 Java Downloads | Oracle
jdk-11.0.19_windows-x64_bin.exe
配置环境变量
变量名:path,变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
变量名:JAVA_HOME,路径:JDK的安装目录,本机为:C:\Program Files\Java\jdk-11
变量名:CLASSPATH,变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
3.2 安装IntelliJ IDEA
参考 IntelliJ IDEA安装教程
3.3 安装tomcat
参考 中间件(二)- Tomcat
3.4 安装maven
参考 Maven
3.5 code
配置完成后,代码部分请跳至本文的
3.7 code更新,由于maven项目笔者打包完成后,war包无法启动(具体原因不明),所以笔者更换了代码
- 首先利用maven创建webapp,注意一定选择maven-archetype-webapp

- 将工程命名为MyJava,等工程创建好后,创建源码目录,默认是没有的,一般放在main下面,目录名叫java

- 在java目录中添加MyServlet.java代码
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class MyServlet extends HttpServlet {protected void doPods(HttpServletRequest request,HttpServletResponse response) throws javax.servlet.ServletException, IOException {doGet(request,response);}protected void doGet(HttpServletRequest request,HttpServletResponse response) throws javax.servlet.ServletException,java.io.IOException{//request.getRequestDispatcher("/index.jsp").forward(request,response);response.setContentType("text/html");response.getWriter().println("my first servlet code"相关文章:
DevOps(三)
CD(二) 1. 整体流程2. 环境准备1. jenkins安装2. 编译安装git3. docker安装4. docker-compose安装5. sonarqube安装6. harbor安装7. gitlab私服8. maven安装9. Nexus部署10. K8s部署3. 安装java及编写代码3.1 安装java3.2 安装IntelliJ IDEA3.3 安装tomcat3.4 安装maven3.5 c…...
AOP的妙用
一、改代码 自定义注解用于提示该代码已经在AOP中重构了 public interface ReviseToAop {// 用于记录修改状态String value() default ""; }使用注解(无意义,只是表名被修改) ReviseToAop("修改于:2023/7/30&quo…...
CAN转ETHERCAT网关将CAN 总线和 ETHERCAT 网络连接方法
由于好多现场会出现将CAN总线的设备接到EtherCAT网络中,由于协议的不相同,不能直接进行连接,现需一种能同时兼容CAN 总线和ETHERCAT网络的一种设备,由此捷米JM-ECT-CAN 是自主研发的一款 ETHERCAT 从站功能的通讯网关。该产品主要…...
【大数据趋势】7月30日 汇率,恒指期货的大数据趋势概率分析。
1. 数据源头之一 : 汇率变化 从程序模拟趋势来看,美元在持续弱势状态,周线上正在构建一个新的下跌趋势,而且正在反抽过程中,即将完成,如果没有外部干预,会顺势往下。从月线来看,高点逐步降低&a…...
mac使用mvn下载node-sass 会Binary download failed, trying source
m1 上使用nvm 以下node的版本可以直接下载(Binary download,而不是 trying source)而不用切换mac cpu架构 zhiwenwenzhiwenwendeMBP cockpit % nvm install 14.15.5 Downloading and installing node v14.15.5... Downloading https://node…...
【C++】开源:Muduo网络库配置与使用
😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍Muduo网络库配置与使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下…...
VCS ICO - Intelligent Coverage Optimization
ico是vcs提供的用于优化覆盖率的feature;一般用户通过dist solver bofore等约束了变量的随机概率,而ico会在用户约束的基础上,做一些自动“修正”,以此来优化随机激励,提高随机多样性,加速覆盖率收敛&#…...
【分布式系统】分布式系统的8个谬误
网络可靠 对于分布式系统来说,网络、计算、存储是三大基石,系统之间进行拆分隔离之后,那么必定存在网络通讯,而网络是最不可靠的。 不管是从硬件层面还是软件层面来说,网络是不可靠的。(断电、配置错误、ID…...
tinkerCAD案例:25. 量角器 - 测量角度
tinkerCAD案例:25. 量角器 - 测量角度 原文 Now we’re going to make a protractor! A Protractor is one of the most basic, but essential, tools for making measurements. It is, then, surprising that the modern protractor is barely over 200 years ol…...
Flutter 使用texture_rgba_renderer实现桌面端渲染视频
Flutter视频渲染系列 第一章 Android使用Texture渲染视频 第二章 Windows使用Texture渲染视频 第三章 Linux使用Texture渲染视频 第四章 全平台FFICustomPainter渲染视频 第五章 Windows使用Native窗口渲染视频 第六章 桌面端使用texture_rgba_renderer渲染视频(本…...
linux虚拟机开机后桌面显示CentOS-7.5-x86盘片文件,并且无法远程连接虚拟机?
在虚拟机启动后遇到了显示CentOS-7.5-x86光盘片文件的问题,并且无法远程连接到虚拟机,有几个可能的解决方法: 检查虚拟机设置:确保虚拟机的网络适配器已正确配置,并且虚拟机配置的网络选项是桥接模式或 NAT 模式&#…...
【Spring Boot 源码学习】走近 AutoConfigurationImportSelector
AutoConfigurationImportSelector 源码解析 引言主要内容1. ImportSelector 接口2. DeferredImportSelector 接口3. AutoConfigurationImportSelector 功能概述 总结 引言 上篇博文我们了解了 EnableAutoConfiguration 注解,其中真正实现自动配置功能的核心实现者 …...
系统学习Linux-MySQL数据库备份(四)
一、概述 数据库备份是指将数据库中的数据、表格、视图、存储过程、触发器等信息备份到另一个地方,一遍在数据库丢失或损坏时进行恢复,数据库备份是数据库管理中必不可少的一项工作,通过备份可以保护数据库中的数据和业务。 二、数据备份的…...
具身智能controller---RT-1(Robotics Transformer)(中---实验介绍)
6 实验 实验目的是验证以下几个问题: RT-1可以学习大规模指令数据,并且可以在新任务、对象和环境上实现zero-shot的泛化能力?训练好的模型可以进一步混合多种其他数据(比如仿真数据和来自其他机器人的数据)吗?多种方…...
无涯教程-jQuery - load( url, data, callback)方法函数
load(url,data,callback)方法从服务器加载数据,并将返回的HTML放入匹配的元素中。 load( url, [data], [callback] ) - 语法 [selector].load( url, [data], [callback] ) 这是此方法使用的所有参数的描述- url - 包含请求发送到…...
【Shell】Shell编程之免交互
免交互:不需要人为控制就可以完成的自动化操作 自动化运维 Shell脚本和免交互是一个概念,但是两种写法 here document 使用i/o重定向的方式将命令的列表提供给交互式的程序或者命令 是一种标准输入,只能接受正确的指令或命令&#x…...
从Vue2到Vue3【七】——Vue2中响应式原理的实现及其缺陷
系列文章目录 内容链接从Vue2到Vue3【零】Vue3简介从Vue2到Vue3【一】Composition API(第一章)从Vue2到Vue3【二】Composition API(第二章)从Vue2到Vue3【三】Composition API(第三章)从Vue2到Vue3【四】C…...
用C语言实现堆排序算法
1.设计思路 排序的思想将一个数组按递增的顺序进行排序,将数组的第一个位置空下(下标为0),因为会导致子节点和本身同一个结点(i和2i一致),每次堆排序在下标1的位置放上了最大值,然后…...
tauri在github上进行自动更新打包并发版过程,实战操作避坑
从网上找了很多很多的文章,结果还是入坑了,一个问题找了一天才解决: Error A public key has been found, but no private key. Make sure to set TAURI_PRIVATE_KEY environment variable. 596 ELIFECYCLE Command failed with exit code…...
css中flex后文本溢出的问题
原因: 为了给flex item提供一个合理的默认最小尺寸,flex将flex item的min-width 和 min-height属性设置为了auto flex item的默认设置为: min-width: auto 水平flex布局 min-height:auto 垂直flex布局 解决办法&…...
终极指南:3步告别黑苹果配置噩梦,OpCore Simplify让你轻松搞定OpenCore EFI
终极指南:3步告别黑苹果配置噩梦,OpCore Simplify让你轻松搞定OpenCore EFI 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还…...
避坑指南:微信小程序Painter 2.0海报插件常见问题与优化技巧
避坑指南:微信小程序Painter 2.0海报插件深度优化实战 最近在帮客户重构小程序海报生成功能时,我重新审视了Painter 2.0这个老牌插件。不得不说,经过多次迭代后,它的功能确实强大到令人惊喜——支持从基础文本绘制到复杂阴影效果&…...
MySQL 8.0隐藏技能:不用.frm文件,用Go语言工具+ALTER TABLE命令直接解析.ibd恢复表结构
MySQL 8.0数据恢复新思路:用Go语言逆向解析.ibd文件的技术实践 当数据库遭遇灾难性故障时,.frm文件的消失让MySQL 8.0的数据恢复变得更具挑战性。本文将带你深入InnoDB存储引擎的核心,探索一种不依赖传统.frm文件的全新恢复方案。 1. MySQL 8…...
5大理由选择Blueman:Linux蓝牙管理工具的最优解
5大理由选择Blueman:Linux蓝牙管理工具的最优解 【免费下载链接】blueman Blueman is a GTK Bluetooth Manager 项目地址: https://gitcode.com/gh_mirrors/bl/blueman Blueman作为基于GTK框架的Linux蓝牙管理工具,以其深度的桌面环境整合能力、完…...
从火星车到智能家电:聊聊那些藏在身边的RTOS(FreeRTOS、VxWorks、RT-Thread)
从火星车到智能家电:聊聊那些藏在身边的RTOS 当你清晨按下智能咖啡机的启动键,或是用手机远程调节空调温度时,可能不会想到这些设备内部运行着与NASA火星车同源的实时操作系统(RTOS)。这类专为即时响应设计的系统&…...
别急着重烧系统!卡在Starting Kernel时,先检查uboot的mmc分区表(以imx6ull为例)
嵌入式系统启动卡在Starting Kernel?先别急着重烧系统! 当你满怀期待地按下开发板电源键,串口终端却无情地定格在"Starting kernel..."这一行时,那种挫败感每个嵌入式开发者都深有体会。大多数人的第一反应是怀疑内核镜…...
从BGA封装到Xtacking架构:图解NAND堆叠技术如何影响SSD性能
从BGA封装到Xtacking架构:NAND堆叠技术如何重塑SSD性能格局 当一块企业级SSD的读写速度突破7GB/s时,工程师们发现传统的NAND封装技术正在成为性能提升的瓶颈。在PCIe 5.0时代,信号传输速率需要达到2400MT/s才能充分发挥带宽潜力,而…...
别再用subprocess了!Mojo原生FFI直连Python C API的5种安全模式,含CPython 3.11+PyPy兼容性矩阵表
第一章:Mojo 与 Python 混合编程案例 生产环境部署Mojo 作为新兴的系统级编程语言,原生兼容 Python 生态,支持在关键性能路径中无缝调用 Mojo 编译模块,同时复用 Python 的成熟工具链与部署基础设施。在生产环境中,典型…...
嵌入式开发中的静态代码分析工具实战指南
1. 嵌入式代码静态分析工具概述作为一名嵌入式开发工程师,我深知在资源受限的MCU环境中,代码质量直接决定了产品的稳定性和可靠性。传统的C语言编译器虽然能发现语法错误,但对代码设计缺陷和潜在风险往往无能为力。这正是静态代码分析工具的价…...
30分钟搞定OpenClaw:Qwen3-4B镜像云端体验与技能测试
30分钟搞定OpenClaw:Qwen3-4B镜像云端体验与技能测试 1. 为什么选择云端体验OpenClaw 上周我在本地尝试部署OpenClaw时,被各种环境依赖和配置问题折磨得够呛。正当我准备放弃时,偶然发现星图平台提供了预置OpenClaw和Qwen3-4B模型的完整镜像…...
