Skip to content

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].
  • 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]

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]