基于K8s插件版的Jenkins动态节点实践【内含最佳实践】

本文介绍了如何在Jenkins中创建静态和动态节点,特别是利用Kubernetes插件进行动态节点配置。首先在Jenkins服务器上创建JNLP类型节点,接着详细讲解了静态节点的部署文件编写和动态节点的CLOUD配置以及Pipeline Agent的YAML设置。同时,文章还提到了最佳实践和相关资源推荐。
摘要由CSDN通过智能技术生成

手动在Jenkins Server上面创建一个Jenkins Agent节点,选择JNLP 类型。然后获取Jenkins Agent与Master连接所需要的JENKINS_AGENT_NAMEJENKINS_AGENT_SECRET信息。

静态的AGENT节点,需要编写一个Deployment部署文件并传递上面的连接信息,然后kubectl apply

动态的AGENT节点,需要使用kubernetes插件, 首先配置CLOUD,添加Kubernetes集群的配置信息。然后编写Pipeline Agent部分的YAML和Stages。

1. 创建节点

Jenkins > 节点管理 > 添加节点
bc7f223d8a6464f5a49785eb22f88e1d.png

配置节点信息
62038c4443d966b35e5bb732b443af77.pngdc669e2eaeef9a296bfd078a65ff7c0b.png
创建成功(后面需要用到节点名称和secret信息)
ee84dee01e50187b7fc5cc88baffe9da.png

2. 静态节点

ac397e5280bb5d548085610dee8fe7fa.png
image.png
kind: Deployment
apiVersion: apps/v1
metadata:
  labels:
    k8s-app: jenkinsagent
  name: jenkinsagent
  namespace: devops
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s-app: jenkinsagent
  template:
    metadata:
      labels:
        k8s-app: jenkinsagent
      namespace: devops
      name: jenkinsagent
    spec:
      containers:
        - name: jenkinsagent
          image: jenkins/inbound-agent:4.10-3-jdk8
          securityContext:
            privileged: true
          imagePullPolicy: IfNotPresent
          resources:
            limits:
              cpu: 1000m
              memory: 2Gi
            requests:
              cpu: 500m
              memory: 512Mi
          env:
            - name: JENKINS_URL
              value: http://192.168.1.200:8080
            - name: JENKINS_SECRET
              value: 2f3f27ee602171c5b51bc69c2bda501d703ac65f42de16600b3e3007dfdec422
            - name: JENKINS_AGENT_NAME
              value: buildserver1
            - name: JENKINS_AGENT_WORKDIR
              value: /home/jenkins/workspace
830ce3bbc065e98590733aae7ba2571b.png
image.png

3. 动态节点

a8078a843cc95c11a96ef8aaaad671b9.png
bebb1717cb9438eb7e8168b8504f0349.png
9d3edb4b7f531ddbe32f52103c2d7ba1.png

4. 最佳实践

71b6927201f510698dd05175c3fa44a4.png
image.png
@Library("mylib@feature-k8s") _     //加载共享库


podYaml = """
kind: Pod
apiVersion: v1
metadata:
  labels:
    k8s-app: jenkinsagent
  name: jnlp
  namespace: devops
spec:
  securityContext:
    runAsUser: 0
  containers:
  - name: jnlp
    image: jenkins/inbound-agent:4.10-3-jdk8
    imagePullPolicy: IfNotPresent
  - name: maven
    image: maven:3.8.4-jdk-8
    imagePullPolicy: IfNotPresent
    command:
    - cat
    tty: true
  - name: dind
    image: 'docker:stable-dind'
    command:
    - dockerd
    - --host=unix:///var/run/docker.sock
    - --host=tcp://0.0.0.0:8000
    - --insecure-registry=192.168.1.200:8088
    securityContext:
      privileged: true
    volumeMounts:
    - mountPath: /var/run
      name: docker-dir
  - name: "docker"
    tty: true
    image: docker:19.03.15-git
    imagePullPolicy: IfNotPresent
    volumeMounts:
    - m
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值