容器化简易cicd(2):jenkins slave安装

共三页:
架构
安装slave,来解放master的压力,提高构建能力,架构如下图:

插件安装
Jenkins–>插件
先安装中文插件:Locale plugin
再安装k8s插件:Kubernetes
中文调整:

增加Kubernetes
增加一个Kubernetes环境,Manage Jenkins >>Configure System

配置参考:

集群名称:自己起名字,后续
Kubernetes 地址:kubernetes api server的地址,因为jenkins部署在该kubernetes里面,可以直接用svc访问,不用改 https://kubernetes.default.svc.cluster.local
Kubernetes 命名空间: 这个例子为cicd
Jenkins 地址: Jenkins web的url,在本集群内,可以直接为http://jenkins-master.cicd.svc.cluster.local:8080不用改
Jenkins 通道: 用于master与slave的心跳端口,注意是tcp协议,可以直接为jenkins-master.cicd.svc.cluster.local:50000不用改
点击链接测试,成功后进行以下操作。
配置参考:

名称:固定为jnlp不能改
命名空间:本例是cicd
标签列表:本例为maven,用于区分不同的slave功能,如java nodejs等
用法:标签匹配才构建
容器列表里面
名称:固定为jnlp不能改
Docker 镜像:slave的镜像,包含slave.jar和maven环境,可以直接用我的registry.cn-hangzhou.aliyuncs.com/sre_pub/jnlp-slave-oracle
工作目录:本镜像为/home/jenkins/agent

增加几个挂载卷,先建两个pvc:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jenkins-slave
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: "500Gi"
volumeName:
storageClassName: nfs
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jenkins-slave-root
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: "500Gi"
volumeName:
storageClassName: nfs

host path卷:把主机的/var/run/docker.sock挂载到容器的/var/run/docker.sock里面去,实现docker镜像操作。
pvc卷:把slave的/home/jenkins挂载成pvc,可以保留下构建缓存。
pvc卷:把slave的/root也挂载成pvc,可以保存pom.xml下载的依赖jar包,提高构建速度。

Service Account填上jenkins,来实现kubectl操作发布流程
测试下:
先创建一个freestyle构建:

标签选择器选刚才的maven

构建方式为shell,写简单的命令测试下:

构建成功:


