k8s学习 — (DevOps实践)第十三章 DevOps 环境搭建
k8s学习 — (DevOps实践)第十三章 DevOps 环境搭建
- 学习资料
- 1 Gitlab
- 1.1 安装 Gitlab
- 1.2 页面配置
- 1.3 配置 Secret
- 1.4 为项目配置 Webhook
- 1.5 卸载
- 2 Harbor
- 2.1 安装 Harbor
- 2.1 配置 Secret
- 3 SonarQube
- 3.1 安装 SonarQube
- 3.2 生成服务 token
- 3.3 创建 Webhook 服务
- 3.4 创建项目
- 4 Jenkins
- 4.1 构建带 maven 环境的 jenkins 镜像
- 4.2 安装 Jenkins
- 4.3 安装插件
- 4.3.1 Build Authorization Token Root
- 4.3.2 Gitlab
- 4.3.3 SonarQube Scanner
- 4.3.4 Node and Label parameter
- 4.3.5 Kubernetes
- 4.3.6 Config File Provider
- 4.3.7 Git Parameter
- 4.4 创建 gitlab 访问凭证
- 5 案例:SpringBoot 项目 CICD
- 5.1 配置节点标签
- 5.2 创建流水线项目
- 5.3 Webhook 构建触发器
- 5.4 Pipeline 脚本配置
- 5.5 检查/创建相关凭证
- 5.5.1 Harbor 镜像仓库凭证
- 5.5.2 Gitlab 访问凭证
- 5.5.3 kubeconfig 文件 id
- 5.5.4 SonarQube 凭证
- 5.6 添加 SonarQube Webhook
- 5.7 项目构建
学习资料
学习视频:完整版Kubernetes(K8S)全套入门+微服务实战项目,带你一站式深入掌握K8S核心能力
学习资料:k8s配套资料
1 Gitlab
GitLab 是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基础上搭建起来的 Web 服务。
Gitlab 是被广泛使用的基于 git 的开源代码管理平台, 基于 Ruby on Rails 构建, 主要针对软件开发过程中产生的代码和文档进行管理, Gitlab 主要针对 group 和 project 两个维度进行代码和文档管理, 其中 group 是群组, project 是工程项目, 一个 group 可以管理多个project , 可以理解为一个群组中有多项软件开发任务, 而一个 project 中可能包含多个 branch, 意为每个项目中有多个分支, 分支间相互独立, 不同分支可以进行归并。
1.1 安装 Gitlab
# 下载安装包
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-15.9.1-ce.0.el7.x86_64.rpm# 安装
rpm -i gitlab-ce-15.9.1-ce.0.el7.x86_64.rpm# 编辑 /etc/gitlab/gitlab.rb 文件
# 修改 external_url 访问路径 http://<ip>:<port>
# 其他配置修改如下
gitlab_rails['time_zone'] = 'Asia/Shanghai'
puma['worker_processes'] = 2
sidekiq['max_concurrency'] = 8
postgresql['shared_buffers'] = "128MB"
postgresql['max_worker_processes'] = 4
prometheus_monitoring['enable'] = false# 更新配置并重启
gitlab-ctl reconfigure
gitlab-ctl restart
1.2 页面配置
# 查看默认密码
cat /etc/gitlab/initial_root_password
# 登录后修改默认密码 > 右上角头像 > Perferences > Password# 修改系统配置:点击左上角三横 > Admin
# Settings > General > Account and limit > 取消 Gravatar enabled > Save changes# 关闭用户注册功能
# Settings > General > Sign-up restrictions > 取消 Sign-up enabled > Save changes# 开启 webhook 外部访问
# Settings > Network > Outbound requests > Allow requests to the local network from web hooks and services 勾选# 设置语言为中文(全局)
# Settings > Preferences > Localization > Default language > 选择简体中文 > Save changes# 设置当前用户语言为中文
# 右上角用户头像 > Preferences > Localization > Language > 选择简体中文 > Save changes
1.3 配置 Secret
# 创建 gitlab 默认用户名密码 secret
echo root > ./username
echo wolfcode > password
kubectl create secret generic git-user-pass --from-file=./username --from-file=./password -n kube-devops
1.4 为项目配置 Webhook
进入项目点击侧边栏设置 > Webhooks 进入配置即可
URL:在 jenkins 创建 pipeline 项目后
触发来源:
- 推送事件:表示收到新的推送代码就会触发
- 标签推送事件:新标签推送才会触发
- 评论:根据评论决定触发
- 合并请求事件:创建、更新或合并请求触发
添加成功后,可以在下方点击测试按钮查看 jenkins 是否成功触发构建操作
1.5 卸载
# 停止服务
gitlab-ctl stop# 卸载 rpm 软件(注意安装的软件版本是 ce 还是 ee)
rpm -e gitlab-ce# 查看进程
ps -ef|grep gitlab
# 干掉第一个 runsvdir -P /opt/gitlab/service log 进程# 删除 gitlab 残余文件
find / -name *gitlab* | xargs rm -rf
find / -name gitlab | xargs rm -rf
2 Harbor
2.1 安装 Harbor
# 下载 harbor 安装包
# 解压后执行 install.sh 就行
2.1 配置 Secret
# 创建 harbor 访问账号密码(需要将下访问的配置信息改成你自己的)
kubectl create secret docker-registry harbor-secret --docker-server=192.168.113.122:8858 --docker-username=admin --docker-password=wolfcode -n kube-devops
3 SonarQube
3.1 安装 SonarQube
# 进入 /opt/k8s/devops
kubectl apply -f sonarqube/
3.2 生成服务 token
# 登录到 sonarqube 后台,点击头像 > MyAccount > Security > Generate Tokens > generate 生成 token 并复制
3.3 创建 Webhook 服务
# 点击顶部菜单栏的配置 > 配置(小三角) > 网络调用Name:wolfcode-jenkins
URL:http://<sonar ip>:<sonar port>/sonarqube-webhook/
3.4 创建项目
# SonarQube 顶部菜单栏 Projects > Create new project > 配置基础信息并保存 > Provide a token > Generate 生成 token > Continue# 分别选择 Java / Maven 后,按照脚本配置 Jenkinsfile 中的 sonar 配置信息
mvn sonar:sonar -Dsonar.projectKey=k8s-cicd-demo
4 Jenkins
4.1 构建带 maven 环境的 jenkins 镜像
# 构建带 maven 环境的 jenkins 镜像
docker build -t 192.168.113.122:8858/library/jenkins-maven:jdk-11 .# 登录 harbor
docker login -uadmin 192.168.113.122:8858# 推送镜像到 harbor
docker push 192.168.113.122:8858/library/jenkins-maven:jdk-11
4.2 安装 Jenkins
# 进入 jenkins 目录,安装 jenkins
kubectl apply -f manifests/# 查看是否运行成功
kubectl get po -n kube-devops# 查看 service 端口,通过浏览器访问
kubectl get svc -n kube-devops# 查看容器日志,获取默认密码
kubectl logs -f pod名称 -n kube-devops
4.3 安装插件
4.3.1 Build Authorization Token Root
构建授权 token
4.3.2 Gitlab
gitlab 配置插件
4.3.3 SonarQube Scanner
代码质量审查工具在 Dashboard > 系统管理 > Configure System 下面配置 SonarQube serversName:sonarqube # 注意这个名字要在 Jenkinsfile 中用到
Server URL:http://sonarqube:9000
Server authentication token:创建 credentials 配置为从 sonarqube 中得到的 token进入系统管理 > 全局工具配置 > SonarQube Scanner > Add SonarQube Scanner
Name:sonarqube-scanner
自动安装:取消勾选
SONAR_RUNNER_HOME:/usr/local/sonar-scanner-cli
4.3.4 Node and Label parameter
节点标签参数配置
4.3.5 Kubernetes
jenkins + k8s 环境配置进入 Dashboard > 系统管理 > 节点管理 > Configure Clouds 页面配置 k8s 集群
名称:kubernetes
点击 Kubernetes Cloud details 继续配置
Kubernetes 地址:如果 jenkins 是运行在 k8s 容器中,直接配置服务名即可https://kubernetes.default如果 jenkins 部署在外部,那么则不仅要配置外部访问 ip 以及 apiserver 的端口(6443),还需要配置服务证书
Jenkins 地址:如果部署在 k8s 集群内部:http://jenkins-service.kube-devops如果在外部:http://192.168.113.120:32479(换成你们自己的)配置完成后保存即可
4.3.6 Config File Provider
用于加载外部配置文件,如 Maven 的 settings.xml 或者 k8s 的 kubeconfig 等
4.3.7 Git Parameter
git 参数插件,在进行项目参数化构建时使用
4.4 创建 gitlab 访问凭证
系统管理 > 安全 > Manage Credentials > System > 全局凭据(unrestricted) > Add Credentials范围:全局
用户名:root
密码:wolfcode
ID:gitlab-user-pass
5 案例:SpringBoot 项目 CICD
5.1 配置节点标签
系统管理 > 节点管理 > 列表中 master 节点最右侧的齿轮按钮
修改标签的值与项目中 Jenkinsfile 中 agent > kubernetes > label 的值相匹配
5.2 创建流水线项目
在首页点击 Create a Job 创建一个流水线风格的项目
5.3 Webhook 构建触发器
----------- Jenkins 流水线项目 Webhook 配置 -----------
在 Jenkins 项目配置下找到构建触发器栏目勾选 Build when a change is pushed to GitLab. GitLab webhook URL: http://192.168.113.121:31216/project/k8s-cicd-demo上方的 URL 就是用于配置到 gitlab 项目 webhook 的地址启用 Gitlab 构建触发器:
Push Events:勾选,表示有任意推送到 git 仓库的操作都会触发构建
Opend Merge Request Events:勾选,表示有请求合并时触发构建点击高级 > Secret Token > Generate 按钮,生成 token保存以上配置----------- GitLab 项目 Webhook 配置 -----------
进入 GitLab 项目设置界面 > Webhooks将上方 Jenkins 中的 URL 配置到 URL 处将上方生成的 Secret Token 配置到 Secret 令牌按照需求勾选触发来源,这里我依然勾选 推送事件、合并请求事件取消 SSL 验证点击添加 webhook 按钮,添加后可以点击测试确认链接是否可以访问
5.4 Pipeline 脚本配置
流水线:选择定义为 Pipeline script from SCM 从远程仓库拉取 Jenkinsfile 配置
配置 SCM 为 Git
Repositories:Repository URL:仓库地址Credentials:仓库访问的账号密码Branches to build:选择拉取哪个分支下的代码脚本路径:Jenkinsfile 脚本文件名称以及所在路径
5.5 检查/创建相关凭证
5.5.1 Harbor 镜像仓库凭证
通过系统管理 > Manage Credentials > 凭据 > System > 全局凭证 > Add Credentials 添加 Username with password 类型凭证
填写好用户名密码后,需要注意凭证 id 要与 Jenkinsfile 中的 DOCKER_CREDENTIAL_ID 一致
5.5.2 Gitlab 访问凭证
通过系统管理 > Manage Credentials > 凭据 > System > 全局凭证 > Add Credentials 添加 Username with password 类型凭证
填写好用户名密码后,需要注意凭证 id 要与 Jenkinsfile 中的 GIT_CREDENTIAL_ID 一致
5.5.3 kubeconfig 文件 id
# 1. 事先安装 Config File Provider 插件
# 2. 进入系统管理 > Mapped files > Add a new Config 添加配置文件
# 2.1 Type 选择 Custom file 点击 next
# 2.2 在 k8s master 节点执行 cat ~/.kube/config 查看文件内容,并将所有内容复制
# 2.3 将复制的内容贴到 Config file 的 Content 中后点击 Submit 保存并提交
# 3. 复制保存后文件 id 到 Jenkinsfile 中的 KUBECONFIG_CREDENTIAL_ID 处
5.5.4 SonarQube 凭证
# 1. 进入 SonarQube 系统,点击右上角用户头像 > 我的账号 进入设置页面
# 2. 点击 安全 > 填写令牌名称 > 点击生成按钮生成 token > 复制生成后的 token
# 3. 进入 jenkins 添加凭证管理页面,添加 Secret Text 类型的凭证,将 token 贴入其中
# 4. 保证凭证 id 与 Jenkinsfile 文件中的 SONAR_CREDENTIAL_ID 一致
5.6 添加 SonarQube Webhook
# 1. 进入 SonarQube 管理页面,点击顶部菜单栏的配置 > 配置(小三角) > 网络调用
# 2. 点击右侧创建按钮创建新的 Webhook,并填写名称与地址
# 名称:jenkins
# 地址:http://jenkins访问ip:端口/sonarqube-webhook/
5.7 项目构建
方式一:在 Jenkins 管理后台,进入项目中点击立即构建进行项目构建方式二:在开发工具中修改代码,并将代码提交到远程仓库自动触发构建
相关文章:

