一:部署jenkins
jenkins官网:https://jenkins.io/download/
jenkins镜像:https://hub.docker.com/r/jenkins/jenkins
1:在运维主机(192.168.6.96)上下载官网稳定版镜像
[root@k8s-6-96 ~]# docker pull jenkins/jenkins:2.190.3[root@k8s-6-96 ~]# docker images |grep jenkins
jenkins/jenkins 2.190.3 22b8b9a84dbe 6months ago 568MB
[root@k8s-6-96 ~]# docker tag 22b8b9a84dbe harbor.auth.com/public/jenkins:v2.190.3[root@k8s-6-96 ~]# docker push harbor.auth.com/public/jenkins:v2.190.3
2:制作自定义镜像
2.1:生成ssh秘钥对,用于拉取git私有仓库代码,需要使用ssh密钥
[root@k8s-6-96 ~]# ssh-keygen -t rsa -b 2048 -C "117586xxx@qq.com" -N "" -f /root/.ssh/id_rsa
// 执行完成会在/root/.ssh/ 目录下生成一对密钥
2.2:准备get-docker.sh文件,用于在jenkins容器中使用docker客户端,执行 build
[root@k8s-6-96 ~]# curl -fsSL get.docker.com -o get-docker.sh
[root@k8s-6-96 ~]# chmod +x get-docker.sh
2.3:准备config.json文件,用于把docker镜像push到镜像仓库
[root@k8s-6-96 ~]# cat /root/.docker/config.json
{
"auths": {
"harbor.od.com": {
"auth": "YWRtaW46SGFyYm9yMTIzNDU="}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/19.03.4 (linux)"}
2.4:创建目录并准备Dockerfile
[root@k8s-6-96 ~]# cd /data/dockerfile/[root@k8s-6-96dockerfile]# mkdir jenkins
[root@k8s-6-96dockerfile]# cd jenkins
[root@k8s-6-96jenkins]# vi Dockerfile
FROM harbor.od.com/public/jenkins:v2.190.3USER root
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&\
echo 'Asia/Shanghai' >/etc/timezone
ADD id_rsa /root/.ssh/id_rsa
ADD config.json /root/.docker/config.json
ADD get-docker.sh /get-docker.sh
RUN echo " StrictHostKeyChecking no" >> /etc/ssh/ssh_config &&\
/get-docker.sh --mirror=Aliyun
这个Dockerfile里我们主要做了以下几件事:
设置容器用户为root
设置容器内的时区
将创建的ssh私钥加入(使用git拉代码是要用,配对的公钥配置在gitlab中)
加入了登陆自建harbor仓库的config文件
修改了ssh客户端的配置,不做指纹验证
安装一个docker的客户端
2.5:制作自定义镜像
//准备所需文件,拷贝至/data/dockerfile/jenkins
[root@k8s-6-96 ~]# cd /data/dockerfile/jenkins
[root@k8s-6-96 jenkins]# cp /root/.ssh/id_rsa .
[root@k8s-6-96 jenkins]# cp /root/.docker/config.json .
[root@k8s-6-96 jenkins]# cp /root/get-docker.sh .
// 查看目录下的文件
[root@k8s-6-96jenkins]# ll
total 32
-rw------- 1 root root 151 Nov 30 18:35config.json
-rw-r--r-- 1 root root 349 Nov 30 18:31Dockerfile
-rwxr-xr-x 1 root root 13216 Nov 30 18:31 get-docker.sh
-rw------- 1 root root 1675 Nov 30 18:35id_rsa
//执行build
[root@k8s-6-96 jenkins]# docker build . -t harbor.auth.com/infra/jenkins:v2.190.3
// 查看镜像
[root@k8s-6-96 jenkins]# docker images | grep jenkins
2.6:在harbor中创建infra仓库,并设置为私有
2.7:在任意运算节点上创建kubernetes名称空间并在此创建secret
[root@k8s-6-94 ~]# kubectl create namespaceinfra
[root@k8s-6-94 ~]# kubectl create secret docker-registry harbor --docker-server=harbor.auth.com --docker-username=admin --docker-password=Harbor12345 -n infra
2.8:在运维主机上推送镜像
[root@k8s-6-96 jenkins]# docker push harbor.auth.com/infra/jenkins:v2.190.3
3:准备共享存储,原因是:jenkins中数据需要进行持久化存储,使用nfs共享存储方式
3.1:需要在运维主机(192.168.6.96)上 和 运算节点(192.168.6.94,192.168.6.95)上安装nfs
注意:运算节点只需要安装nfs引擎,不需要做任何配置
<