一、概念
官网:使用 Jenkins
1.原理
jenkins是一款开源的CI&CD软件,用于自动化各种任务,包括构建、测试和部署软件
2.pipline(流水线)和blueocean
pipline:操作过程和步骤,拉取代码、编译、测试、部署、镜像制作等操作blueocean是可以用来图形化管理(编写、查看、修改等)我们的流水线。是pipline的可视化UI。
二、使用docker安装部署
1.拉取镜像
[root@k8snode-1 ~]# docker pull jenkinsci/blueocean
2.启动容器
docker run \
--name sc-jenkins-1 \
-u root \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean
[root@k8snode-1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d824ac703b38 jenkinsci/blueocean "/sbin/tini -- /usr/…" 5 seconds ago Up 4 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp sc-jenkins-1
3.访问验证
4.解锁Jenkins
[root@k8snode-1 ~]# docker ps |grep -i jenkins
d824ac703b38 jenkinsci/blueocean "/sbin/tini -- /usr/…" 13 minutes ago Up 13 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp sc-jenkins-1
[root@k8snode-1 ~]# docker exec -it sc-jenkins-1 bash
#查看登陆密码
bash-5.1# cat /var/jenkins_home/secrets/initialAdminPassword
97ae6e914ab24130a8d9dfa12c07b952
5.安装相关插件
三、使用k8s安装部署
1.准备工作
官网:Kubernetes
1.1.下载git
[root@k8smaster ~]# yum install git -y
1.2.从代码仓库拉取相关文件
[root@k8smaster ~]# git clone https://github.com/scriptcamp/kubernetes-jenkins
[root@k8smaster kubernetes-jenkins]# ls
deployment.yaml namespace.yaml serviceAccount.yaml service.yaml volume.yaml
2.创建相关命名空间
[root@k8smaster kubernetes-jenkins]# kubectl apply -f namespace.yaml
namespace/devops-tools created
[root@k8smaster kubernetes-jenkins]# kubectl get ns
NAME STATUS AGE
default Active 105d
devops-tools Active 7s
3.创建服务账号绑定集群角色
[root@k8smaster kubernetes-jenkins]# kubectl apply -f serviceAccount.yaml
clusterrole.rbac.authorization.k8s.io/jenkins-admin created
serviceaccount/jenkins-admin created
clusterrolebinding.rbac.authorization.k8s.io/jenkins-admin created
4.创建卷(存储数据)
4.1.查看节点信息
[root@k8smaster kubernetes-jenkins]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8smaster Ready control-plane,master 105d v1.20.6
k8snode-1 Ready worker 105d v1.20.6
k8snode-2 Ready worker 104d v1.20.6
4.2.修改volume.yaml 文件,改成自己的主机名
4.3.创建卷
[root@k8smaster kubernetes-jenkins]# kubectl apply -f volume.yaml
storageclass.storage.k8s.io/local-storage created
persistentvolume/jenkins-pv-volume created
persistentvolumeclaim/jenkins-pv-claim created
5.部署Jenkins
建议先删除之前使用docker容器安装的jenkins
[root@k8snode-1 ~]# docker stop sc-jenkins-1
sc-jenkins-1
[root@k8smaster kubernetes-jenkins]# kubectl apply -f deployment.yaml
deployment.apps/jenkins created
6.启动服务发布Jenkins的pod
[root@k8smaster kubernetes-jenkins]# kubectl apply -f service.yaml
service/jenkins-service created
[root@k8smaster kubernetes-jenkins]# kubectl get svc -n devops-tools
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
jenkins-service NodePort 10.108.82.214 <none> 8080:32000/TCP 25s
7.访问验证
可以访问k8s集群中的任何一台机器