容器化简易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
,写简单的命令测试下:
构建成功: