新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的一些基礎的功能。

相關文章
相關標籤/搜索