k8s学习 — (DevOps实践)第十三章 DevOps 环境搭建
k8s学习 — (DevOps实践)第十三章 DevOps 环境搭建 学习资料1 Gitlab1.1 安装 Gitlab1.2 页面配置1.3 配置 Secret1.4 为项目配置 Webhook1.5 卸载 2 Harbor2.1 安装 Harbor2.1 配置 Secret 3 SonarQube3.1 安装 SonarQube3.2 生成服务 token3.3 创建 We…...

Java_Stream流
一、JDK8新特性(Stream流) 接下来学习一个全新的知识,叫做Stream流(也叫Stream API)。它是从JDK8以后才有的一个新特性,是专业用于对集合或者数组进行便捷操作的。有多方便呢?我们用一个案例体…...

delphi中,tstringlist使用方法示例
delphi中,tstringlist使用方法示例 在 Delphi 中,TStringList 是一个常用的字符串列表类,它提供了许多用于处理字符串列表的方法。以下是一个示例,演示了如何在 Delphi 中使用 TStringList 类: program TStringListEx…...

【飞凌 OK113i-C 全志T113-i开发板】视频编解码测试
前言 本文测试OK113i-S开发板-视频编解码的功能 OK113i-S开发板是支持视频的编解码的,下面是官方介绍的编解码功能 T113-i 是一种为多媒体解码平台设计的高级应用处理器。T113-i 集成了64位玄铁C906 RISC-V CPU, 双核 Cortex - A7 CPU 和 HiFi4 DSP&a…...

