jenkins agent 运行在kubernetes集群

使用 Jenkins Kubernetes Plugin

创建PVC(可选)

如果你的jekins agent需要持久化存储,可以通过创建PVC或者其它如hostpath方式实现。我的case中使用持久化存储作为maven仓库缓存,以避免每次都去中央仓库下载编译依赖。
nfs-client是storageclass:的name,这里我使用了StorageClass作为动态存储

kubectl create namespace jenkins
kubeclt -n jenkins create -f jenkins-pvc.yaml

jenkins-pvc.yaml

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: jenkins-agent
  annotations:
    volume.beta.kubernetes.io/storage-class: "nfs-client"
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 50Gi

配置kubernetes 插件

Jenkins 安装了kubernetes插件之后,Manage Jenkins -> Manage nodes and clouds -> Configure Cloud 进入到配置界面。

选择add a new cloud -> kubernetes

配置比较简单,在这里只说几个需要注意的地方:
Credentials: 这里可以使用账号密码,也可以使用kubernetes config文件。总之要现创建这个Credentials。
Pod Templates
Namespace 跟pvc的namespace相同,这里我配置的Jenkins。
Labels agent label,pipeline中agent的值。
Containers Templates
Docker image 可以使用你自定义的agent image,因为你的agent可能需要集成一些CI/CD工具如maven,sonarqube,kubectl命令等。
Working directory /home/jenkins/agent 这个地方一定要注意,新版本必须是带agent这一层目录,原来我设置的未/home/jenkins,但是jenkins job执行时会报错。
EnvVars 想要传入agent的环境变量
Volumes 挂载pvc,这里我挂载的是上边我创建的pvc,用来持久化maven缓存。
Host path 因为我要在pipeline中执行docker build ,所以这里我挂载了这两个文件:/var/run/docker.sock /usr/bin/docker
Node Selector 可以为jenkins agent pod 指定运行在哪些node。

以上配置完成后就可以创建jenkins job了。这里只列出agent部分配置。两种配置

如下的配置指定了defaultContainer,jenkins agentpod会启动两个容器,一个是jnlp,还有一个是自定义的。默认的是jnlp,所以如果你将一些工具安装在了自定义的docker image中,而没有指定defaultContainer的话,你的工具默认是没办法调用的。

agent {
  kubernetes { 
    cloud 'kubernetes' 
    label 'jenkins-agent'
    defaultContainer 'jenkins-agent'
  }
}

可以直接指定label,默认就使用jnlp。

agent {
    label 'jenkins-agent'
}

你可能感兴趣的:(Jenkins,kubernetes)