单机k8s集群部署——Jenkins篇

Jenkins 是一个基于Java开发的持续集成工具,用于监控持续重复的工作,可以自动化各种任务,包括构建、测试、部署。
k8s的部署见往期文章:
《ubuntu22.04部署单机k8s》:https://www.cnblogs.com/OM-dyc/articles/18957330
《Ubuntu 20.04 下单机k8s的网络部署》:https://www.cnblogs.com/OM-dyc/articles/18959567

前置准备:
安装jdk并配置系统环境变量
maven的下载和安装

1.jdk
下载

sudo apt update
sudo apt install openjdk-17-jdk -y
java -version

配置环境变量

# JDK环境变量
export 'JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' | sudo tee -a /etc/profile # OpenJDK自动安装路径(Ubuntu)
export 'PATH=$JAVA_HOME/bin:$PATH' | sudo tee -a /etc/profile

更新一下配置文件
source /etc/profile
验证配置

java -version
echo $JAVA_HOME
which java
# 输出应指向$JAVA_HOME/bin/java

2.maven
下载文件

wget https://archive.apache.org/dist/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz

解压文件并配置环境变量

# 解压文件
sudo tar -zxvf apache-maven-3.9.6-bin.tar.gz -C /opt/

# 配置环境变量
echo 'export MAVEN_HOME=/opt/apache-maven-3.9.6' | sudo tee -a /etc/profile
echo 'export PATH=$PATH:$MAVEN_HOME/bin' | sudo tee -a /etc/profile
source /etc/profile

验证配置
mvn -version
微信截图_20250708160550

3.部署Jenkins
将所有的配置,包括,pv,pvc,service,deployment的配置全写在了这个文件中
vim jenkins-deployment.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: jenkins

---

# 静态PV定义
apiVersion: v1
kind: PersistentVolume
metadata:
  name: jenkins-pv
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage  # 指定存储类名称
  hostPath:
    path: /data/jenkins  # 宿主机存储路径
    type: DirectoryOrCreate  # 如果目录不存在则创建

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: jenkins-pvc
  namespace: jenkins
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: local-storage  # 必须与PV的存储类匹配

---

apiVersion: v1
kind: Service
metadata:
  name: jenkins-service
  namespace: jenkins
spec:
  type: NodePort
  ports:
    - port: 8080
      targetPort: 8080
      nodePort: 30000
      name: http
    - port: 50000
      targetPort: 50000
      name: jenkins-agent
  selector:
    app: jenkins

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins-deployment
  namespace: jenkins
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins
  template:
    metadata:
      labels:
        app: jenkins
    spec:
      securityContext:
        fsGroup: 1000
        runAsUser: 0
      containers:
        - name: jenkins
          image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/jenkins/jenkins:latest-jdk17
          ports:
            - containerPort: 8080
            - containerPort: 50000
          volumeMounts:
            - name: jenkins-home
              mountPath: /var/jenkins_home
            - name: maven-volume
              mountPath: /opt/maven
          resources:
            requests:
              memory: "512Mi"
              cpu: "500m"
            limits:
              memory: "2048Mi"
              cpu: "1000m"
      volumes:
        - name: jenkins-home
          persistentVolumeClaim:
            claimName: jenkins-pvc
        - name: maven-volume
          hostPath:
            path: /opt/apache-maven-3.9.6
            type: Directory

运行配置文件
kubectl apply -f jenkins-deployment.yaml
查看pod是否创建成功并处于running状态
kubectl get pod -n jenkins
微信截图_20250708161129
成功之后通过IP:30000端口访问Jenkins
管理员密码获取
kubectl exec -it <替换为你的Jenkins pod name> -n jenkins -- cat /var/jenkins_home/secrets/initialAdminPassword
后续选择安装推荐插件即可

配置jdk

进入Jenkins容器内部
kubectl exec -it -n jenkins <你的Jenkins pod name> bash
which java
微信截图_20250708161940
看到jdk的路径,在Jenkins中填入配置即可,去掉最后面的/bin/java
微信截图_20250708161910
配置git

与jdk同理
which git
微信截图_20250708162131
微信截图_20250708162151
配置maven

/opt/maven/bin/mvn -version
微信截图_20250708162449
微信截图_20250708162511
可以构建一个pipeline验证maven配置
输入以下脚本并执行

pipeline {
    agent any
    tools {
        maven 'Maven-3.9.6'  // 你的Maven名称
    }
    stages {
        stage('Verify Settings') {
            steps {
                sh 'mvn help:effective-settings' 
            }
        }
    }
}

结果

微信截图_20250708162757

到这里,我们的配置就结束了,但是Jenkins的配置远不止这些,还可以将gitlab与Jenkins进行配置连接,这个我们会在下篇文章来讲
如果你在配置过程中遇到任何问题,欢迎在评论区相互交流
我们下期再见
byebye~

posted @ 2025-07-08 16:32  努力成为OM大师  阅读(19)  评论(0)    收藏  举报