根据规划 jenkins 要用docker 来跑 jenkins 官网:https://www.jenkins.io/download/ 准备镜像 在运维主机(10.4.7.200)上面下载jenkins 2.190.3 docker pull jenkins/jenkins:2.204.6 docker images|grep jenkins docker tag ee9997ced797 harbor.od.com/public/jenkins:v2.204.6 docker login harbor.od.com docker push harbor.od.com/public/jenkins:v2.204.6官方的jenkins docker 镜像不能直接使用,还需要做一些配置 自定义Dockerfile 文件 在 hdss7-200.host.com(10.4.7.200)上操作 创建ssh密钥对: ssh-keygen -t rsa -b 2048 -C "345382183@qq.com" -N "" -f /root/.ssh/id_rsa 把公钥添加到gitee (代码仓库)https://gitee.com/ ##也可以是内网的gitlab
![]()
################ 在 hdss7-200.host.com(10.4.7.200)上操作 ##### 对前面从官网下载的Jenkins镜像进行重新编译,需要修改一些地方 mkdir -p /data/dockerfile/jenkins && cd /data/dockerfile/jenkins cp /root/.ssh/id_rsa . cp /root/.docker/config.json . curl -fsSL get.docker.com -o get-docker.sh chmod +x get-docker.sh ### #+++ http://106.12.88.74/softdown/k8s1.5/get-docker.sh ######+++++++++ vim Dockerfile FROM harbor.od.com/public/jenkins:v2.204.6 USER 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 ###########++++++++++ 这个Dockerfile 里面我们主要做了以下几件事 设置了容器启动时使用的用户为root 设置容器内的时区为UTC+8 加入了ssh 私钥 (拉取代码的两种方式:基于http和基于ssh) 加入登录harbor仓库的config文件 修改了ssh客户端的配置,不去验证指纹了,使用ssh连接 git 中心仓库的时候,不会因为你的解析变到了另外的一个IP,每次都会让你输入yes 安装了一个 docker客户端 ++++++++++++############ 登录harbor.od.com 创建一个infra 的私有仓库 ##把原有的从官网下载的jenkins镜像进行修改,再编译成新的镜像 docker build . -t harbor.od.com/infra/jenkins:v2.204.6 ##编译时间 20分钟左右 ## 把重新编译好的镜像,上传到harbor上面 docker push harbor.od.com/infra/jenkins:v2.204.6 ###### 测试jenkins镜像 ssh 连接我们的代码仓库: docker run --rm harbor.od.com/infra/jenkins:v2.204.6 ssh -i /root/.ssh/id_rsa -T git@gitee.com
#++++++++ 创建kubernetes命名空间: 在任意一个运算节点上: kubectl create namespace infra 简写成 kubectl create ns infra
kubectl create secret docker-registry harbor --docker-server=harbor.od.com --docker-username=admin --docker-password=Harbor12345 -n infra
准备共享存储:所有的运算节点和运维主机上部署 [ 10.4.7.21 10.4.7.22 10.4.7200 ] yum install nfs-utils -y 配置NFS服务:在10.4.7.200 上面操作 mkdir -p /data/nfs-volume vi /etc/exports
systemctl start nfs systemctl enable nfs ++++ 运算节点上面的nfs不需要启动,只需要安装了nfs-utils就可以 创建jenkins 资源配置清单,在10.4.7.200上面操作 mkdir -p /data/k8s-yaml/jenkins && cd /data/k8s-yaml/jenkins vim dp.yaml kind: Deployment apiVersion: extensions/v1beta1 metadata: name: jenkins namespace: infra labels: name: jenkins spec: replicas: 1 selector: matchLabels: name: jenkins template: metadata: labels: app: jenkins name: jenkins spec: volumes: - name: data nfs: server: hdss7-200 path: /data/nfs-volume/jenkins_home - name: docker hostPath: path: /run/docker.sock type: '' containers: - name: jenkins image: harbor.od.com/infra/jenkins:v2.204.6 imagePullPolicy: IfNotPresent ports: - containerPort: 8080 protocol: TCP env: - name: JAVA_OPTS value: -Xmx512m -Xms512m volumeMounts: - name: data mountPath: /var/jenkins_home - name: docker mountPath: /run/docker.sock imagePullSecrets: - name: harbor securityContext: runAsUser: 0 strategy: type: RollingUpdate rollingUpdate: maxUnavailable: 1 maxSurge: 1 revisionHistoryLimit: 7 progressDeadlineSeconds: 600 #########++++++++ vim svc.yaml kind: Service apiVersion: v1 metadata: name: jenkins namespace: infra spec: ports: - protocol: TCP port: 80 targetPort: 8080 selector: app: jenkins
vim ingress.yaml kind: Ingress apiVersion: extensions/v1beta1 metadata: name: jenkins namespace: infra spec: rules: - host: jenkins.od.com http: paths: - path: / backend: serviceName: jenkins servicePort: 80
mkdir -p /data/nfs-volume/jenkins_home 应用资源配置清单,[ 任意运算节点 上面操作 ] kubectl apply -f http://k8s-yaml.od.com/jenkins/dp.yaml kubectl apply -f http://k8s-yaml.od.com/jenkins/svc.yaml kubectl apply -f http://k8s-yaml.od.com/jenkins/ingress.yaml
![]()
dashboard 查看
查看日志:(需要等一下,jenkins启动比较慢)
添加域名解析:在10.4.7.11 上面操作 vim /var/named/od.com.zone
systemctl restart named dig -t A jenkins.od.com @10.4.7.11 +short
浏览器访问 jenkins.od.com
出现安装插件窗口,可以直接点右上角的 X 关掉,
![]()
默认的密码还是 9aeb8230caf3430680b929642c9b831d 登录jenkins后,可以修改。
![]()
本次实验jenkins密码修改为 admin123 ++++++##### jenkins 安全设置:
![]()
![]()
![]()
![]()
Jenkins安装插件: 跟流水线有关的插件, blue ocean
![]()
![]()
等待插件下载安装完成,
jenkins 会自动重启。 安装过程会比较慢,有可能还会多次安装,最后安装好的结果是。
![]()