当前位置: 首页 > news >正文

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-128192.168.17.128docker,kubectl,kubeadm,containerd,keepalived,haproxy
node-129192.168.17.129docker,kubectl,kubeadm,containerd,keepalived,haproxy
node-130192.168.17.130docker,kublet, kube-proxy,containerd
node-131192.168.17.131docker,kublet, kube-proxy,containerd
node-132192.168.17.132docker,gitlab-ce,jenkins,nexus,java11
node-133192.168.17.133docker,maven,java11
node-134192.168.17.133docker,harbor

windows服务器操作系统为Windows 11

主机名IP 地址所需组件
node-157192.168.2.157java,IntelliJ IDEA

1. jenkins安装

由于笔者jenkins安装的版本较高(Jenkins 2.401.2),所以要求java版本至少是11或以上的,笔者这里重新装java

注意:这里不光是安装jenkins的服务器需要较高版本的java,节点机也需要较高版本,否则无法连接节点

参考 CHAPTER 1 Jenkins部署与基础配置 1.1.2 红帽系安装

注意:

需要安装jenkins插件http RequestNexus Artifact UploaderPipeline 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布局 解决办法&…...

restful接口设计规范[仅供参考]

1. 域名 应该尽量将API部署在专用域名之下。 https://api.example.com 如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下。 https://www.example.org/api/2. 版本(Versioning) 应该将API的版本号放入URL。 http://…...

Metabase 远程代码执行(CVE-2023-38646)

漏洞描述 Metabase是一款开源数据分析及可视化工具。它可允许用户连接至各种不同类型数据源,未经身份认证的攻击者可利用本漏洞在服务器上以运行 Metabase服务器的权限进行任意命令执行。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩…...

【TiDB理论知识 07】SQL执行流程

一 DML语句读写流程 1 DML语句读流程概要 用户发出SQL 被协议层接收 Protocal Layer 通过PD获取时间戳 parse模块 解析SQL,通过词法解析 与 语法解析 生成AST语法树 编译SQL Compile模块 ,区分点查 与 非点查,生成执行计划 发送给Executor,从TIKV获…...

微服务——服务异步通讯RabbitMQ

前置文章 消息队列——RabbitMQ基本概念容器化部署和简单工作模式程序_北岭山脚鼠鼠的博客-CSDN博客 消息队列——rabbitmq的不同工作模式_北岭山脚鼠鼠的博客-CSDN博客 消息队列——spring和springboot整合rabbitmq_北岭山脚鼠鼠的博客-CSDN博客 目录 Work queues 工作队列…...

事件冒泡、事件捕获和事件委托

原文合集地址如下,有需要的朋友可以关注 本文地址 合集地址 什么是事件冒泡、事件捕获和事件委托? 事件冒泡(Event Bubbling)、事件捕获(Event Capturing)和事件委托(Event Delegation&…...

WEB 典型安全功能说明

WEB 典型安全功能 认证Authentication 认证是指通过验证用户的身份来确认用户是否有权访问某个系统或资源。在Web安全中,认证是非常重要的一环,它可以防止未经授权的访问,保护用户的数据和系统的安全。 登录 登录是用户认证的常见方式之一…...

SQL编译优化原理

最近在团队的OLAP引擎上做了一些SQL编译优化的工作,整理到了语雀上,也顺便发在博客上了。SQL编译优化理论并不复杂,只需要掌握一些关系代数的基础就比较好理解;比较困难的在于reorder算法部分。 文章目录 基础概念关系代数等价 j…...

qt signal slots lambda

这里用到了qt的版本检测 连接 Combox的currentIndexChanged事件 emit来触发处理的事件 ,进行业务或逻辑处理 这样的写法是lambda表达式的写法,和c#中的 (obj)>{ //todo } 类同 [](int indx){ //todo } #if QT_VERSION > QT_VERSION_CHECK(5,7,0)c…...

Spring【声明式事务】

事务简介 把一组业务当成一个业务来做;要么都成功,要么都失败!事务在项目开发中,十分重要,涉及到数据一致性的问题,需要十分注意!确保完整性和一致性! 事务的ACID原则:…...

【雕爷学编程】MicroPython动手做(17)——掌控板之触摸引脚2

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…...

杭州信贷网站制作/设计网站免费素材

Win7之家(www.win7china.com):Win7系统优化:如何移动Win7我的文档保存位置如何把Win7用户文件夹移动到E盘?怎么把win7的用户文件夹移动到其他盘?如何把Win7在C盘的用户文件夹转移到其他分区?用户文件夹包含了各种用户数…...

wordpress中添加登陆页面/推广文章

用javascript 写个函数返回一个页面里共使用了多少var reg /]*>/gi;var html document.body.innerHTML;var map {};while(reg.exec(html)){ var key RegExp.$1.toLowerCase(); if(map[key] null){ map[key] 1; }else { map[key]; }}console.log(map);分别是哪些&#…...

城乡建设环保部网站/seo经理

问题描述: SharePoint 运行状况分析器提示: 中文:数据库正在兼容性范围内运行,建议进行升级。 英文:Database running in compatibility range and upgrade recommended 此时去管理中心---升级和迁移---查看数据库状态…...

阐述商业网站开发岗位需求分析/百度学术搜索

Android系统构架PAGE 1目 录TOC \o "1-3" \h \z \u 一、Android系统构架 1二、Linux内核层 2三、系统运行库层 3(一)系统库 3(二)Android运行时 4Android系统构架本次课程我们主要介绍Android的系统构架以及Linux内核层和系统运行库层的主要作用。一、Android系统构架…...

网站租用价格/外包公司排名

寻找根节点很容易让人联想到DisjointSet,但是DisjointSet只有合并操作, 所以询问离线倒着考虑,标记会一个一个消除,这时候就变成合并了。 因为询问和查询的时间以及标记生效的时间有关,记录下查询时间,在树…...

个人备案的网站做企业内容/宁波seo教学

提到开源数据库,人们首先想到的是MySQL,由于性能高、成本低、可靠性好,已经成为目前流行的开源数据库;但MySQL在企业级数据服务,特别是存储引擎和技术支持方面一直被DBA们诟病;即使被Sun收购后也未见在企业…...