【云原生】DevOps 环境搭建

news2024/12/28 12:35:30

本文使用 Gitlab,Jenkins,Docker,K8s,Harbor 实现CICD环境搭建

一、Gitlab环境部署
说明:内存尽量给多点(2G以上),后面会安装一些软件,会占用内存
1.1、安装依赖软件

yum install curl openssh-server postfix

1.2、下载gitlab包并安装
1.2.1、安装方法1:

curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
yum install gitlab-ce

1.2.2、安装方法2:

下载地址:https://packages.gitlab.com/gitlab/gitlab-ce?filter=rpms&page=34
下载gitlab-ce-8.9.6-ce.0.el7.x86_64.rpm安装包到本地
上传gitlab-ce-8.9.6-ce.0.el7.x86_64.rpm软件包的到服务器,然后执行以下操作
安装软件包
[root@CentOS7 ~]# yum localinstall gitlab-ce-8.9.6-ce.0.el7.x86_64.rpm

1.3、配置并启动

gitlab-ctl reconfigure        #初始化

gitlab-ctl status             #查看状态

gitlab-ctl stop               #停止gitlab

gitlab-ctl start              #启动gitlab

1.4、初始化后检查

[root@CentOS7 ~]# gitlab-ctl status           #出现以下信息说明正确
run: gitlab-workhorse: (pid 2213) 68s; run: log: (pid 2058) 110s
run: logrotate: (pid 2077) 102s; run: log: (pid 2076) 102s
run: nginx: (pid 2064) 108s; run: log: (pid 2063) 108s
run: postgresql: (pid 1933) 130s; run: log: (pid 1932) 130s
run: redis: (pid 1850) 136s; run: log: (pid 1849) 136s
run: sidekiq: (pid 2048) 112s; run: log: (pid 2047) 112s
run: unicorn: (pid 2239) 55s; run: log: (pid 2015) 114s

1.5、网页登陆配置gitlab
在浏览器输入当前服务器的ip地址即可打开网页
1.5.1、设置初始登陆的密码:
在这里插入图片描述
1.5.2、登陆gitlab(默认用户:root 密码:自定义)
在这里插入图片描述
1.5.3、登陆后的界面如下:
在这里插入图片描述
二、Jenkins环境部署
2.1、下载存储库

  sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
  sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io-2023.key

2.2、安装jdk及jenkins

  yum install fontconfig tzdata-java java-17-openjdk
  yum install jenkins

2.3、启动jenkins

systemctl status jenkins

2.4、启动完成后安装必要插件

Git、Git Parameter、GitLab、Localization Support、Localization: Chinese (Simplified)、Pipeline、Publish Over SSH、SonarQube Scanner、

3、安装Docker

[root@localhost ~]# cat install-docker.sh 
#! /bin/bash
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce-18.06.2.ce-3.el7
设置docker的加速镜像
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

3.1、检查是否安装成功

[root@gitlab-jenkins ~]# docker info
Containers: 4
 Running: 0
 Paused: 0
 Stopped: 4
Images: 253
Server Version: 18.06.2-ce
Storage Driver: overlay2
 Backing Filesystem: xfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 468a545b9edcd5932818eb9de8e72413e616e86e
runc version: 69663f0bd4b60df09991c08812a60108003fa340
init version: fec3683
Security Options:
 seccomp
  Profile: default
Kernel Version: 3.10.0-957.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 8.623GiB
Name: gitlab-jenkins
ID: JHXP:OQFK:7F7P:LJMR:M723:PUIO:ZGDA:7MEK:L7RS:6SLT:USI6:IUSV
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 harbor.hcloud.com:81
 192.168.122.150
 8.219.115.180
 127.0.0.0/8
Registry Mirrors:
 https://kgdsiwq8.mirror.aliyuncs.com/
Live Restore Enabled: false

4、安装k8s集群见如下文档
k8s安装文档
5、安装Harnor仓库见如下文档
Harbor仓库安装
6、配置Jenkins Pipeline

