Skip to content

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 to true^[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 8080 targeting port 8080 (named http)^[400-devops__06-Kubernetes__k8s-jenkins__k8s.md]
    • Port 50000 targeting port 50000 (named agent)^[400-devops__06-Kubernetes__k8s-jenkins__k8s.md]

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.

Sources

  • 400-devops__06-Kubernetes__k8s-jenkins__k8s.md
  • 400-devops-06-kubernetes-k8s-learning-linux-04-jenkins-readme.md