首页 > 其他分享 >gitlab+jenkins+harbor+k8s部署微服务-准备工作

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

时间:2022-10-31 09:34:36浏览次数:91  
标签:name harbor gitlab devops yaml pvc jenkins 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"
    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

 

 至此,环境准备完成。

 

 

 

 

标签:name,harbor,gitlab,devops,yaml,pvc,jenkins,k8s
From: https://www.cnblogs.com/xmwan/p/16843092.html

相关文章

  • Jenkins Pipeline
    内置支持片段生成器:http://localhost:8080/pipeline-syntax/ConceptJenkinsPipelineisasuiteofpluginswhichsupportsimplementingandintegratingcontinuousdel......
  • Jenkins Plugin Developer Guide
    Plugintutorial​​Plugintutorial​​重要接口ExtensionPoint&Describable:apluginmaysimplyimplementextensionpoints,[email protected]......
  • Jenkins Kubernetes Plugin
    JenkinsKubernetesPlugintorundynamicagentsinaKubernetescluster.BasedontheScalingDockerwithKubernetesarticle,automatesthescalingofJenkinsag......
  • Harbor的安装
    harbor简介:Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,由vmware开源,在DockerRegistry的基础至上添加了一些企业必需的功能特性,例如安全认证、镜像扫描......
  • Jenkins pipeline Git 检出的 Step
    在Jenkins中,可以使用下面的定义来检出需要编译的代码。stage("PullSourceCode"){steps{gitbranch:'main',credentialsId:'d8a95129-......
  • Jenkins配置JDK和Maven
    一、进入全局工具配置   二、新增JDK      三、登录oracle账号密码账号密码已经给你们准备好了:账号:[email protected]密码:Oracle123   ......
  • war包形式安装jenkins
    (1)下载war包  输入命令:java-jarjenkins.war--httpPort=8080,更改端口  重新登录之后,输入密码创建用户等完成设置 (2)结合Tomcat安装:  将jenkins.war放在tom......
  • centos7安装gitlab
    centos7安装gitlabgitlab下载地址 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.7.8-ce.0.el7.x86_64.rpm 1、安装相关依赖yum-yinstal......
  • jenkins部署项目
    后端jar方式打包PACKAGE_NAME=cloud-eureka.jar#归档的包名#上传云存储python/home/shell/upload_source_package.py$JOB_BASE_NAME$GIT_COMMIT$WORKSPACE/t......
  • centos中使用docker部署jenkins并启动selenium UI自动化测试任务
    一、centos中使用docker部署jenkins1、命令:dockersearchjenkins,从DockerHub查找镜像,确保镜像存在2、命令:dockerpulljenkins/jenkins,拉取镜像注:如果拉取失败,可......