单机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

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

成功之后通过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

看到jdk的路径,在Jenkins中填入配置即可,去掉最后面的/bin/java

配置git
与jdk同理
which git


配置maven
/opt/maven/bin/mvn -version


可以构建一个pipeline验证maven配置
输入以下脚本并执行
pipeline {
agent any
tools {
maven 'Maven-3.9.6' // 你的Maven名称
}
stages {
stage('Verify Settings') {
steps {
sh 'mvn help:effective-settings'
}
}
}
}
结果

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