实战交付dubbo微服务到k8s_03部署Jenkins

根据规划 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 会自动重启。

安装过程会比较慢,有可能还会多次安装,最后安装好的结果是。