全部没有问题 (一.5)
java mooc练习 基础练习: 进阶练习: final 赋值一次 局部 必须赋值 抽象类 多态测试 package com.book;public class moocDraft1 {static int variable1;public void fatherMethod(moocDraft1 a){System.out.println(variable);}public static void…...

C++归并排序详解以及代码实现
1. 介绍 归并排序(Merge Sort)是一种采用分治法(Divide and Conquer)策略的排序算法。该算法首先将已有序的子序列合并,得到完全有序的序列。在归并排序中,合并操作是将两个有序表合并成一个有序表的过程。…...

springboot整合JPA 多表关联 :一对多 多对多
补充一下自定义SQL 这是连表查询,可以任意查出字符,用Map接收 Testvoid test3() {JPAQueryFactory jpaQueryFactory new JPAQueryFactory(em);QStudent student QStudent.student;QMessage message QMessage.message;//constructor(StuMesDto.class, …...

Python 数据分析 Matplotlib篇 plt.rcParams 字典(第5讲)
Python 数据分析 Matplotlib篇 plt.rcParams字典(第5讲) 🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ�…...

DeamonSet详解
目录 1.1 何为DaemonSet 1.2 DaemonSet 的 API 对象的定义 1.3 DaemonSet实践 1.3.1 创建 DaemonSet 对象 1.3.2 查看 DaemonSet 对象 1.3.3 DaemonSet 版本管理 1.3.4 DaemonSet 的容器镜像版本到 v2.2.0 1.1 何为DaemonSet 介绍DaemonSet我们先来思考一个问题&#x…...

TwIST算法MALTLAB主程序详解
TwIST算法MALTLAB主程序详解 关于TwIST算法的具体原理可以参考: 链接: https://ieeexplore.ieee.org/abstract/document/4358846 链接: https://blog.csdn.net/jbb0523/article/details/52193209 该算法的MATLAB源代码: 链接: http://www.lx.it.pt/~bi…...

Flutter 三: Dart
1 数据类型 数字(number) int double 字符串转换成 num int.parse(“1”) double.parse(“1”);double 四舍五入保留两位小数 toStringAsFixed(2) 返回值为stringdouble 直接舍弃小数点后几位的数据 可使用字符串截取的方式 字符串(string) 单引号 双引号 三引号三引号 可以输…...

redis基本用法学习(C#调用FreeRedis操作redis)
FreeRedis属于常用的基于.net的redis客户端,EasyCaching中也提供适配FreeRedis的包。根据参考文献4中的说法,FreeRedis和CsRedis算是近亲(都是GitHub中账号为2881099下的开源项目),因此其用法特别相似。FreeRedis的主要…...

Postman接口测试(超详细整理)
常用的接口测试工具主要有以下几种 Postman:简单方便的接口调试工具,便于分享和协作。具有接口调试,接口集管理,环境配置,参数化,断言,批量执行,录制接口,Mock Server, …...

【深入解析spring cloud gateway】12 gateway参数调优与分析
本节主要对网关主要的一些参数做一些解释说明,并用压测工具测试一下网关的接口,通过压测来验证参数配置是否合理 一、连接池参数 参数示例 spring:application:name: gatewaycloud:gateway:# http连接设置httpclient:# 全局的响应超时时间,…...

Java继承,父类没有无参构造方法时,子类必须要显式调用父类的构造方法
在Java中,如果一个类没有定义任何构造函数,那么编译器会默认为这个类提供一个无参的构造函数。 这个隐式的构造函数在继承的时候,子类会在自己的构造方法里面默认的调用这个构造函数。 但是,如果我们在父类中定义了一个有参构造…...

Ubuntu 20.04使用Livox Mid-360
参考文章: Ubuntu 20.04使用Livox mid 360 测试 FAST_LIO-CSDN博客 一:Livox mid 360驱动安装与测试 前言: Livox mid360需要使用Livox-SDK2,而非Livox-SDK,以及对应的livox_ros_driver2 。并需要修改FAST_LIO中部…...

C语言之冒泡排序
其实排序有很多的方法,比如:冒泡排序,插入排序,快速排序,归并排序,选择排序等。今天来讲一下最简单的排序:冒泡排序。这种排序的方法效率极其低下。 假设有一个整型数组: int arr[…...

在Linux上安装NVM(Node Version Manager)
在Linux系统上,使用NVM(Node Version Manager)是管理和切换Node.js版本的一种便捷方式。以下是在Linux上安装NVM的步骤: 1. 下载并安装NVM 使用curl或wget下载并运行NVM的安装脚本。选择一种方式执行以下命令之一: …...

常用两种Linux命令生成器
在Linux中,可以使用多种命令来生成随机密码。以下是其中两种常用的命令: 1.pwgen:这个命令可以生成随机、无意义的但容易发音的密码。生成的密码可以只包含小写字母、大小写混合或数字。大写字母和数字会以一种便于记忆的方式放置࿰…...

【OAuth2】授权框架的四种授权方式详解
🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《OAuth 2》。🎯🎯 …...

AI数字人不间断直播是什么?数字人直播带货如何搭建?
随着电商行业的崛起,数字人直播成为了最为热门的直播方式之一。数字人直播利用AI技术创建出的数字人进行直播,给观众带来了全新的视觉体验。 一、AI数字人无限播(数字人SaaS系统VX:zhibo175)是什么? AI数字…...

真菌基因组研究高分策略(二):比较基因组揭示寄主外生菌根真菌基因组的动态进化
在表征外生菌根(ECM)真菌的“共生工具包”方面的研究已经取得了重大进展,但宿主特异性如何被编码到ECM真菌基因组中仍知之甚少。2021年发表于《New Phytologist》期刊的文章对ECM真菌宿主特异性和通用性进行了比较基因组分析,重点…...

uni-app之HelloWorld实现
锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…...

CVE-2023-49898 Apache incubator-streampark 远程命令执行漏洞
项目介绍 Apache Flink 和 Apache Spark 被广泛用作下一代大数据流计算引擎。基于大量优秀经验结合最佳实践,我们将任务部署和运行时参数提取到配置文件中。这样,带有开箱即用连接器的易于使用的 RuntimeContext 将带来更轻松、更高效的任务开发体验。它…...

即将来临的2024年,汽车战场再起波澜?
我们来简要概况一下11月主流车企的销量表现: 根据数据显示,11月吉利集团总销量29.32万辆,同比增长28%。这在当月国内主流车企中综合实力凌厉,可谓表现得体。而与吉利直接竞争的比亚迪,尽管数据未公布,但我们…...

Python 爬虫之下载视频(二)
爬取某Y的视频链接和标题 文章目录 爬取某Y的视频链接和标题前言一、基本思路二、程序解析阶段三、程序处理阶段总结 前言 这篇内容就简单给大家写个如何从网页上爬取某B主 主页 页面上所有的视频链接和视频标题。 这篇是基础好好看,下篇会根据这篇的结果做一个批…...

智能优化算法应用:基于原子轨道搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于原子轨道搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于原子轨道搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.原子轨道搜索算法4.实验参数设定…...

[机器人-2]:开源MIT Min cheetah机械狗设计(二):机械结构设计
目录 1、四肢朝向的选择 2、电机布局形式的选择 3、电机的选型及测试(非常重要) 4、结构优化 5、尺寸效应 6、其他 1、四肢朝向的选择 机械狗的结构设计,第一个摆在我们面前的就说四肢的朝向问题,如下图,我们是…...

用友U8+CRM help2 任意文件读取漏洞复现
0x01 产品简介 用友U8 CRM客户关系管理系统是一款专业的企业级CRM软件,旨在帮助企业高效管理客户关系、提升销售业绩和提供优质的客户服务。 0x02 漏洞概述 用友 U8 CRM客户关系管理系统 help2接口处存在任意文件读取漏洞,攻击者通过漏洞可以获取到服…...

freeRTOS实时操作系统学习笔记
温馨提示:点击图片查看大图更清晰 —————————————————————————————↑↑↑上方资源下载后可获取xmind原文件。 1、freeRTOS移植和配置脑图 2、内核源码学习...