目的

jenkins利用k8s进行构建项目,提升效率

可构建maven、webpack、docker image

前提

已部署k8s环境

已部署jenkins

步骤

  1. jenkins安装kubernetes插件

Manage Jenkins->Manage Plugins 安装kubernetes Plugin

  1. 配置kubernetes插件

Manage Jenkins->Configure System->新增一个云

下面逐个参数配置

名称:随便填写
Kubernetes 地址:可到kubernetes master /etc/kubernetes/admin.conf进行获取
Kubernetes 服务证书 key:可到kubernetes master  /etc/kubernetes/admin.conf进行获取
禁用 HTTPS 证书检查: 是
凭据: 请看下文

凭据的生成方法:

文件中有三个值 certificate-authority-data 、client-certificate-data 、 client-key-data 

解码它们获得证书 ,注意将上面的值替换称自己的一大长传字符串

echo certificate-authority-data | base64 -d > ca.crt
echo client-certificate-data | base64 -d > client.crt
echo client-key-data | base64 -d > client.key
根据这三个文件生成一个PKCS12格式的客户端证书文件
openssl pkcs12 -export -out cert.pfx -inkey client.key -in client.crt -certfile ca.crt
注意生成证书的时候,一定要填写密码,后面会用到

配置完后可点击链接测试,如果提示成功即配置成功



接着添加pod模板

命名空间: 使用的k8s的命名空间
标签列表: 构建任务可指定标签
用法: 
Use this node as much as possible
	尽可能多地使用这个节点
Only build jobs with label expressions matching this node
	仅使用与此节点匹配的标签表达式构建作业
	
容器列表
	名称: jnlp,写其它名称好像会有问题
	Docker镜像: 构建使用的镜像,一般来说需要自己制作镜像

Host Path Vloume:
共享宿主机/var/run/docker.sock,这是保证在Docker容器里面运行Docker的关键
共享宿主/home/ake/.m2,这是maven的本地仓库路径,目的是为了下次构建maven项目时加快速度
  1. 制作自定义的构建镜像

Docekrfile:

ARG  user=root
ARG  group=root
#官方jenkins-jnlp-slave镜像
FROM jenkins/jnlp-slave
#把用户设置为root
USER root 
WORKDIR /root

加入已下载的安装包 maven、node等
RUN mkdir -p /home/ake/app && mkdir -p /home/ake/script
ADD apache-maven-3.5.3.tar.gz /home/ake/app
ADD node-v10.12.0-linux-x64.tar.gz /home/ake/app
ADD jenkins-script.tar.gz /home/ake/script

#docker config.json文件,解决docker推送镜像到仓库需要login的问题
ADD config.json /root/.docker/config.json 

#创建node的软连接,是的node命令可用
RUN ln -s /home/ake/app/node-v10.12.0-linux-x64/bin/npm /usr/local/bin/npm
RUN ln -s /home/ake/app/node-v10.12.0-linux-x64/bin/node /usr/local/bin/node
RUN ln -s /home/ake/app/node-v10.12.0-linux-x64/bin/cnpm /usr/local/bin/cnpm

#安装cnpm,使得npm速度
RUN npm install -g cnpm --registry=http://registry.npm.taobao.org 

#安装docker
RUN apt-get -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common && curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - && add-apt-repository  "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/debian $(lsb_release -cs) stable" && apt-get update && apt-get -y install docker-ce=18.06.1~ce~3-0~debian

#添加环境变量,使得maven命令可用
ENV MAVEN_HOME=/home/ake/app/apache-maven-3.5.3 
ENV PATH=${PATH}:${MAVEN_HOME}/bin
  1. 使构建任务利用k8s进行构建

    1. 指定限制项目的运行节点

    1. 默认全部都是有k8s进行构建

    jenkins-kuebernetes plugin配置 选择 Use this node as much as possible

    Manage Jenkins->Manage Nodes->master->选择Only build jobs with label expressions matching this node

转载于:https://my.oschina.net/u/1241604/blog/3095143

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