gitlab+jenkins+harbor+k8s部署微服务-准备工作

DevOps,字面意思是Development &Operations的缩写,也就是开发&运维。

一、Code阶段工具

在code阶段,我们需要将不同版本的代码存储到一个仓库中,常见的版本控制工具就是SVN或者Git,这里我们采用Git作为版本控制工具,GitLab作为远程仓库。

1.1 GitLab安装

前面有安装介绍

二、Build阶段工具

Maven作为项目的编译工具。具体安装Maven流程不做阐述,但是需要确保配置好Maven仓库私服以及JDK编译版本

这里只是作为运维侧部署业务,不涉及编译,所以此步骤跳过。

三、Operate阶段工具

部署过程采用k8s,安装Kubenetes,前面有安装介绍

四、Integrate工具

使用Jenkins工具持续集成、持续部署

Jenkins最主要的工作就是将GitLab上可以构建的工程代码拉取并且进行构建,再根据流程可以选择发布到测试环境或是生产环境。

一般是GitLab上的代码经过大量的测试后,确定发行版本,再发布到生产环境。

CI/CD可以理解为:

  • CI过程即是通过Jenkins将代码拉取、构建、制作镜像交给测试人员测试。

    • 持续集成:让软件代码可以持续的集成到主干上,并自动构建和测试。

  • CD过程即是通过Jenkins将打好标签的发行版本代码拉取、构建、制作镜像交给运维人员部署。

    • 持续交付:让经过持续集成的代码可以进行手动部署。

    • 持续部署:让可以持续交付的代码随时随地的自动化部署。

4.1  Jenkins安装

使用k8s方式安装,也可以使用docker方式安装,docker安装前面有介绍

 依次执行kubectl apply -f jenkins-pv.yaml,kubectl apply -f jenkins-pvc.yaml,kubectl apply -f jenkins-deploy.yaml,kubectl apply -f svc.yaml

#持久化存储,pv创建文件
[root@k8s-master1 devops]# cat jenkins-pv.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: jenkins-pv
  labels:
    type: sata
  namespace: my-ns-devops
spec:
  capacity:
    storage: 4Gi 
  accessModes:
    - ReadWriteMany 
  persistentVolumeReclaimPolicy: Retain
  nfs:
    path:  "/data/k8s/devops"   #作为Jenkins的映射路径,这个目录一定要有写权限,否则Jenkins容器启动失败,因为数据写不进去
    server: 192.168.198.144
    readOnly: false
#pvc创建文件
[root@k8s-master1 devops]# cat jenkins-pvc.yaml 
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: jenkins-pvc
  namespace: my-ns-devops
  labels:
    type: sata
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 4Gi
  selector:
    matchLabels:
      type: sata
#deployment创建文件
[root@k8s-master1 devops]# cat jenkins-deploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: jenkins
  name: jenkins
  namespace: my-ns-devops
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: jenkins
    spec:
      containers:
      - image: jenkins/jenkins:latest
        name: jenkins
        imagePullPolicy: Never
        ports:  
        - containerPort: 8080  #容器镜像
        - containerPort: 50000
        volumeMounts:     #容器挂载的pvc卷
        - name: jenkins-data    #自定义容器挂载卷的名称
          mountPath: /var/jenkins_home   #需要挂载出去的容器的路径,我的html文件放在了apps这个目录下
      volumes: #挂载卷
      - name: jenkins-data   #卷名称,需要和自定义容器挂载卷的名称一致
        persistentVolumeClaim:
          claimName: jenkins-pvc   #本地创建的pvc名称
      nodeSelector: 
        xm: jenkins
 #svc服务暴露    
[root@k8s-master1 devops]# cat svc.yaml 
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  name: jenkins
  namespace: my-ns-devops
spec:
  ports:
    - port: 8080
      name: http
      targetPort: 8080
      nodePort: 31561
    - port: 50000
      name: agent
      nodePort: 30561
      targetPort: 50000 
  selector:
    app: jenkins
  type: NodePort
status:
  loadBalancer: {}

 检查安装后的服务:

[root@k8s-master1 devops]# kubectl get all -n my-ns-devops 
NAME                           READY   STATUS    RESTARTS        AGE
pod/jenkins-59bc549859-fkprw   1/1     Running   2 (6m32s ago)   2d23h

NAME              TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                          AGE
service/jenkins   NodePort   10.107.57.212   <none>        8080:31561/TCP,50000:30561/TCP   10d

NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/jenkins   1/1     1            1           10d

NAME                                 DESIRED   CURRENT   READY   AGE
replicaset.apps/jenkins-59bc549859   1         1         1       10d

 网页登录Jenkins,安装插件。后续的步骤都是一样的。

 

 

Jenkins配置:

 在插件管理中搜索安装Git ParameterPublish Over SSH,Pipeline

 

 

 在全局配置中,配置git路径。使用maven的也需要配置maven路径和jdk路径。maven的使用依赖jdk

后续Jenkins连接Git仓库,需要使用到git插件,否则会提示连接失败

 在系统配置中,配置 Publish over SSH,这个服务是将Jenkins服务器从gitlab仓库拉取的代码通过ssh服务推送到指定的部署服务器上

安装了 Publish over SSH插件后,在系统配置中找到 Publish over SSH配置项,配置部署服务器的ip,服务器账号密码和要推送的目录位置

 

五、镜像仓库

部署本地镜像仓库harbor,前面有介绍

 至此,环境准备完成。

 

 

 

 

posted @ 2022-10-31 09:18  IT运维成长笔记  阅读(708)  评论(0编辑  收藏  举报