1. 项目目标
(1)熟悉使用k8s环境搭建Jenkins
(2)熟练应用Jenkins基本配置
2. 项目准备
2.1. 规划节点
主机名 | 主机IP | 节点规划 |
k8s-master | 10.0.1.1 | kube_master |
k8s-node1 | 10.0.1.2 | kube_node |
k8s-node2 | 10.0.1.3 | kube_node |
2.2. 基础准备
系统镜像:CentOS 7.9
Jenkins镜像:
docker pull jenkins/jenkins
环境准备:kubernetes环境准备,可以参考以下内容
3. 项目实施
3.1. Jenkins在k8s上部署
(1)安装Jenkins
- 新建命名空间:
kubectl create ns devops
- 编写Jenkins资源清单文件:
vim jenkins-deploy.yaml
apiVersion: v1
kind: Service
metadata:
name: jenkins
labels:
app: jenkins
spec:
type: NodePort
ports:
- name: http
port: 8080
targetPort: 8080
nodePort: 30880
- name: agent
port: 50000
targetPort: agent
nodePort: 30850
selector:
app: jenkins
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins
labels:
app: jenkins
spec:
selector:
matchLabels:
app: jenkins
template:
metadata:
labels:
app: jenkins
spec:
serviceAccountName: jenkins-admin
containers:
- name: jenkins
image: jenkins/jenkins:latest
imagePullPolicy: IfNotPresent
securityContext:
runAsUser: 0
privileged: true
ports:
- name: http
containerPort: 8080
volumeMounts:
- mountPath: /var/jenkins_home
name: jenkinshome
- mountPath: /usr/bin/docker
name: docker
- mountPath: /var/run/docker.sock
name: dockersock
- mountPath: /usr/bin/kubectl
name: kubectl
- mountPath: /root/.kube
name: kubeconfig
volumes:
- name: jenkinshome
hostPath:
path: /home/jenkins_home
- name: docker
hostPath:
path: /usr/bin/docker
- name: dockersock
hostPath:
path: /var/run/docker.sock
- name: kubectl
hostPath:
path: /usr/bin/kubectl
- name: kubeconfig
hostPath:
path: /root/.kube
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: jenkinshome
annotations:
volume.beta.kubernetes.io/storage-class: local-path
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1024Mi
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: jenkins-admin
labels:
name: jenkins
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: jenkins-admin
labels:
name: jenkins
subjects:
- kind: ServiceAccount
name: jenkins-admin
namespace: default
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
- 部署Jenkins:
kubectl -n devops apply -f jenkins-deploy.yaml
- 查看Pod:
kubectl -n devops get pods
(2)访问Jenkins
- 查看Jenkins Service端口:
kubectl -n devops get svc
在Web端使用浏览器访问Jenkins(http://ip:30880)
- 获取Jenkins密码:
kubectl -n devops exec deploy/jenkins -- cat /var/jenkins_home/secrets/initialAdminPassword
ec64ed4c8773455392d392abefef53e1
输入密码后单击“继续”按钮。
- 安装插件,安装不成功也没关系。
- 创建用户
3.2. Jenkins基本使用
- 安装成功
- 更新版本
更新完成后重启Jenkins。
4. 项目总结
本博客使用kubernetes环境搭建了Jenkins,并进行基本配置。