Skip to content

Instantly share code, notes, and snippets.

@VineetReynolds
Last active August 1, 2016 05:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save VineetReynolds/008bd246d1ba88d48a18cc4b0328eaa3 to your computer and use it in GitHub Desktop.
Save VineetReynolds/008bd246d1ba88d48a18cc4b0328eaa3 to your computer and use it in GitHub Desktop.

Start Docker Machine

  • docker-machine start default

Start Kubernetes on Docker machine VM

  • kid up

Install Jenkins and Docker registry on kubernetes using Helm

  • helmc install jenkins or

    • kubectl create -f jenkins-rc.yaml and

    • kubectl create -f jenkins-svc.yaml

  • helmc install docker-registry

jenkins-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: jenkins
  labels:
    app: jenkins
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: jenkins
    spec:
      containers:
      - name: jenkins
        image: vineetreynolds/jenkins-host
        ports:
        - containerPort: 8080
        volumeMounts:
        - mountPath: /var/jenkins_home
          name: jenkins-data
        - mountPath: /var/run/docker.sock
          name: docker-socket
      volumes:
        - name: jenkins-data
          hostPath:
            path: /Users/vineet/apps/docker_volumes/jenkins
        - name: docker-socket
          hostPath:
            path: /var/run/docker.sock

Recreate vineetreynolds/jenkins-host from https://github.com/VineetReynolds/NoveaBank/blob/step-3/jenkins/jenkins-host/Dockerfile if necessary. Be mindful of jenkinsci/docker#177 where you will need to chown the jenkins-data directory on Docker host to UID 1000.

jenkins-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: jenkins
  labels:
    app: jenkins
spec:
  ports:
  - port: 80
    targetPort: 8080
  selector:
    app: jenkins

Expose Jenkins via a NodePort

  • kubectl expose rc jenkins --port=80 --target-port=8080 --type=NodePort --name=jenkins-http

or

  • kubectl create -f jenkins-http-svc.yaml

jenkins-http-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: jenkins-http
  labels:
    app: jenkins
spec:
  ports:
  - port: 80
    targetPort: 8080
    nodePort: 31080
  type: NodePort
  selector:
    app: jenkins

Install Git, Kubernetes and NodeJS plugins in Jenkins

Register a new cloud provider in Jenkins

Save the above config.

Create a new Jenkins job.

  • Restrict where the project is run. Provide a value of 'jenkins-slave' (same as label of Docker image)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment