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 项目后
触发来源:

  1. 推送事件:表示收到新的推送代码就会触发
  2. 标签推送事件:新标签推送才会触发
  3. 评论:根据评论决定触发
  4. 合并请求事件:创建、更新或合并请求触发

添加成功后,可以在下方点击测试按钮查看 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 管理后台,进入项目中点击立即构建进行项目构建方式二:在开发工具中修改代码,并将代码提交到远程仓库自动触发构建

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

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

相关文章

电脑打字学习_寒假就这样做!即不让孩子烦,还能让他有进步,开学就能迅速进入学习状态!...

部编本下册教材寒假预习可点击查看&#xff1a;六年级 五年级 四年级 三年级 二年级 一年级转眼间&#xff0c;一学期的学习又结束了&#xff0c;寒假模式正式开启。在这一个多月的寒假期间&#xff0c;孩子离开了学习&#xff0c;摆脱了老师的教育&#xff0c;如果家长再…

sap 供应商表_SAP系统玩阴的?

SAP系统玩阴的&#xff1f;近日和项目上的ABAP开发顾问一起弄一个自开发的报表。其中某个栏位的取值需要从批次主数据里抓取到供应商代码&#xff0c;然后根据供应商代码取到供应商名称等。为此笔者需要备功能说明书&#xff0c;在说明书里笔者需要将具体取值逻辑写清楚。要取到…

Java设计模式:单例模式

设计模式&#xff08;Design Pattern&#xff09;&#xff1a;是一套被反复使用&#xff0c;多数人知晓的&#xff0c;经过分类编目的&#xff0c;代码设计经验的总结。 目的&#xff1a;使用设计模式是为了可重用性代码&#xff0c;让代码更容易被他人理解&#xff0c;保证代…

滤波器的优点_声光可调谐滤波器

目前声光可调谐滤波器主要应用于光通信领域。它具有调谐速度快&#xff0c;可调谐范围宽、插入损耗低和通道驱动功率低等优点&#xff0c;并且可以实现多波长同时选择&#xff0c;因此在未来的波分复用网络中极有应用潜力。此外&#xff0c;声光可调谐滤波器还常用于半导体激光…

想学习大数据的同学一定要学习Java吗

一、学习大数据&#xff0c;一定要学习java吗? 首先&#xff0c;大家要清楚一点&#xff0c;学习Java的目的是什么&#xff0c;Java它本身是一门计算机编程语言&#xff0c;而进入大数据的学习&#xff0c;无论你有何基础&#xff0c;是零基础还是有过相关的学习经验&#xf…

qt多线程服务器_常见网络服务器并发模型

点击蓝字 关注我们近些年&#xff0c;随着互联网的大发展&#xff0c;高并发服务器技术也快速进步&#xff0c;从简单的循环服务器模型处理少量网络并发请求&#xff0c;演进到解决C10K&#xff0c;C10M问题的高并发服务器模型。本文主要以TCP为例&#xff0c;总结了几种常见的…

如何在vb.net中取得两时间的毫秒差_科技品牌软文营销如何写出一篇爆文?

随着互联网的发展&#xff0c;尤其是移动互联网的发展&#xff0c;让营销方式从传统的线下电视报纸广告逐渐转移到线上的软文营销。软文营销因为其快捷&#xff0c;方便&#xff0c;性价比高的特点受到了很多品牌的追捧。文章是软文营销的前提&#xff0c;如何写好一篇好的文章…

Java开发领域的大牛有哪些

Java开发领域的大牛有哪些 1、James Gosling 在他12岁的时候&#xff0c;他已能设计电子游戏机&#xff0c;帮忙邻居修理收割机。大学时期在天文系担任程式开发工读生&#xff0c;1977年获得了加拿大卡尔加里大学计算机科学学士学位&#xff0c;1983年获得了美国卡内基梅隆大学…

共阴极数码管编码表_数码管循环点亮的PLC控制——基本逻辑指令的应用

数码管循环点亮的PLC控制&#xff0c;我们运用日本三菱FX2N-48MR-001(FX2N-48MR-001是日本三菱公司的可编程控制器(PLC),继电器输出及输入24点,输出24点.FX2N是FX系列中功能最强、速度最高的微型PLC&#xff0c;内置用户存储器8Kb&#xff0c;可扩展到16K步&#xff0c;最大可扩…

