Jenkins的Agent服务器环境配置

简介: Jenkins节点服务器用于编译Maven、Node、Ant项目,支持Docker镜像构建、CCE部署及kubectl操作。需离线安装Docker、kubectl、CCE客户端,并配置Helm、docker-buildx等工具,确保与CCE集群安全连接,兼容旧版SVN协议。

Jenkins节点服务器配置
作为Jenkins的节点,需要承担以下任务。
编译系统:

使用Maven打包编译后台项目(直接解压Maven即可)

使用Node打包编译Vue项目(直接解压Node即可)

使用Docker制作镜像、推送CCE

使用CCE客户端登录CCE

使用kubectl更新远程CCE上的deployment

编译本系统之外其他项目:

使用Ant打包编译移动端等传统非maven项目(直接解压Ant即可)

安装CCE客户端
从CCE页面(镜像管理-Linux客户端上传)得到CCE客户端的下载链接,例如:x86_64版客户端
将该文件上传到服务器上。
在服务器上创建$HOME/.kube文件夹(即/root/.kube文件夹)。
在服务器上配置hosts映射(在/etc/hosts文件中加入192.168.xxx.xxx cce.test.com)。

在服务器上执行CCE的初始化命令:
填写 cce的地址(即cce.test.com)等信息。

登录验证:

退出登录:

离线安装Docker
下载安装
从docker官网(或者国内镜像站)下载对应linux版本的安装包,例如docker-27.0.3.tgz。
将安装包上传到服务器,解压:
解压出来的文件的所有者可能不是root,修改为root用户:
将解压的文件移动到/usr/bin下:
也可以放到/usr/local/bin下,系统便不会控制docker的更新。但是docker.service中默认配置的docker启动命令在/usr/bin下,如果移动到了/usr/local/bin下,则需要调整docker.service文件中的启动命令路径。
启动测试:

配置成系统服务
将docker添加到systemd:
编辑文件/usr/lib/systemd/system/docker.service。
文件内容参考:github的docker-ce官方文档
如果前面将docker命令复制到了/usr/local/bin而不是/usr/bin下,下面的ExecStart中的命令路径也需要对应进行调整
为docker.service添加执行权限:

配置docker.socket
编辑文件/usr/lib/systemd/system/docker.socket。
文件内容参考:github的docker-ce官方文档

配置docker
创建docker组:
编辑daemon.json配置文件:
文件:/etc/docker/daemon.json
重载配置:

启动docker并设置开机自启
启动docker:
设置开机自启:
检验:

配置命令自动补全
从docker的github官方仓库获取命令补全的文件:docker
将该文件放到/usr/share/bash-completion/completions,启用该文件:

安装docker-compose(非必须)
Docker-Compose的版本需要和Docker引擎版本对应,可以参照官网上的对应关系。
安装Compose:

卸载Compose:直接删除 usr/local/bin/docker-compose文件即可

安装docker-buildx(非必须)
docker build已经被标记为过时,可以使用docker buildx build进行替换。
docker build 只能编译同Linux内核的镜像,在x86_64内核的Linux上就只能编译linux/amd64内核镜像,在arm64内核的linux上只能编译linux/arm64内核镜像。如果想要跨平台编译,就需要使用docker buildx build。

如果安装的是Docker桌面版,则自带了docker-buildx。如果是linux离线安装的docker时,需要单独安装docker-buildx插件。
从github docker-buildx下载对应系统的docker-buildx的编译后的插件包。例如linux x86_64版安装包
根据README.md文档的步骤:
1
将安装包放到服务器的$HOME/.docker/cli-plugins文件夹中
2
将安装包名称修改为docker-buildx,并添加执行权限
验证:

离线安装kubectl
查看CCE上的kubectl版本
登录CCE页面,点击kubectl连接页面,执行以下命令查看kubectl版本:
可以看到输出结果:kubectl工具的版本为v1.21.7

下载安装kubectl
从K8S官网下载v1.21.7版本、内核为x86_64(即amd64)的kubectl工具:
下载sha256验证文件:
将下载的kubectl、kubectl.sha256文件上传到服务器,进行sha256验证下载的完整性:
如果验证成功,则执行命令进行安装:
安装完后查看版本:

验证连接CCE
当服务器上的cce客户端执行过cce init之后,会在$HOME/.cce(即/root/.cce)下生成连接的配置文件。
当服务器上的cce客户端执行过cce login登录之后,会在$HOME/.kube/下生成kubectl连接配置文件。(即/root/.kube/config)

将需要连接到的K8S配置文件设置为环境变量KUBECONFIG:
kubectl命令便可以连接到CCE上,执行kubectl命令操作CCE:

安装Helm客户端(非必须)
下载
Helm是一个K8S应用程序包管理器。安装Helm后可以创建Helm模板来简化部署、升级、管理K8S程序。
cce使用的是Helm V3,可以到Helm官网查看V3最新的稳定版。例如下载 Helm V3.14.0 amd64版。

安装
将下载下来的压缩包上传到服务器上解压:
解压出来的linux-amd64文件夹中有3个文件:

helm:Helm命令文件

README.md:Helm说明文档

LICENSE:license声明

将helm命令文件移动到/usr/local/bin目录下:

