新Jenkins实践- 第3章 为Jenkins添加静态agent节点

本文主要阐述如何为Jenkins Server来添加Agent节点。静态节点的配置方式 VM、Docker、Kubernetes。java

Jenkins采用分布式架构,分为server节点和agent节点。 server节点也是能够运行构建任务的,但咱们通常使其主要来作任务的调度。(毕竟server节点挂了就都...)agent节点专门用于任务的执行。 随着如今容器的盛行,咱们能够将server节点和agent节点在容器或者基于Kubernetes中部署。 关于agent节点借助容器能够实现动态的资源分配等等好处。agent节点能够分为静态节点和动态节点。 静态节点是固定的一台vm虚机或者容器。 动态节点是随着任务的构建来自动建立agent节点。 node

1.1 Java Web方式

Launch agent by connecting it to the masterweb

使用Java Web Start。在这种状况下,必须在Agent机器上打开JNLP文件,这将创建到Jenkins服务器的TCP链接。这意味着不须要Jenkins服务器访问Agent;而是Agent可以连接到Jenkins Server便可。docker

若是经过“配置全局安全配置”页面启用了安全性,则能够自定义Jenkins服务器监听的Agent链接的端口。也就是至关于Agent节点会开启一个随机的端口与Server中配置的端口链接。因此通常申请网络权限咱们须要开放Jenkins服务器的监听端口给Agent链接。api

默认状况下,Agent将启动GUI,可是也能够在没有GUI的状况下运行代理,例如做为Windows服务。在Linux中咱们通常会使用nohup等方式保证进程在后台运行。安全

首先,咱们在Jenkins Server页面>节点管理菜单中添加一个Jenkins Agent。在DevOps流水线实践教程中,咱们在添加Agent节点的时候选择的是java web start方式启动的agent与Jenkins Server的链接。如今不少同窗反馈找不到此选项了,开始我觉得是汉化问题。后来发现新版本中修改了名称为Launch agent by connecting it to the master。若是你遇到了此类问题,能够选择Launch agent by connecting it to the master选项。服务器

新Jenkins实践- 第3章 为Jenkins添加静态agent节点

填写节点的名称等信息。网络

新Jenkins实践- 第3章 为Jenkins添加静态agent节点

新Jenkins实践- 第3章 为Jenkins添加静态agent节点

新Jenkins实践- 第3章 为Jenkins添加静态agent节点

1.1.1 VM方式启动

首先,咱们点开agent页面,获取agent.jar和secret信息。架构

新Jenkins实践- 第3章 为Jenkins添加静态agent节点

咱们在一台Linux服务器中,下载agent.jar和启动链接。app

wget http://192.168.1.200:30080/jnlpJars/agent.jar
java -jar agent.jar -jnlpUrl http://192.168.1.200:8080/computer/test01/slave-agent.jnlp -secret d5bd27fc1dfa4c5e886b95fc98538f4a7399c5d239783f89e4502a6e56f8a512 -workDir "/var/lib/jenkins"

连接成功的日志:

INFO: Agent discovery successful
  Agent address: 192.168.1.200
  Agent port:    30081
  Identity:      0b:a1:da:6c:8e:e2:ca:f8:17:f6:b7:ee:cb:ff:84:0d
Jul 24, 2020 5:57:29 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Handshaking
Jul 24, 2020 5:57:29 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connecting to 192.168.1.200:30081
Jul 24, 2020 5:57:29 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Trying protocol: JNLP4-connect
Jul 24, 2020 5:57:29 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Remote identity confirmed: 0b:a1:da:6c:8e:e2:ca:f8:17:f6:b7:ee:cb:ff:84:0d
Jul 24, 2020 5:57:30 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connected

使用nohup后台运行agent。

nohup java -jar agent.jar -jnlpUrl http://192.168.1.200:8080/computer/test01/slave-agent.jnlp -secret d5bd27fc1dfa4c5e886b95fc98538f4a7399c5d239783f89e4502a6e56f8a512 -workDir "/var/lib/jenkins" &

1.1.2 Docker方式

docker的方式比较简单,第一步下载镜像,第二步启动镜像。 注意参数要写对。

docker pull jenkins/inbound-agent:alpine

docker run --init jenkins/inbound-agent:alpine -url http://192.168.1.200:30080 -workDir=/home/jenkins/agent d5bd27fc1dfa4c5e886b95fc98538f4a7399c5d239783f89e4502a6e56f8a512 test01

1.1.3 Kubernetes方式

在这里咱们把agent以静态的方式部署到kubernetes集群中。 首先编写一个部署文件,定义好名称空间、镜像、agent配置信息。

kind: Deployment
apiVersion: apps/v1
metadata:
  labels:
    k8s-app: jenkinsagent-test01
  name: jenkinsagent-test01
  namespace: devops
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s-app: jenkinsagent-test01
  template:
    metadata:
      labels:
        k8s-app: jenkinsagent-test01
      namespace: devops
      name: jenkinsagent-test01
    spec:
      containers:
        - name: jenkinsagent-test01
          image: jenkins/inbound-agent:alpine
          imagePullPolicy: IfNotPresent
          resources:
            limits:
              cpu: 1000m
              memory: 2Gi
            requests:
              cpu: 500m
              memory: 512Mi
          env:
            - name: JENKINS_URL
              value: http://192.168.1.200:30080
            - name: JENKINS_SECRET
              value: d5bd27fc1dfa4c5e886b95fc98538f4a7399c5d239783f89e4502a6e56f8a512
            - name: JENKINS_AGENT_NAME
              value: test01
            - name: JENKINS_AGENT_WORKDIR
              value: /home/jenkins/workspace

最后,经过kubectl工具部署到kubernetes集群中。咱们可使用kubectl get 查询pod的状态,也能够经过kubectl logs 查看pod运行的日志信息。

kubectl create -f jenkins.yaml
kubectl get pod -n devops
kubectl logs -f jenkinsagent-test01-5644b4bb6b-kh229 -n devops

1.2 Launch agents via SSH

首先,建立一个凭据存储服务器认证信息。

新Jenkins实践- 第3章 为Jenkins添加静态agent节点

而后咱们建立一个新的节点,添加如下配置。配置ssh的主机和认证信息。最后保存。

新Jenkins实践- 第3章 为Jenkins添加静态agent节点
保存配置后,agent配置完成。

1.3 建立一个测试的流水线

建立一个测试的pipeline项目,而后填写Jenkinsfile内容。

pipeline {
    agent {
        node { label "build"}
    }

    stages {
        stage('Hello') {
            steps {
                echo 'Hello World'
            }
        }
    }
}

新Jenkins实践- 第3章 为Jenkins添加静态agent节点


到此咱们完成了Jenkins Agent的配置,后期咱们开始了解Jenkins的一些基础的功能。

相关文章
相关标签/搜索