Jenkins Kubernetes Deployment¶
This page documents the deployment and configuration of Jenkins within a Kubernetes cluster, including container resource definitions, service exposure, and necessary infrastructure plugins.
Deployment Configuration¶
Jenkins is typically deployed using a Kubernetes Deployment resource.^[400-devops__06-Kubernetes__k8s-jenkins__k8s.md]
A standard deployment configuration for Jenkins often utilizes the official jenkins/jenkins:lts-alpine Docker image.^[400-devops__06-Kubernetes__k8s-jenkins__k8s.md]
Resource Limits and Environment¶
To ensure stability, specific resource requests and limits should be defined for the container.^[400-devops__06-Kubernetes__k8s-jenkins__k8s.md]
- CPU: Request 1000m, Limit 1200m^[400-devops__06-Kubernetes__k8s-jenkins__k8s.md]
- Memory: Request 1Gi, Limit 2Gi^[400-devops__06-Kubernetes__k8s-jenkins__k8s.md]
Environment variables are used to configure Java options and upgrade behavior:^[400-devops__06-Kubernetes__k8s-jenkins__k8s.md]
JAVA_OPTS: Set to-Xms256m -Xmx1024m -Duser.timezone=Asia/Shanghai^[400-devops__06-Kubernetes__k8s-jenkins__k8s.md]TRY_UPGRADE_IF_NO_MARKER: Set totrue^[400-devops__06-Kubernetes__k8s-jenkins__k8s.md]
Container Ports¶
The container exposes two primary ports:^[400-devops__06-Kubernetes__k8s-jenkins__k8s.md]
- http:
8080(Web UI access) - agent:
50000(For communication with build agents)
Service and Ingress¶
Service¶
A Kubernetes Service is created to expose the Jenkins deployment.^[400-devops__06-Kubernetes__k8s-jenkins__k8s.md]
- Type: ClusterIP^[400-devops__06-Kubernetes__k8s-jenkins__k8s.md]
- Ports:
- Port
8080targeting port8080(namedhttp)^[400-devops__06-Kubernetes__k8s-jenkins__k8s.md] - Port
50000targeting port50000(namedagent)^[400-devops__06-Kubernetes__k8s-jenkins__k8s.md]
- Port
Ingress¶
External access is configured via an Ingress resource, typically using an Ingress Controller like Nginx.^[400-devops__06-Kubernetes__k8s-jenkins__k8s.md]
- IngressClassName:
nginx^[400-devops__06-Kubernetes__k8s-jenkins__k8s.md] - Host: Configured to a specific domain (e.g.,
yudady.gq)^[400-devops__06-Kubernetes__k8s-jenkins__k8s.md] - Backend: Routes traffic to the Jenkins service on port
8080^[400-devops__06-Kubernetes__k8s-jenkins__k8s.md]
Required Plugins¶
When setting up Jenkins in a Kubernetes environment, several plugins are recommended or required to enable container and cloud-native features:^[400-devops__06-Kubernetes__k8s-jenkins__k8s.md]
- Docker: For building and running Docker containers.
- Docker-pip: For Python Docker interaction.
- Blue Ocean: For providing a modern user experience.
- Kubernetes (k8s): For scaling Jenkins agents on Kubernetes.
Related Concepts¶
- Kubernetes
- Ingress
- [[Docker]]
Sources¶
- 400-devops__06-Kubernetes__k8s-jenkins__k8s.md
- 400-devops-06-kubernetes-k8s-learning-linux-04-jenkins-readme.md