Docker Containers as Jenkins Slave Docker Containers as Jenkins Slave docker docker

Docker Containers as Jenkins Slave


Scenario 1 is at least covered by the JENKINS/Kubernetes Plugin: see its README

Based on the Scaling Docker with Kubernetes article, automates the scaling of Jenkins agents running in Kubernetes.

But that requires a Kubernetes setup, which means, in your case (if you have only one machine), a minikube.


I have written a message on Scenario 1 (with Kubernetes) at this link:

Jenkins kubernetes plugin not working

Here the post.

Instead of using certificates, I suggest you to use credentials in kubernetes, by creating a serviceAccount:

---apiVersion: v1kind: ServiceAccountmetadata:  name: jenkins---kind: RoleapiVersion: rbac.authorization.k8s.io/v1beta1metadata:  name: jenkinsrules:- apiGroups: [""]  resources: ["pods"]  verbs: ["create","delete","get","list","patch","update","watch"]- apiGroups: [""]  resources: ["pods/exec"]  verbs: ["create","delete","get","list","patch","update","watch"]- apiGroups: [""]  resources: ["pods/log"]  verbs: ["get","list","watch"]- apiGroups: [""]  resources: ["secrets"]  verbs: ["get"]---apiVersion: rbac.authorization.k8s.io/v1beta1kind: RoleBindingmetadata:  name: jenkinsroleRef:  apiGroup: rbac.authorization.k8s.io  kind: Role  name: jenkinssubjects:- kind: ServiceAccount  name: jenkins

and deploying jenkins using that serviceAccount:

apiVersion: extensions/v1beta1kind: Deploymentmetadata:  labels:    app: jenkins  name: jenkinsspec:  replicas: 1  selector:    matchLabels:      app: jenkins  template:    metadata:      labels:        app: jenkins    spec:                 serviceAccountName: jenkins ....

I show you my screenshots for Kubernetes plugin (note Jenkins tunnel for the JNLP port, 'jenkins' is the name of my kubernetes service):

enter image description here

enter image description here

For credentials:

enter image description here

Then fill the fileds (ID will be autogenerated, description will be shown in credentials listbox), but be sure to have created serviceAccount in kubernetes as I said before:

enter image description here

My instructions are for the Jenkins master inside kubernetes. If you want it outside the cluster (but slaves inside) I think you have to use simple login/password credentials.

I hope it helps you.