9.实战交付一套dubbo微服务到k8s集群(2)之Jenkins部署

1.下载Jenkins镜像打包上传harbor上

[root@hdss7-200 ~]#  docker pull jenkins/jenkins:2.190.3
[root@hdss7-200 ~]# docker images |grep jenkins
[root@hdss7-200 ~]# docker tag 22b8b9a84dbe harbor.fx.com/public/jenkins:v2.190.3
[root@hdss7-200 ~]# docker push harbor.fx.com/public/jenkins:v2.190.3

2.自定义Dockerfile文件

[root@hdss7-200 ~]# mkdir -p /data/dockerfile/jenkins && cd /data/dockerfile/jenkins/
[root@hdss7-200 ~]# vim /data/dockerfile/jenkins/Dockerfile
FROM harbor.fx.com/public/jenkins:v2.190.3
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
  • 设置容器内的时区
  • 将ssh私钥加入(使用git拉代码时要用到,配对的公钥应配置在gitlab中)
  • 加入了登录自建harbor仓库的config文件
  • 修改了ssh客户端的
  • 安装一个docker的客户端

3.生成ssh密钥对

[root@hdss7-200 ~]# ssh-keygen -t rsa -b 2048 -C "fangxing1001@163.com" -N "" -f /root/.ssh/id_rsa

 4.将dockerfile文件需要的文件复制到jenkins目录

[root@hdss7-200 ~]# cd /data/dockerfile/jenkins/
[root@hdss7-200 jenkins]# cp /root/.ssh/id_rsa .
[root@hdss7-200 jenkins]# cp /root/.docker/config.json .
[root@hdss7-200 jenkins]# curl -fsSL get.docker.com -o get-docker.sh
[root@hdss7-200 jenkins]# chmod +x get-docker.sh

5.在harbor私有仓库中创建存放jenkin的私有镜像

6.制作自定义镜像并推送到harbor仓库

[root@hdss7-200 ~]# cd /data/dockerfile/jenkins/
[root@hdss7-200 ~]# docker build . -t harbor.fx.com/infra/jenkins:v2.190.3
[root@hdss7-200 ~]# docker push harbor.od.com/infra/jenkins:v2.190.3

7.创建保存jenkins目录

[root@hdss7-200 ~]# mkdir -p /data/k8s-yaml/jenkins
[root@hdss7-200 ~]# mkdir -p /data/nfs-volume/jenkins_home
[root@hdss7-200 ~]# cd /data/k8s-yaml/jenkins/

8.创建资源配置清单

Deployment.yaml 

[root@hdss7-200 jenkins]# vim Deployment.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.host.com
          path: /data/nfs-volume/jenkins_home
      - name: docker
        hostPath: 
          path: /run/docker.sock
          type: ''
      containers:
      - name: jenkins
        image: harbor.fx.com/infra/jenkins:v2.190.3
        ports:
        - containerPort: 8080
          protocol: TCP
        env:
        - name: JAVA_OPTS
          value: -Xmx512m -Xms512m
        resources:
          limits: 
            cpu: 500m
            memory: 1Gi
          requests: 
            cpu: 500m
            memory: 1Gi
        volumeMounts:
        - name: data
          mountPath: /var/jenkins_home
        - name: docker
          mountPath: /run/docker.sock
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        imagePullPolicy: IfNotPresent
      imagePullSecrets:
      - name: harbor
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      securityContext: 
        runAsUser: 0
      schedulerName: default-scheduler
  strategy:
    type: RollingUpdate
    rollingUpdate: 
      maxUnavailable: 1
      maxSurge: 1
  revisionHistoryLimit: 7
  progressDeadlineSeconds: 600

Service.yaml

[root@hdss7-200 jenkins]# vim Service.yaml 
kind: Service
apiVersion: v1
metadata:
  name: jenkins
  namespace: infra
spec:
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080
  selector:
    app: jenkins
  type: ClusterIP
  sessionAffinity: None

Ingress.yaml

[root@hdss7-200 jenkins]# vim Ingress.yaml 
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: jenkins
  namespace: infra
spec:
  rules:
  - host: jenkins.fx.com
    http:
      paths:
      - path: /
        backend:
          serviceName: jenkins
          servicePort: 80

9.部署ntf服务

[root@hdss7-200 ~]# yum -y install nfs-utils
[root@hdss7-200 ~]# vim /etc/exports
/data/nfs-volume 10.4.7.0/24(rw,no_root_squash)
[root@hdss7-200 ~]# mkdir -p /data/nfs-volume
[root@hdss7-200 ~]# systemctl start nfs && systemctl enable nfs

10.为拉私有仓库私有镜像创建一个secret

[root@hdss7-21 ~]# kubectl create ns infra
[root@hdss7-21 ~]# kubectl create secret docker-registry harbor --docker-server=harbor.fx.com --docker-username=admin --docker-password=Harbor12345 -n infra
[root@hdss7-21 ~]# kubectl get secret -n infra

11.应用Jenkins资源配置清单

[root@hdss7-21 ~]# kubectl apply -f http://k8s-yaml.fx.com/jenkins/Deployment.yaml
[root@hdss7-21 ~]# kubectl apply -f http://k8s-yaml.fx.com/jenkins/Service.yaml
[root@hdss7-21 ~]# kubectl apply -f http://k8s-yaml.fx.com/jenkins/Ingress..yaml

12.添加解析域名jenkins.fx.com

[root@hdss7-11 ~]# vim /var/named/fx.com.zone 
$ORIGIN fx.com.
$TTL 600        ; 10 minutes
@               IN SOA  dns.fx.com. dnsadmin.fx.com. (
                        2020061011  ; serial
                         10800      ; refresh (3 hours)
                         900        ; retry (15 minutes)
                         604800     ; expire (1 week)
                         86400      ; minimum (1 day)
                         )
                        NS      dns.fx.com.
$TTL 60 ; 1 minute
dns             A       10.4.7.11
harbor          A       10.4.7.200
k8s-yaml        A       10.4.7.200
traefik         A       10.4.7.10
dashboard       A       10.4.7.10
zk1             A       10.4.7.11
zk2             A       10.4.7.12
zk3             A       10.4.7.21
jenkins         A       10.4.7.10
[root@hdss7-11 ~]# systemctl restart named
[root@hdss7-11 ~]# dig -t A jenkins.fx.com @10.4.7.11 +short

13.在浏览器中访问jenkins

14.查看jenkins的登录密码

[root@hdss7-21 ~]# kubectl logs jenkins-7c5fcfbfd5-kz8hp -n infra
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

04e1fec0d9db4283b6076532f857f137

This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

15.登录jenkins后操作及设置

 

16.配置插件加速地址

 

地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

 

 

原文地址:https://www.cnblogs.com/fxxy/p/13095456.html