Jenkins on Kubernetes Deployment¶
This document outlines the configuration for deploying Jenkins within a Kubernetes cluster. The setup utilizes a standard [[Deployment]] for the Jenkins application, a [[Service]] for network exposure, and an Ingress for routing external traffic^[400-devops-06-kubernetes-k8s-jenkins-k8s.md].
Deployment Configuration¶
The Jenkins instance is managed via a Deployment named jenkins-depl^[400-devops-06-kubernetes-k8s-jenkins-k8s.md]. It utilizes the jenkins/jenkins:lts-alpine Docker image^[400-devops-06-kubernetes-k8s-jenkins-k8s.md]. To ensure stability and performance, the container is configured with specific resource limits and environment variables^[400-devops-06-kubernetes-k8s-jenkins-k8s.md].
Container Resources and Settings¶
The container is configured with specific memory and CPU constraints to manage resource usage effectively^[400-devops-06-kubernetes-k8s-jenkins-k8s.md].
- Resource Limits:
- CPU: 1200m
- Memory: 2Gi^[400-devops-06-kubernetes-k8s-jenkins-k8s.md]
- Resource Requests:
- CPU: 1000m
- Memory: 1Gi^[400-devops-06-kubernetes-k8s-jenkins-k8s.md]
Environment Variables¶
Key environment variables are defined to customize the JVM runtime and system behavior^[400-devops-06-kubernetes-k8s-jenkins-k8s.md].
- JAVA_OPTS:
-Xms256m -Xmx1024m -Duser.timezone=Asia/Shanghai- Sets the initial heap size (
-Xms) to 256MB and the maximum heap size (-Xmx) to 1024MB. - Configures the timezone to Asia/Shanghai^[400-devops-06-kubernetes-k8s-jenkins-k8s.md].
- Sets the initial heap size (
- TRY_UPGRADE_IF_NO_MARKER:
true- Instructs the Jenkins initialization logic to proceed with an upgrade if no specific upgrade marker file is found^[400-devops-06-kubernetes-k8s-jenkins-k8s.md].
Networking¶
Service¶
A Service named jenkins-svc is created to expose the Jenkins application^[400-devops-06-kubernetes-k8s-jenkins-k8s.md]. It targets pods with the label app: jenkins and listens on two ports^[400-devops-06-kubernetes-k8s-jenkins-k8s.md]:
- Port 8080: Used for the main Jenkins web interface^[400-devops-06-kubernetes-k8s-jenkins-k8s.md].
- Port 50000: Used for communication with Jenkins agents^[400-devops-06-kubernetes-k8s-jenkins-k8s.md].
Ingress¶
An Ingress resource named jenkins-ing is configured to route external HTTP traffic to the Jenkins service^[400-devops-06-kubernetes-k8s-jenkins-k8s.md].
- Ingress Class:
nginx^[400-devops-06-kubernetes-k8s-jenkins-k8s.md] - Host:
yudady.gq^[400-devops-06-kubernetes-k8s-jenkins-k8s.md] - Path:
/(Prefix matching)^[400-devops-06-kubernetes-k8s-jenkins-k8s.md]
Recommended Plugins¶
The source documentation suggests installing a specific set of plugins to ensure compatibility with the described environment and containerized workflows^[400-devops-06-kubernetes-k8s-jenkins-k8s.md]:
- Docker: For building and publishing Docker images.
- Docker-pip: Likely related to Python pipeline integration or Docker utilities.
- Blue Ocean: Provides a modern, visual user interface for Jenkins.
- Kubernetes (k8s): Allows Jenkins to dynamically scale agent pods within the Kubernetes cluster^[400-devops-06-kubernetes-k8s-jenkins-k8s.md].
Sources¶
^[400-devops-06-kubernetes-k8s-jenkins-k8s.md]