DevOps(三)

news2024/11/18 3:40:25

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 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"

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ | 运算符重载

目录 概念 写法 约定俗成 注意事项 概念 其实早在刚开始学习C的时候我们就已经接触到运算符重载了&#xff0c;只是我们当时还没意识到。 std::cout << "Hello World" << std::endl; 对于这一句代码的解释如下&#xff1a; cout其实是一个iostrea…

虚拟机 RHEL8 安装 MySQL 8.0.34

目录 安装步骤一、清除所有残留的旧MySQL二、安装MySQL 报错问题1. 提示未找到匹配的参数&#xff1a; mysql-community-server2. 公钥问题 安装步骤 一、清除所有残留的旧MySQL 1. 关闭MySQL [rootlocalhost /]# service mysqld stop Redirecting to /bin/systemctl stop …

pyspark 笔记 pyspark.sql.function col VS select

0 原始数据 假如我们有这样的一个数据 1 功能上相似 都类似于python的DataFrame中的 df[col_id]&#xff0c;对列取切片的操作 2 区别 使用col之后&#xff0c;可以进行计算&#xff1b;而原版select 则无法进行计算

微服务模式:业务服务模式

无论是单体应用还是微服务&#xff0c;构建企业应用的业务逻辑/服务在更多方面上都有相似之处而不是差异。在两种方法中&#xff0c;都包含服务、实体、仓库等类。然而&#xff0c;也会发现一些明显的区别。在本文中&#xff0c;我将试图以概念性的方式强调这些区别&#xff0c…

Vue2基础二、常用指令

零、文章目录 Vue2基础二、常用指令 1、Vue指令是什么 概念&#xff1a;指令&#xff08;Directives&#xff09;是 Vue 提供的带有 v- 前缀 的 特殊 标签属性。Vue 会根据不同的【指令】&#xff0c;针对标签实现不同的【功能】。**为啥要学&#xff1a;**提高程序员操作 D…

SpringBoot 和 Vue 参数类型不对应,导致method parameter is not present

org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter id for method parameter type String is not present 客户端&#xff1a; requestUserInfoById()const requestUserInfoById async (id?: string) > {} 服务器端&am…

【C++】C++11——包装器

文章目录 1. function包装器1.1 遇到的问题1.2 包装器的定义1.3 解决问题1.4 包装器的其他应用 2. bind2.1 bind的定义2.2 bind包装器绑定固定参数2.3 bind包装器调整传参顺序2.4 bind包装器的意义 1. function包装器 1.1 遇到的问题 我们首先来看一行代码&#xff1a; ret …

Kafka 入门到起飞系列 - 消费者组管理、位移管理

消费者组 - Consumer Group 上文我们已经讲过消费者组了&#xff0c;我们知道消费组的存在可以保证一个主题下一个分区的消息只会被组内一个消费者消费&#xff0c;从而避免了消息的重复消费 什么是消费组 - Consumer Group&#xff1f; 消费者组是Kafka 提供的可扩展且具有容…

Vue教程(二):数据代理和事件处理

1、数据代理 数据代理 通过obj2操作obj1的对象 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport"…

【图论】三种中心性 —— 特征向量、katz 和 PageRank

维基百科&#xff1a;在图论和网络分析中&#xff0c;中心性指标为图中相应网络位置的节点分配排名或数值。中心性这一概念最初起源于社交网络分析&#xff0c;因此很多衡量中心性的术语也反映了其社会学背景。 不同中心性指标对 “重要” 的衡量方式不同&#xff0c;因此适用于…

Android调用摄像头拍照从相册中选择图片

以下内容摘自郭霖《第一行代码》第三版 activity_main.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-a…

简单分享婚宴预订小程序怎么做

婚宴预订小程序需要具备一些功能&#xff0c;通过这些功能&#xff0c;新人可以更方便地选择婚宴场地、预订服务&#xff0c;并且更好地规划自己的婚礼。 1. 场地浏览与选择 婚宴预订小程序可以展示多个婚宴场地的照片和详细信息&#xff0c;包括容纳人数、场地设施、价格等。…

Flutter:flutter_local_notifications——消息推送的学习

前言 注&#xff1a; 刚开始学习&#xff0c;如果某些案例使用时遇到问题&#xff0c;可以自行百度、查看官方案例、官方github。 简介 Flutter Local Notifications是一个用于在Flutter应用程序中显示本地通知的插件。它提供了一个简单而强大的方法来在设备上发送通知&#…

PHP 3des加解密新旧方法可对接加密

一、旧3des加解密方法 <?php class Encrypt_3DES {//加密秘钥&#xff0c;private $_key;private $_iv;public function __construct($key, $iv){$this->_key $key;$this->_iv $iv;}/*** 对字符串进行3DES加密* param string 要加密的字符串* return mixed 加密成…

blender 用蒙版添加材质

一、添加材质常规方法 选择物体新建材质&#xff0c;shift a 新建图像纹理&#xff0c;此时会发现添加上的纹理会有接缝&#xff0c;shift a 新建映射 纹理坐标&#xff0c;纹理坐标选择生成&#xff0c;此时&#xff0c;之前的接缝便会消失&#xff1b; 如何快捷添加纹理坐…

【应用】Asible自动化运维工具的应用与常用命令

ansible自动化运维工具 一、ansible 的概述1. ansible 的概念2. ansible 的特性 二、ansible 的部署与命令1. ansible 的部署1.1 服务器ip地址设置1.2 ansible 服务器部署 2. ansible 命令行模块2.1 command 模块2.2 shell 模块2.3 cron 模块2.4 user 模块2.5 group 模块2.6 co…

TCP KeepAlive与HTTP Keep-Alive

TCP KeepAlive与HTTP Keep-Alive TCP KeepAliveHTTP Keep-AliveTCP服务器怎么检测客户端断开连接 TCP KeepAlive TCP连接建立之后&#xff0c;如果应用程序或者上层协议一直不发送数据&#xff0c;或者隔很长时间才发送一次数据&#xff0c;那么TCP需要判断是应用程序掉线了还…

postgresql|数据库|启动数据库时报错:FATAL: could not map anonymous shared memory的解决

前言&#xff1a; 一个很偶然的出现的问题&#xff0c;因为我需要验证备份文件是否正确&#xff0c;因此&#xff0c;我在一台已启动了一个数据库实例的服务器上&#xff0c;依据全备的数据库文件在启动一个实例&#xff0c;当然&#xff0c;在此之前&#xff0c;已经修改了备…

C语言习题练习

C语言习题练习 一、offsetof宏二、交换奇偶位三、原地移除数组总结 一、offsetof宏 首先我们要了解什么是offsetof宏&#xff1a; . 此具有函数形式的宏返回数据结构或联合类型中成员成员的偏移值&#xff08;以字节为单位&#xff09;。 . 返回的值是size_t类型的无符号整数…

DevOps(四)

CD(二) 1. CDStep 1 - 上传代码Step 2 - 下载代码Step 3 - 检查代码Step 4 - 编译代码Step 5 - 上传仓库Step 6 - 下载软件Step 7 - 制作镜像Step 8 - 上传镜像Step 9 - 部署服务2. 整体预览2.1 预览1. 修改代码2. 查看sonarqube检查结果3. 查看nexus仓库4. 查看harbor仓库5.…