pipeline {
    agent any
	environment {
        image_name = "192.168.122.150/per-test/auth-service:${date}"
        server_name = "per-auth-service"
        namespace = "per"
     }
    stages {
        stage('pull code') {
            steps {
              checkout([$class: 'GitSCM', 
              branches: [[name: "${params.TAG}"]], 
              extensions: [], 
              userRemoteConfigs: [[credentialsId: 'test', 
              url: 'https://codeup.aliyun.com/63ee8eeba823fsf32dffwe/user-auth.git']]])
                updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success')
                   script{
                       env.BUILD_TASKS = env.STAGE_NAME + "√..." + env.TAB_STR
                   }
            }
        }
        stage('Code Build'){ 
	        steps {
                retry(2) { sh "/opt/maven/bin/mvn  clean package -U -Dmaven.test.skip=true" }
			    updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success')
                   script{
                       env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR
                }
             }  
         }
        stage('Docker Build'){ 
	        steps {
                retry(2) { 
sh '''    # 以下参数根据实际情况修改即可
HOSTS_LIST=""
APOLLO_APP_ID="per-auth-service"
APOLLO_KEY=""
APOLLO_META="http://192.168.122.229:8080"
APOLLO_CLUSTER="test"
SPRING_PROFILES="test_docker"
LINUX_TIME_ZONE="America/Lima"
JVM_TIME_ZONE="GMT-5"
JAR_FILE="auth-service-1.0.0-SNAPSHOT.jar"
cd ./auth-service
docker build  --build-arg APOLLO_APP_ID="${APOLLO_APP_ID}" --build-arg APOLLO_KEY="${APOLLO_KEY}" --build-arg APOLLO_META="${APOLLO_META}" --build-arg APOLLO_CLUSTER="${APOLLO_CLUSTER}" --build-arg SPRING_PROFILES="${SPRING_PROFILES}" --build-arg LINUX_TIME_ZONE="${LINUX_TIME_ZONE}" --build-arg JAR_FILE="${JAR_FILE}" --build-arg JVM_TIME_ZONE="${JVM_TIME_ZONE}" -t "${image_name}"  .
docker login -uadmin -pHarbor12345 192.168.122.150
docker push ${image_name} && docker rmi ${image_name}
''' 
    }
			    updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success')
                   script{
                       env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR
                }
             }  
         }
        stage('Application Deploy'){ 
	        steps {
                retry(2) { sh 'kubectl --kubeconfig /opt/kubernetes/config set image -n ${namespace} deploy/${server_name} ${server_name}=${image_name}' }
                //retry(2) { echo 'test' }
			    updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success')
                   script{
                       env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR
                }
             }  
         }

    }
}

6.1、验证是否可以执行成功
在这里插入图片描述
6.2、k8s查看pod是否正常

[root@kubernetes-master ~]# kubectl get pod -n hc-per
NAME                                  READY   STATUS    RESTARTS      AGE
per-app-service-689756cb69-lcx9x      1/1     Running   0             10m

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

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

相关文章

MySQL作业1

目录 一.创建一张表,包含以下所有数据类型 建表:​编辑 二.使用以下六种约束 1.非空约束 2.唯一约束 3.主键约束 4.外键约束 5.检查约束 6.默认值约束 一.创建一张表,包含以下所有数据类型 Text 类型: Number 类型&#…

java框架-Springboot3-web开发

文章目录 自动配置默认效果WebMvcAutoConfigurationWebMvcConfigurer接口静态资源访问首页Favicon缓存 自定义静态资源路径1、配置方式2、代码方式 路径匹配规则内容协商默认支持json配置支持xml内容协商原理自定义支持ymal 模板引擎模板引擎Thymeleaf整合基础语法遍历判断属性…

网络爬虫——HTTP和HTTPS的请求与响应原理

目录 一、HTTP的请求与响应 二、浏览器发送HTTP请求的过程 三、HTTP请求方法 四、查看网页请求 五、常用的请求报头 六、服务端HTTP响应 七、常用的响应报头 八、Cookie 和 Session 九、响应状态码 十、网页的两种加载方法 十一、认识网页源码的构成 十二、爬虫协议…

IOTE 2023盛况回顾,美格智能聚连接之力促数字新生长

9月20~22日,IOTE国际物联网展深圳站在深圳国际会展中心正式召开。本届展会以“IoT构建数字经济底座”为主题,聚焦物联网技术助推数字经济发展的核心动力。美格智能携前沿技术成果亮相展会,与参展观众深入交流。 展会上,美格智能带…

Docker - 使用 Dockerfile 封装已有的 Docker Image

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/133170855 Dockerfile 是用来构建 Docker 镜像的文本文件,包含了一系列的指令和说明,用于描述如何从一个基础镜像开始&…

2023华为杯数学建模D题——碳排放路径优化基于指数分解法的LMDI 模型

LMDI 模型是基于指数分解法(IDA) 发展而成的一种因素分解法。LMDI模型在 Kaya 拓展式的基础上, 利用对数平均法对影响因素进行分析。 综合比较其他的指数分解方法, LMDI 分解法有着可完全分解因子、 无残差项等优势。根据对 Kaya …

Mysql数据库管理用户

Mysql数据库管理用户 一、管理用户1.1、用户创建1.2、 查看用户信息1.3 、重命名用户1.4、 删除用户1.5、 修改当前登录用户密码1.6、修改其他用户密码1.7、 忘记密码的解决办法 二、数据库用户授权2.1、 权限的授予2.2、 查看权限2.3、 撤销用户权限 一、管理用户 1.1、用户创…

搭建自己的搜索引擎之一

一、前言 关于搜索引擎自己接触的还算是比较多的,先简单回忆一下以前做过的事情,以前工作没有什么文档沉淀下来很多事情几乎都快忘差不多了,挺遗憾的。 1、10几年前在东奇软件做企业网站时玩过Lucene,当时中文分词还很弱&#xf…

ant design Pro中 initialState的使用方法

前言: initialState可以实现全局数据共享 基本使用: 在 umi 的运行时配置 src/app.tsx 中添加运行时配置 getInitialState ,该配置是一个 async 的 function,示例如下: export async function getInitialState() {…

Crazy Excel:Excel中的泥石流

Crazy Excel又名:疯狂Excel。是一款PC端的Excel软件工具,该软件支持windows, mac os等主流操作系统。 正如其名,作者在设计之初就加入了一些疯狂的设计,目的是创作出更加好用有效的excel工具。 不管是专业还是小白,…

【校招VIP】产品逻辑考察之优先级

考点介绍: 如何定义需求的优先级是考察产品经理能力的方法之一。 定义产品需求的优先级是非常关键的,不然团队会不知道各项事务的轻重缓急,资源和精力都无法集中在最重要的目标上。 产品逻辑考察之优先级-相关题目及解析内容可点击文章末尾链…

TSINGSEE视频AI智能分析技术:水泥厂安全生产智能监管解决方案

一、方案背景 随着人工智能技术的快速发展以及视频监控系统在全国范围内的迅速推进,基于AI视频智能分析技术的智能视频监控与智慧监管系统,也已经成为当前行业的发展趋势。在工业制造与工业生产领域,工厂对设备的巡检管理、维护维修、资产管…

Spring Cloud Gateway快速入门(四)——gateway最最重要的功能!Gateway如何实现的服务匹配

文章目录 前言为什么要使用gateway进行服务的分配集中化的路由管理:动态路由的支持:请求过滤和处理:高性能和高可靠性: 1. 介绍2. 服务匹配的概念2.1 路由规则2.1.1 Predicate(断言)2.1.2 Filter&#xff0…

GC8837国产驱动芯片,可以替代TI的DRV8837C,具有 PWM(IN/IN)输入接口, 与行业标准器件兼容,并具有过温保护功能。

GC8837 是一款 12V 直流电机驱动芯片, 为摄像机、消费类产品、玩具和其他低压或 者电池供电的运动控制类应用提供了集成的 电机驱动解决方案。芯片一般用了驱动一个 直流电机或者使用两颗来驱动步进电机。可以工作在 0~12V 的电源电压 上,能提供高达 1.5…

OpenCV之油画特效

源码: # 读取图片 img cv2.imread("d:/img.jpg", 1) height, width, channels img.shape# 灰度图 gray_img cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 将图像分为8x8的多个小块,并统计小块每个像素的灰度值 # 划分灰度等级,例如…

手写实现简易Spring框架

该文章记录的是自己实现简易Spring框架的记录,简化了源码中的大量操作,没有实现三级缓存的机制。 其中将会对Component,ComponentScan,Scope,Autowired注解。BeanDefinition类以及ApplicationContext、BeanPostProcess…

C++中的 throw详解

在《C++异常处理》一节中,我们讲到了 C++ 异常处理的流程,具体为: 抛出(Throw)--> 检测(Try) --> 捕获(Catch) 异常必须显式地抛出,才能被检测和捕获到;如果没有显式的抛出,即使有异常也检测不到。在 C++ 中,我们使用 throw 关键字来显式地抛出异常,它的用…

【GAMES103】基于物理的计算机动画入门(1)前置的基础数学知识

GAMES103: 基于物理的计算机动画入门 链接:GAMES103 1. 坐标系的划分 在游戏引擎中分为右手和左手坐标系,区分的依据是什么? 上图可以看到如果是左手坐标系,那么所有的物体都在屏幕后面,意味着x,y&#x…

【Linux 之二】Ubuntu下开发环境的搭建(NFS \ SSH \ FTP \ Smba \ ...)

目前正在进行Linux相关项目的开发,而我的Linux开发是在Ubuntu(版本20.04)下进行的,为此需要搭建很多Linux相关的开发环境,方便工作的进行。这里主要是对各种开发环境的搭建做一个总结记录,方便后面查阅&…

彻底解决win11系统0x80070032

经过各种尝试,终于找到原因。第一个是电脑加密软件,第二个是需要的部分功能没有开启,第三个BIOS设置。个人觉得第三个不重要。 解决方法 笔记本型号 笔记本型号是Thinkpad T14 gen2。进入BIOS的按键是按住Enter键。 1、关闭山丽防水墙服务…