验证
需要先登录CCE,并配置环境变量。
将需要连接到的K8S配置文件设置为环境变量KUBECONFIG:

验证:

常用命令
helm常用命令:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

查看版本号

helm version

查看helm中的模板

helm list

查看helm连接到的远程helm仓库列表

helm repo list

为helm添加内网Nexus远程仓库

helm repo add myproject http://192.168.xxx.xxx:9091/repository/my-helm/

更新helm仓库

helm repo update

搜索远程仓库中名字带有myproject的chart(如果是新上传到仓库的chart,需要先执行更新仓库命令才能搜索到)

helm search repo myproject

查看远程仓库中myproject/myproject-vue的信息(myproject是配置的本地helm远程repo名称,myproject-vue是远程仓库中的chart名称)

helm show chart myproject/myproject-vue

或者填写tgz文件的完整路径

helm show chart http://192.168.xxx.xxx:9091/repository/myproject/myproject-vue-1.0.20240803.tgz

创建一个chart(会在linux本地创建一个文件夹mychart,里面存放有示例模板文件)

helm create mychart

删除mychart文件夹中的templates内的示例文件,将自己deployment、service等yaml放到templates中

按需调整Chart.yaml中配置的该helm模板名称、版本、描述等信息

按需从templates中抽取需要复用的变量,在values.yaml中统一配置

之后可以执行helm的安装

(CCE上无法使用Jenkins节点服务器上的文件夹进行安装,也无法直接连接到nexus私仓或CCE私仓进行安装,报错连接已关闭)

helm install mydep mychart/

打包成tgz文件,可以上传到仓库中

helm package mychart/

修改JDK的配置
项目上的SVN server版本比较旧,使用的是TLS1.0协议。
使用Jenkins连接该SVN时会报错。Jenkins配置页面显示Unable to access the repository,连接时控制台报错:
1
org.tmatesoft.svn.core.SVNException: svn: E175002: SSL handshake failed: 'The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]'
原因:高版本的JDK的安全策略中,禁用了低版本的TLS 1.0、TLS 1.1,只能接受 TLS 1.2、TLS 1.3等。

解决方案:修改JDK的配置文件,将 TLS 1.0、 TLS 1.1 从禁止项中移除。
修改文件/root/build/jenkins/jdk-17.0.12/conf/security/java.security,找到jdk.tls.disabledAlgorithms项,删除其中的TLSv1, TLSv1.1,。
Jenkins管理员页面断开重新连接该节点即可。

目录
相关文章
|
小程序 安全 物联网
【经验分享】支付宝小程序常用appId
【经验分享】支付宝小程序常用appId
4837 6
|
Java Linux Shell
Linux安装部署Nacos
从头到尾的教程以及解决安装中可能遇到的问题
1104 0
Linux安装部署Nacos
|
SQL 关系型数据库 MySQL
MySQL唯一约束(UNIQUE KEY)
MySQL唯一约束(UNIQUE KEY)
1323 0
|
1月前
|
存储 运维 NoSQL
你的企业知识库,何必自己折腾?Tablestore 知识库服务帮你一站式搞定
Tablestore 知识库服务是阿里云推出的全托管 RAG 解决方案,基于 Serverless 架构,支持文档自动解析、向量化、混合检索与Subspace多租户隔离;数据全程留存客户OSS/Tablestore账户,零运维、按量付费,满足金融、政务等高合规场景需求。
618 124
|
API 数据安全/隐私保护 Docker
【Docker】Docker Swarm集群+Portainer控制台配置安装
Docker Swarm集群+Portainer控制台配置安装
3484 0
【Docker】Docker Swarm集群+Portainer控制台配置安装
|
1月前
|
Linux 虚拟化 iOS开发
VMware Fusion 26H1 发布 - 领先的免费桌面虚拟化软件
VMware Fusion 26H1 for Mac - 领先的免费桌面虚拟化软件
729 0
VMware Fusion 26H1 发布 - 领先的免费桌面虚拟化软件
|
2月前
|
人工智能 JavaScript 中间件
复刻字节 AI 开发流:实践 Node.js 通用脚手架
揭秘字节内部 AI 开发流:不是用 AI 写代码,而是“训练 AI 写代码”。从混乱到高效,只靠一套可复用的规则与反馈机制,让 AI 越用越聪明、代码越写越稳。附完整 Node.js 实战脚手架,教你打造真正可进化的 AI 开发体系。
287 7
|
2月前
|
XML 数据采集 人工智能
2026 技术向:AI 对话转 Word 的格式问题与工具实测对比
本文是AI技术文档工程师的实战经验总结,直击ChatGPT/DeepSeek/Claude生成内容转Word的三大痛点:LaTeX公式失真、Mermaid图表丢失、代码块无高亮。硬核对比Pandoc、Typora、aitoword、Quarto四大工具在公式转换、Mermaid渲染、样式控制与批量能力上的真实表现,并附决策树与实测耗时数据,助你10分钟选对方案。
417 0
|
SQL 数据可视化 BI
2025国内外四款主流报表工具!总有一款适合你
2025国内外四款主流报表工具!总有一款适合你
|
物联网 5G SDN

热门文章

最新文章