Scalable Jenkins on K8s · Scalable Jenkins on K8s Distributed build with JNLP Husni Alhamdani –...
Transcript of Scalable Jenkins on K8s · Scalable Jenkins on K8s Distributed build with JNLP Husni Alhamdani –...
![Page 2: Scalable Jenkins on K8s · Scalable Jenkins on K8s Distributed build with JNLP Husni Alhamdani – DevOps Engineer ... DevOps Engineer @HongLeongBank (Malaysia) Husni Alhamdani Certified](https://reader030.fdocuments.us/reader030/viewer/2022040119/5e5b7a84a8f39e153f49ac3e/html5/thumbnails/2.jpg)
Husni AlhamdaniDevOps Engineer @HongLeongBank (Malaysia)
Husni Alhamdani
Certified Openstack Administrator
Certified Kubernetes Administrator
Certifications:
![Page 3: Scalable Jenkins on K8s · Scalable Jenkins on K8s Distributed build with JNLP Husni Alhamdani – DevOps Engineer ... DevOps Engineer @HongLeongBank (Malaysia) Husni Alhamdani Certified](https://reader030.fdocuments.us/reader030/viewer/2022040119/5e5b7a84a8f39e153f49ac3e/html5/thumbnails/3.jpg)
In 2019…
Talk: JK8s Meetup 05: Tips passing CKA certifications (Jakarta) May 2019
Scholarship LF Events: Helm Summit 2019 (Amsterdam) September 2019
Talk: Microservices with Kubernetes & Istio (Malaysia) October 2019
Scholarship LF Events: KubeCon 2019 (North America) this Month (18-22 November)
$ husni get logs
![Page 4: Scalable Jenkins on K8s · Scalable Jenkins on K8s Distributed build with JNLP Husni Alhamdani – DevOps Engineer ... DevOps Engineer @HongLeongBank (Malaysia) Husni Alhamdani Certified](https://reader030.fdocuments.us/reader030/viewer/2022040119/5e5b7a84a8f39e153f49ac3e/html5/thumbnails/4.jpg)
Agenda Jenkins overview
Jenkins Master-Slave architecture
Why we need to make it scalable?
Setup on K8s
Demo
Summary
![Page 5: Scalable Jenkins on K8s · Scalable Jenkins on K8s Distributed build with JNLP Husni Alhamdani – DevOps Engineer ... DevOps Engineer @HongLeongBank (Malaysia) Husni Alhamdani Certified](https://reader030.fdocuments.us/reader030/viewer/2022040119/5e5b7a84a8f39e153f49ac3e/html5/thumbnails/5.jpg)
Overview #1
Jenkins is free and open sources automations server. Jenkins help to automatethe non-human part of the software development process,
With Continous Integration (CI) and Facilitating technical aspect of Continous delivery (CD).
<>
![Page 6: Scalable Jenkins on K8s · Scalable Jenkins on K8s Distributed build with JNLP Husni Alhamdani – DevOps Engineer ... DevOps Engineer @HongLeongBank (Malaysia) Husni Alhamdani Certified](https://reader030.fdocuments.us/reader030/viewer/2022040119/5e5b7a84a8f39e153f49ac3e/html5/thumbnails/6.jpg)
Overview #2<>
Source image: CloudBees
![Page 7: Scalable Jenkins on K8s · Scalable Jenkins on K8s Distributed build with JNLP Husni Alhamdani – DevOps Engineer ... DevOps Engineer @HongLeongBank (Malaysia) Husni Alhamdani Certified](https://reader030.fdocuments.us/reader030/viewer/2022040119/5e5b7a84a8f39e153f49ac3e/html5/thumbnails/7.jpg)
Overview #3
Some advantage of Jenkins:
Open-source software with extensive community support
Java-based codebase, making it portable to all major platforms
A rich ecosystem of more than 1000 plugins
<>
![Page 8: Scalable Jenkins on K8s · Scalable Jenkins on K8s Distributed build with JNLP Husni Alhamdani – DevOps Engineer ... DevOps Engineer @HongLeongBank (Malaysia) Husni Alhamdani Certified](https://reader030.fdocuments.us/reader030/viewer/2022040119/5e5b7a84a8f39e153f49ac3e/html5/thumbnails/8.jpg)
Jenkins Master-slave architecture
Jenkins Master Jenkins Slave
Jobs
Queues
Executors
Executors
![Page 9: Scalable Jenkins on K8s · Scalable Jenkins on K8s Distributed build with JNLP Husni Alhamdani – DevOps Engineer ... DevOps Engineer @HongLeongBank (Malaysia) Husni Alhamdani Certified](https://reader030.fdocuments.us/reader030/viewer/2022040119/5e5b7a84a8f39e153f49ac3e/html5/thumbnails/9.jpg)
Jenkins Master
But, The problem is…
Jenkins Slave
Jenkins Slave
VM-0
VM-1
VM-N
Dedicated Jenkins slave (can’t automatically spinning up and removing slaves based on need)
Cannot run in parallel
![Page 10: Scalable Jenkins on K8s · Scalable Jenkins on K8s Distributed build with JNLP Husni Alhamdani – DevOps Engineer ... DevOps Engineer @HongLeongBank (Malaysia) Husni Alhamdani Certified](https://reader030.fdocuments.us/reader030/viewer/2022040119/5e5b7a84a8f39e153f49ac3e/html5/thumbnails/10.jpg)
Scalable Jenkins on K8s?
Jenkins Job :Jenkins Master
Jenkins-job-1
- Jenkins-job-1
Jenkins-job-2
- Jenkins-job-2
- Jenkins-job-3
- Jenkins-job-4
- Jenkins-job-5
Jenkins-job-3Jenkins-job-4 Jenkins-job-5
Jenkins Slave
K8s C
lu ster
![Page 11: Scalable Jenkins on K8s · Scalable Jenkins on K8s Distributed build with JNLP Husni Alhamdani – DevOps Engineer ... DevOps Engineer @HongLeongBank (Malaysia) Husni Alhamdani Certified](https://reader030.fdocuments.us/reader030/viewer/2022040119/5e5b7a84a8f39e153f49ac3e/html5/thumbnails/11.jpg)
Setup scalable Jenkins on K8s
Prepare/Modify Jenkins (Master-Slave) image
K8s: Create Deployment (Jenkins Master)
K8s: Create Services (HTTP, JNLP)
Jenkins: Kubernetes Plugin
Jenkins: Jenkins Slave configurations
![Page 12: Scalable Jenkins on K8s · Scalable Jenkins on K8s Distributed build with JNLP Husni Alhamdani – DevOps Engineer ... DevOps Engineer @HongLeongBank (Malaysia) Husni Alhamdani Certified](https://reader030.fdocuments.us/reader030/viewer/2022040119/5e5b7a84a8f39e153f49ac3e/html5/thumbnails/12.jpg)
Setup on K8s
Jenkins Master
Jenkins SlaveK8s deployment
svc: LoadbalancerPort: 80 (HTTP)
svc: ClusterIPPort: 50000 (JNLP)
…ENTRYPOINT [“Jenkins-jnlp”]
Dockerfile
JNLP
![Page 13: Scalable Jenkins on K8s · Scalable Jenkins on K8s Distributed build with JNLP Husni Alhamdani – DevOps Engineer ... DevOps Engineer @HongLeongBank (Malaysia) Husni Alhamdani Certified](https://reader030.fdocuments.us/reader030/viewer/2022040119/5e5b7a84a8f39e153f49ac3e/html5/thumbnails/13.jpg)
Setup on K8s #1Docker Image
jenkins/Jenkins:lts
jenkinsci/jnlp-slave
Jenkins Master Jenkins Slave
FROM jenkinsci/jnlp-slave
ENTRYPOINT ["jenkins-slave"]
Dockerfile
![Page 14: Scalable Jenkins on K8s · Scalable Jenkins on K8s Distributed build with JNLP Husni Alhamdani – DevOps Engineer ... DevOps Engineer @HongLeongBank (Malaysia) Husni Alhamdani Certified](https://reader030.fdocuments.us/reader030/viewer/2022040119/5e5b7a84a8f39e153f49ac3e/html5/thumbnails/14.jpg)
Setup on K8s #2K8s Deployment (Jenkins Master)
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: jenkins spec: ….containers: - name: jenkins image: Jenkins/Jenkins:lts env: - name: JAVA_OPTS value: -Djenkins.install.runSetupWizard=false ports: - name: http-port containerPort: 8080 - name: jnlp-port containerPort: 50000
![Page 15: Scalable Jenkins on K8s · Scalable Jenkins on K8s Distributed build with JNLP Husni Alhamdani – DevOps Engineer ... DevOps Engineer @HongLeongBank (Malaysia) Husni Alhamdani Certified](https://reader030.fdocuments.us/reader030/viewer/2022040119/5e5b7a84a8f39e153f49ac3e/html5/thumbnails/15.jpg)
Setup on K8s #3K8s Services (Jenkins Master)
apiVersion: v1 kind: Servicemetadata: name: jenkins spec: type: LoadBalancer ports: - port: 80 targetPort: 8080 selector: app: jenkins
apiVersion: v1 kind: Servicemetadata: name: Jenkins-jnlpspec: type: ClusterIP ports: - port: 50000 targetPort: 50000 selector: app: jenkins
External (Jenkins UI)
app: jenkins
svc: LoadbalancerPort: 80 (HTTP)
svc: ClusterIPPort: 50000 (JNLP)
Internal (Jenkins JNLP)
=
![Page 16: Scalable Jenkins on K8s · Scalable Jenkins on K8s Distributed build with JNLP Husni Alhamdani – DevOps Engineer ... DevOps Engineer @HongLeongBank (Malaysia) Husni Alhamdani Certified](https://reader030.fdocuments.us/reader030/viewer/2022040119/5e5b7a84a8f39e153f49ac3e/html5/thumbnails/16.jpg)
Setup on K8s #4Jenkins: Kubernetes plugin integration
![Page 17: Scalable Jenkins on K8s · Scalable Jenkins on K8s Distributed build with JNLP Husni Alhamdani – DevOps Engineer ... DevOps Engineer @HongLeongBank (Malaysia) Husni Alhamdani Certified](https://reader030.fdocuments.us/reader030/viewer/2022040119/5e5b7a84a8f39e153f49ac3e/html5/thumbnails/17.jpg)
Setup on K8s #5Jenkins: Dynamic agent configuration (Jenkins Slave)
hudani/Jenkins-slave
![Page 18: Scalable Jenkins on K8s · Scalable Jenkins on K8s Distributed build with JNLP Husni Alhamdani – DevOps Engineer ... DevOps Engineer @HongLeongBank (Malaysia) Husni Alhamdani Certified](https://reader030.fdocuments.us/reader030/viewer/2022040119/5e5b7a84a8f39e153f49ac3e/html5/thumbnails/18.jpg)
Scalable Jenkins on K8s
Jenkins Job :Jenkins Master
Jenkins-job-1
- Jenkins-job-1
Jenkins-job-2
- Jenkins-job-2
- Jenkins-job-3
- Jenkins-job-4
- Jenkins-job-5
Jenkins-job-3Jenkins-job-4 Jenkins-job-5
Jenkins Slave
K8s C
lu ster
![Page 19: Scalable Jenkins on K8s · Scalable Jenkins on K8s Distributed build with JNLP Husni Alhamdani – DevOps Engineer ... DevOps Engineer @HongLeongBank (Malaysia) Husni Alhamdani Certified](https://reader030.fdocuments.us/reader030/viewer/2022040119/5e5b7a84a8f39e153f49ac3e/html5/thumbnails/19.jpg)
With scalable the ability to run many more build plans in parallel automatically replacing corrupted Jenkins instances automatically spinning up and removing slaves based on need, which saves costs
Without scalable Cannot run in parallel Dedicated Jenkins slave (can’t automatically spinning up and removing
slaves based on need)
Summary!!!
![Page 20: Scalable Jenkins on K8s · Scalable Jenkins on K8s Distributed build with JNLP Husni Alhamdani – DevOps Engineer ... DevOps Engineer @HongLeongBank (Malaysia) Husni Alhamdani Certified](https://reader030.fdocuments.us/reader030/viewer/2022040119/5e5b7a84a8f39e153f49ac3e/html5/thumbnails/20.jpg)
Resources
Github.com/husnialhamdani/scalable-jenkins-on-k8s
![Page 21: Scalable Jenkins on K8s · Scalable Jenkins on K8s Distributed build with JNLP Husni Alhamdani – DevOps Engineer ... DevOps Engineer @HongLeongBank (Malaysia) Husni Alhamdani Certified](https://reader030.fdocuments.us/reader030/viewer/2022040119/5e5b7a84a8f39e153f49ac3e/html5/thumbnails/21.jpg)
Thank you!
@HusniAlhamdani