背景
目前在开发过程中,每次更新测试环境需要手动执行一个脚本:pull最新的代码、build jar、build docker image最后再基于最新的docker image启动容器。
于是想“偷个懒”,将这些步骤自动化起来:当指定分支收到push后,触发打包、重启docker container.
环境
- 服务器: k8s集群,有N个node
- 仓库: Gitee
- 部署: 部署在集群中的某个node中
一、创建namespace
kubectl create ns jenkins
二、创建Jenkins Deployment & Service
准备配置文件:jenkins.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: jenkins
name: jenkins-deployment
spec:
replicas: 1
selector:
matchLabels:
app: jenkins
template:
metadata:
labels:
app: jenkins
spec:
nodeName: Your_node_name # 可选,如果不挂载到本地目录,参考文末引用文章
containers:
- name: jenkins
image: jenkinsci/blueocean:latest
ports:
- containerPort: 8080
volumeMounts:
- name: jenkins-home
mountPath: /var/jenkins_home
- name: docker-sock
mountPath: /var/run/docker.sock
volumes:
- name: jenkins-home
hostPath:
path: /your/local/file/path # update me
type: Directory
- name: docker-sock # 声明挂载docker
hostPath:
path: /var/run/docker.sock
type: Socket
---
apiVersion: v1
kind: Service
metadata:
namespace: jenkins
name: jenkins
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
nodePort: 30005 # 在本机上暴露Jenkins对外服务端口
selector:
app: jenkins
创建 Deployment & Service:
kubectl create -f jenkins.yaml
注:
- 这里准备把Jenkins的数据映射到host目录,所以使用
hostPath
挂载/var/jenkins_home
,于是在指定的node上运行pod - 由于项目需要打包用到docker,所以将
/var/run/docker.sock
通过Socket
方式挂载到容器(docker in docker) - 在Jenkins的pod中执行
docker ps -a
遇到/var/run/docker.sock: connect: permission denied
错误,此时回到host执行:chmod 0777 /var/run/docker.sock
赋予权限
三、登录配置
使用浏览器打开:
http://your_k8s_node_ip:port 如:http://127.0.0.1:30005
这里要求输入初始密码:
登录pod的容器,查看对应的密码。图片中告知的路径:/var/lib/jenkins/secrets/initialAdminPassword
# 获取node 名称
[root@cc jenkins]# kubectl get po -n jenkins
NAME READY STATUS RESTARTS AGE
jenkins-deployment-5db55f9db-7mrk2 1/1 Running 4 4d23h
# 进入pod
[root@cc jenkins]# kubectl exec -it jenkins-deployment-5db55f9db-7mrk2 -c jenkins /bin/bash -n jenkins
# cat 密码
[root@cc jenkins]# cat /var/lib/jenkins/secrets/initialAdminPassword
******
最后,按照推荐进行安装插件即可。
参考:
1、基于k8s安装Jenkins
https://blog.csdn.net/qq_38942551/article/details/107769120
评论 (0)