jenkins k8s 动态增减 jenkins-salve (2) 实现 slave 节点动态构建
阅读原文时间:2021年04月21日阅读:1

此教程所使用的所有文件,均可在 https://github.com/xuejipeng/jenkins-k8s 找到

一、制作jenkins-slave镜像

因为官方的 jnlp 文件只是基础镜像,值提供了 jnlp 连接 jenkins-master 的功能,因为不同的构建任务需要用到的环境不一,需要根据不同的环境构建不同的jnlp镜像,下面是我的 Dockerfile ,大家可以跟我不同的需求做些修改

cat Dockerfile

FROM  centos
#定义jnlp的版本
ARG VERSION=3.16  
ARG AGENT_WORKDIR=/root/agent
#获取jnlp
RUN curl --create-dirs -sSLo /usr/share/jenkins/slave.jar https://repo.jenkins-ci.org/public/org/jenkins-ci/main/remoting/${VERSION}/remoting-${VERSION}.jar \
  && chmod 755 /usr/share/jenkins \
  && chmod 644 /usr/share/jenkins/slave.jar
#安装软件
RUN yum -y install git  libtool-ltdl java-1.8.0-openjdk 
RUN rm -rf /var/cache/yum/x86_64/7/*

ENV AGENT_WORKDIR=${AGENT_WORKDIR}

COPY node /usr/local/
COPY kubectl /usr/bin/kubectl
#提前从官网镜像中将命令拷贝出来
COPY jenkins-slave /usr/local/bin/jenkins-slave
#将自己的 .kube 文件拷贝到镜像中
COPY .kube /root/.kube
#定制hosts文件,因为centos的hosts放置在只读层,需要修改系统读取hosts的位置到/tmp/hosts文件
COPY hosts /tmp/hosts
RUN mkdir -p -- /lib-override && cp /usr/lib64/libnss_files.so.2 /lib-override
RUN sed -i 's:/etc/hosts:/tmp/hosts:g' /lib-override/libnss_files.so.2
ENV LD_LIBRARY_PATH /lib-override 

RUN mkdir /root/.jenkins && mkdir -p ${AGENT_WORKDIR}
ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/node/bin
RUN npm install -g yarn
WORKDIR /root 
ENTRYPOINT ["jenkins-slave"]

制作镜像
docker build -t jenkins-slave:1.0 .
如果没有提前下载centos镜像,构建时间可能较长。

二、配置jenkins-master

  1. 打开 jenkins UI 界面依次点击
    系统管理 –> 系统设置 –> 新增一个云(在界面最下方) –> Kubernetes
    配置如下:



    配置完成后点击保存

2.新建一个 pipline 任务

三、编写 pipline

这里由于各项目使用到的环境不同,这里只是简单做了个模板,大家可以在此模板的基础上修改为适合自己的 pipline,将此 pipline 放置到代码的根路径下

四、开始构建

返回到项目点击立即构建,可以看到 jenkins-slave 正在创建

查看构建日志,docker、kubectl命令可正常调用

至此,构建完成。