Jenkins部署以及基本使用

简介: Jenkins部署以及基本使用

目录

Jenkins部署

CI/CD工具

  • jenkins:能做CI,也能做CD 语法 groovy
  • gitlab-ci:执行器叫做gitlab-runner,流水线语法 yaml
  • tekton:CI工具,CNCF,在k8s中运行pod来实现流水线 ,语法 yaml
  • argo-cd:CD工具,在k8s中部署应用,语法:kustomize
  • argo-workflow:CI工具,在k8s中通过运行pod实现流水线,语法:yaml

1. 创建sa

sa就是service account

[root@master ~]# mkdir jenkins
[root@master ~]# cd jenkins
[root@master jenkins]# kubectl create ns devops
[root@master jenkins]# vim jenkins-sa.yaml
namespace/devops created
metadata:
  name: jenkins-admin
rules:
  - apiGroups: [""]
    resources: ["*"]
    verbs: ["*"]
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: jenkins-admin
  namespace: devops
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: jenkins-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: jenkins-admin
subjects:
- kind: ServiceAccount
  name: jenkins-admin
  namespace: devops

一定要先创建devops,如果你想部署在默认的命名空间下也是可以的,那就可以不创建的vops命名空间了

[root@master jenkins]# kubectl apply -f jenkins-sa.yaml 
clusterrole.rbac.authorization.k8s.io/jenkins-admin created
serviceaccount/jenkins-admin created
clusterrolebinding.rbac.authorization.k8s.io/jenkins-admin created

2. 创建pvc

直接创建pvc而没有创建pv是因为我采用的动态制备

[root@master jenkins]# vim jenkins-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: jenkins
  namespace: devops
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
[root@master jenkins]# kubectl apply -f jenkins-pvc.yaml

查看一下pvc是否创建好了

[root@master jenkins]# kubectl get pvc -n devops
NAME      STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
jenkins   Bound    pvc-131cc674-c33a-4d48-9a6a-e562374d4e0c   10Gi        RWO            csi-rbd-sc     7s

如果配置了动态制备而这里还是pending的话看一下sc是否设置为默认

3. 创建deployment

文件内容比较多

vim jenkins-deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: jenkins-server
name: jenkins-server
namespace: devops
spec:
replicas: 1
selector:
matchLabels:
app: jenkins-server
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: jenkins-server
spec:
volumes:
- name: jenkins-data
persistentVolumeClaim:
claimName: jenkins
serviceAccountName: jenkins-admin
containers:
- image: jenkins/jenkins
imagePullPolicy: IfNotPresent
name: jenkins
securityContext:
runAsUser: 0
volumeMounts:
- name: jenkins-data
mountPath: /var/jenkins_home
livenessProbe:
httpGet:
path: "/login"
port: 8080
initialDelaySeconds: 90
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
httpGet:
path: "/login"
port: 8080
initialDelaySeconds: 90
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
ports:
- name: http
containerPort: 8080
- name: tcp
containerPort: 50000
resources:
limits:
memory: "2Gi"
cpu: "1"
requests:
memory: "500Mi"
cpu: "0.5"
status: {}

创建deployment

[root@master jenkins]# kubectl apply -f jenkins-deoloy.yaml 
deployment.apps/jenkins-server created
[root@master jenkins]# kubectl get pods -n devops
NAME                              READY   STATUS             RESTARTS       AGE
jenkins-server-5db58f78dc-jqcqt   0/1     Running            0              34s

这里等待这个pod就绪就好了,因为是java进程,所以启动的有点慢

4. 创建service

[root@master jenkins]# vim jenkins-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: jenkins-svc
  namespace: devops
spec:
  selector:
    app: jenkins-server
type: NodePort
  ports:
    - name: http
      port: 8080
      targetPort: 8080
      nodePort: 32000
    - name: agent
      port: 50000
      targetPort: 50000
[root@master jenkins]# kubectl apply -f jenkins-svc.yaml 
service/jenkins-svc created

5. 登录jenkins

等待jenkins就绪之后就可以通过nodePort映射出来的32000端口来进行访问了

然后进入容器查看初始密码

