一、概要
1. 承上启下
2. 概念
(1) Node/Agent
Node节点是Jenkins环境的重要组成部分,它用于执行Pipeline。
为了支持分布式CD,Jenkins设计了一个Controller对应多个Node/Agent的架构,Node可以与Controller部署在同一机器上,但是大部分情况应该是位于不同的机器上,甚至这些机器拥有不同的运行环境(Windows、Linux、Node.js、Java、Python)。
Controller和Node通过TCP或SSH连接,Controller的作用是管理、监控、编排(orchestrate)连接到自己的Node。Node的任务是接受Controller分配的任务并执行。
(2) Built-In Node
当我们安装完Jenkins登录后,首页右上方会给出提示:
意思是为了安全考量,推荐我们自己创建单独的Agent,而不是使用Jenkins自带的Node。
3. 消除警告
(1) 登录Jenkins,进入Dashboard->Manage Jenkins->Nodes and Clouds
(2) 此时,我们可以看到系统内建的Node
点击编辑,将其"Number of executors"调整为0。
保存后,右上角的警告随之去除。
二、部署
从链接方式的角度来看,Jenkins支持两种Node部署方式,一种是SSH(主要用于远程Node部署),另一种是TCP方式,本文选用后者。
1. 依赖
部署Node的依赖条件非常简单:
a. 宿主机有可用网络;
b. Java环境。
2. Agent TCP Port
进入Dashboard->Manage Jenkins->Security页面,找到Agents配置节:
将TCP port for inbound agents的选项设置为Random并Save。
3. 创建新Node
(1) 在Dashboard->Nodes页面,点击右上角的"+ New Node":
填写Node Name,选择Permanent Agent,点击"Create"。
(2) 进一步配置Node的其他属性
a. Name: 是必填项,不允许包含特殊字符(?*/\%!@#$^&|<>[]:;)
b. Number of executors: 同一时间执行Pipeline的个数,建议设置为Node所在服务器的CPU核心数;
c. Remote root directory: 是Node所在服务器分配给当前Node运行的目录,需要创建;
d. Labels: 标签是一个非常实用的功能,用于区分不同的Node类型。设想一下,公司应用端分为Windows和OS,两者的编译和打包环境不同,Node1用于Windows环境,Labels值为"Windows";Node2用于OS环境,Lables值为Apple。在Pipeline的定义文件中,可以指定Pipeline所用的Node Labels,当启动Pipeline时,Jenkins会自动寻找合适的Node执行Pipeline。
多个Labels用空格拆分。
4. 配置Node宿主机
(1) 创建目录
sudo mkdir -p /var/opt/Jenkins/nodes/Node1 sudo mkdir -p /var/opt/Jenkins/nodes/Node2
(2) 下载agent.jar
curl -sO https://jenkins.example.com/jnlpJars/agent.jar
(3) 启动Agent
java -Djavax.net.ssl.trustStore=/var/opt/java/cacerts -Djavax.net.ssl.trustStorePassword=changeit -jar agent.jar -jnlpUrl https://jenkins.example.com/computer/Node1/jenkins-agent.jnlp -secret "xxx" -workDir "/var/opt/Jenkins/nodes/Node1"
注意,如果Jenkins使用了自签名证书,则需要解决证书信任问题,可参考 Java自签名证书的信任处理
(4) 检查Node状态
三、参考
1. 官方
https://www.jenkins.io/doc/book/using/using-agents/
标签:Node,Pipeline,jar,Agent,---,Controller,Jenkins From: https://www.cnblogs.com/eagle6688/p/17537608.html