高效Java第六条消除过期的对象引用无意识的对象保持

问题的引出 这段程序有一个“内存泄露”&#xff0c;随着GC活动的增加&#xff0c;或者由于内存占用的不断增加&#xff0c;程序性能降低会逐渐表现出来。在极端的情况下&#xff0c;这种内存泄露会导致磁盘交换&#xff0c;甚至导致程序失败(OutOfMemoryError)&#xff0c;但是…

gentos 执行sh文件_linux定时自动清理日志文件

现有一个应用系统&#xff0c;应用日志记录的内容很多&#xff0c;经常造成存储空间不够&#xff0c;需要手工去删除早期的日志文件来释放空间。应用的日志文件命名如下&#xff0c;固定前后缀加上日期和小时&#xff1a;为了避免手工删除日志&#xff0c;考虑通过写shell脚本来…

java编程思想泛型对混入的详细探讨

混入的概念 把多个类的能力混合在一起产生一个能代表所有混入类的类型的类。 the fundamental concept is that of mixing in capabilities from multiple classes in order to produce a resulting class that represents all the types of the mixins. 混入就是把存在的多…

linux rm 命令删除文件恢复_linux文件处理命令之rm常用方法介绍

命令名称&#xff1a;rm命令英文原意&#xff1a;remove命令所在路径&#xff1a;/bin/rm执行权限&#xff1a;所有用户语法&#xff1a;rm -r [文件或目录] -r 删除目录功能描述&#xff1a;删除文件mv是删除文件的命令,使用时可以指定文件(包括觉得路径/相对路径)的存放位置1…

python中math模块函数_Python常用的一些内建函数和math模块函数

一&#xff1a;Python内建函数 1 #abs取绝对值 2 num -10 3 print(abs(num))4 5 #max 求最大值 6 print(max(6, 9, 2, 12, 8))7 8 #min求最小值 9 print(min(-1, 2, 5, 0, 7))10 11 print(min([1, 3, 7, 0, 2]))12 13 #round 计算一个数值的四舍五入的 14 15 pi 3.14 16 prin…

大家对Java的一些误解

1. System.exit(0)会跳过finally块的执行 System.setSecurityManager(new SecurityManager() { Override public void checkExit(int status) { throw new ThreadDeath(); } }); try { System.exit(0); } finally { System.out.println("In the finally block"); } 这…

python用turtle画皮卡丘_用Python的turtle作画(2)——皮卡丘

from turtle import * # 绘制皮卡丘头部 # 画脸 def face(x, y): begin_fill() penup() # 将海龟移动到指定的坐标 goto(x, y) pendown() # 设置海龟的方向 setheading(40) circle(-150, 69) fillcolor("#FBD624") # 将海龟移动到指定的坐标 penup() goto(53.14, 113…

Java 即将迎来转折点?

嵌入式 Java 我并没有看到这个领域有什么变化。Oracle 完全放弃了在该领域的开发&#xff0c;已经不再提供支持非常流行的 ARM 架构的嵌入式应用程序的二进制文件了。 但是&#xff0c;我预测今年嵌入式应用程序中的 Java 应用将会增长。主要原因有三个&#xff1a; Java ME…

html调用接口_Spring 自调用事务失效,你是怎么解决的?

前言" 相信大家都遇到一种事务失效场景&#xff0c;那就是 Spring 自调用&#xff0c;就是在 Service 方法内&#xff0c;调用另一个加 Transactional 注解的方法&#xff0c;发现事务失效&#xff0c;这时候你是怎么解决的呢&#xff1f; "1 事情回顾那是一个我忘了…

Java中AJAX工作原理是什么

AJAX 指异步JavaScript 及XML(Asynchronous JavaScript And XML)。 传统的Web应用允许用户填写表单(form)&#xff0c;当提交表单时就向Web服务器发送一个请求。服务器接收并处理传来的表单&#xff0c;然后返回一个新的网页。这个做法浪费了许多带宽&#xff0c;因为在前后两个…

unity vscode没有智能提示_GAMES101课程环境搭建(Win10+VSCode)

最近B站上看到一个不错的图形学教程&#xff0c;复习下图形学知识挺好的。教程地址&#xff1a;GAMES101-现代计算机图形学入门-闫令琪_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili课程主页&#xff1a;GAMES101: 现代计算机图形学入门作业地址&#xff1a;往期作业汇总帖 - 计算机图…