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

  sre

共三页:
https://kubernetes-cicd-1
https://kubernetes-cicd-2
https://kubernetes-cicd-3

架构

安装slave,来解放master的压力,提高构建能力,架构如下图:
20.png

插件安装

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

增加Kubernetes

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

15.png
配置参考:
3333333333333333.png

集群名称:自己起名字,后续
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不用改

点击链接测试,成功后进行以下操作。
配置参考:
444444444444.png

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

555555555555555.png

增加几个挂载卷,先建两个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

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

6666.png
Service Account填上jenkins,来实现kubectl操作发布流程

测试下:

先创建一个freestyle构建:
7777777777.png
标签选择器选刚才的maven
8888888888888.png
构建方式为shell,写简单的命令测试下:
99999999999.png
构建成功:
eeeeeeeeee.png

LEAVE A COMMENT

Captcha Code