[root@master jenkins]# kubectl exec -it -n devops jenkins-server-5db58f78dc-jqcqt -- bash
root@jenkins-server-5db58f78dc-jqcqt:/# cat /var/jenkins_home/secrets/initialAdminPassword
15953b138edd4f68a434c31603455a4e

输出的这一串就是密码了,拿着这个密码去登录

6. 简单配置jenkins

6.1 安装插件

我们登录之后会让我们安装插件,这个时候不要点击安装推荐的插件,因为他推荐的插件非常多,下载起来很慢的

我们现在安装2个插件就好了

  1. 点击无,取消所有默认选中的插件
  2. 安装git和中文插件

找不到可以直接在搜索栏里面去搜

6.2 配置用户

插件装完之后会让你创建第一个管理员用户

6.3 配置插件下载地址

默认插件是从国外下载,速度会有些许慢,我们可以讲下载地址改为国内

如果你的插件管理点进去就报错的话往后看,有解决方法

  1. 点击系统管理
  2. 插件管理
  3. 高级设置
  4. 将updateSite(升级站点)改为清华的源

6.3.1 页面操作

然后往下滑,最下面这里,如果你是英文就是UpdateSite

6.3.2 容器操作

在页面上改完之后还需要到容器内修改一个配置文件

[root@master jenkins]# kubectl exec -it  -n devops jenkins-server-55cfc6dbd8-dmpn8  -- bash 
# 进入jenkins的家目录
root@jenkins-server-55cfc6dbd8-dmpn8:/# cd /var/jenkins_home/updates/
root@jenkins-server-55cfc6dbd8-dmpn8:/var/jenkins_home/updates# ls
default.json  hudson.tasks.Maven.MavenInstaller

修改这个default.json

root@jenkins-server-55cfc6dbd8-dmpn8:/var/jenkins_home/updates# sed -i 's/https:\/\/updates.jenkins.io\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

6.3.3 重启jenkins

重启的话直接在url输入restart

等他重启完之后再进去插件管理的页面就可以正常的下载插件了

6.3.4 安装插件

按照自己的场景选择插件,我这里选择

  • git
  • 中文插件
  • kubernetes
  • pipeline

安装完插件之后是需要重启jenkins的,所以建议一次性安装完

6.3.5 常用插件

  • Git 拉取代码
  • SSH SSH 远程执行
  • Publish Over SSH
  • Gitlab gitlab插件
  • Maven 对 Maven 项目构建
  • NodeJs 对 NodeJs 项目构建
  • DingTalk 钉钉通知
  • Pipeline 流水线
  • Kubernetes 动态创建代理
  • simple theme 主题
  • Git Parameter 动态从 git 中获取所有分支
  • Managed Scripts 管理脚本插件
  • Deploy to container 热部署插件
  • Extended Choice Parameter 扩展参数构建
  • Role-based Authorization Strategy 权限管理
  • Localization: Chinese (Simplified) 简体中文
  • ansiColor 设置颜色
  • Conditional BuildStep 在pipeline中使用when
  • HTTP Request Plugin:执行http请求并返回响应体,详细用法: https://www.jenkins.io/doc/pipeline/steps/http_request/
  • Pipeline Utility Steps:pipeline中常用的一些工具集,如压缩与解压缩、创建文件、查找文件等;详细用法: https://www.jenkins.io/doc/pipeline/steps/pipeline-utility-steps/

Jenkins管理

1. 邮件配置

找到系统管理员邮件地址,前面的Jenkins Server是说明,后面尖括号里面写入邮箱

滑到最底下会有一个测试发送邮件

这里显示成功发送就没有问题了

密码那个地方并不是填你的邮箱的登录密码,而是需要去生成一个smtp的授权码

2. 凭据管理

jenkins的凭据有好几种

  1. 账号密码
  2. k8s的serviceAccount
  3. openShift的账号密码
  4. ssh的用户名密码
  5. ssh的用户名和私钥

因为Jenkins后期肯定是需要跟gitlab去做交互的,所以我们在这里添加一个gitlab用户的凭据

test用户需要在gitlab上存在

3. 任务测试

我们只是做个测试,选择自由风格的软件,名称随意

然后往下滑找到点击使用git

画框的地方如果报错的话,选择一下凭据之后报错就没了,前提是gitlab上存在这个用户,在这个高级里面可以指定分支

继续往下滑找到Build Step,新建一个shell类型的

我们点击保存,然后开始执行

jenkins就配置好了

本文来自博客园,作者:FuShudi,转载请注明原文链接:https://www.cnblogs.com/fsdstudy/p/18262434

分类: Euler , Euler / HCIE / CICD

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
6月前
|
Kubernetes jenkins 持续交付
Artifact Hub在Kubernetes中的应用:部署Jenkins的脚本整理
以上步骤断言清晰明确地描述了如何通过Artifact Hub 使用Helm图表来部署Kubernetes 中得Jenkis 实例,并且提供了相应得Shell 脚本作为执行指南. 这样不但能够帮助用户快速地进行操作, 同时也能够通过自定义参数来满足不同用户需求.
188 5
存储 jenkins 持续交付
831 2
|
7月前
|
jenkins Java 持续交付
使用 Jenkins 和 Spring Cloud 自动化微服务部署
随着单体应用逐渐被微服务架构取代,企业对快速发布、可扩展性和高可用性的需求日益增长。Jenkins 作为领先的持续集成与部署工具,结合 Spring Cloud 提供的云原生解决方案,能够有效简化微服务的开发、测试与部署流程。本文介绍了如何通过 Jenkins 实现微服务的自动化构建与部署,并结合 Spring Cloud 的配置管理、服务发现等功能,打造高效、稳定的微服务交付流程。
854 0
使用 Jenkins 和 Spring Cloud 自动化微服务部署
|
8月前
|
Java jenkins 应用服务中间件
结合Jenkins与Tomcat,实施Maven项目的自动构建和部署流程。
任何项目构建和部署的自动化流程,总离不开对各个环节精细把控与密切配合。涉及到源代码管理、构建工具、持续集成服务器以及最终的运行时环境的协调。通过上述简洁实用的步骤,可以实现Maven项目从源代码到运行状态的无缝过渡,进而提升软件开发的效率与质量。
440 0
|
jenkins Java Linux
Jenkins环境的部署及任务构建
以上就是Jenkins环境的部署及任务构建的全部内容。希望可以帮助你轻松上手Jenkins,让你的CI/CD之旅更加顺畅!
746 68
|
运维 jenkins Java
Jenkins 自动化局域网管控软件构建与部署流程
在企业局域网管理中,Jenkins 作为自动化工具,通过配置源码管理、构建及部署步骤,实现了高效、稳定的软件开发与部署流程,显著提升局域网管控软件的开发与运维效率。
309 5
|
监控 前端开发 jenkins
Jenkins 在前端项目持续部署中的应用,包括其原理、流程以及具体的实现方法
本文深入探讨了Jenkins在前端项目持续部署中的应用,涵盖其基本原理、流程及具体实现方法。首先介绍了Jenkins的基本概念及其在自动化任务中的作用,随后详细解析了从前端代码提交到生产环境部署的全过程,包括构建、测试、部署等关键步骤。最后,强调了持续部署中的代码质量控制、环境一致性、监控预警及安全管理等注意事项,旨在帮助开发者高效、安全地实施持续部署。
404 5
|
运维 jenkins Java
Jenkins在持续集成与持续部署中的价值
Jenkins在持续集成与持续部署中的价值
|
jenkins Devops Java
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第27天】在快速发展的软件开发领域,DevOps实践日益重要。Jenkins作为一款流行的开源自动化服务器,在持续集成(CI)和持续部署(CD)中扮演关键角色。本文通过案例分析,探讨Jenkins在Java项目中的应用,展示其自动化构建、测试和部署的能力,提高开发效率和软件质量。
491 2
|
jenkins Devops 测试技术
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第26天】随着DevOps理念的普及,Jenkins作为一款开源自动化服务器,在持续集成(CI)与持续部署(CD)中发挥重要作用。本文通过某中型互联网企业的实际案例,展示了Jenkins如何通过自动化构建、持续集成和持续部署,显著提升开发效率、代码质量和软件交付速度,帮助企业解决传统手工操作带来的低效和错误问题。
591 4

热门文章

最新文章

推荐镜像

更多
下一篇
开通oss服务