Kubernetes基于helm部署jenkins

Kubernetes基于helm安装jenkins

jenkins支持war包、docker镜像、系统安装包、helm安装等。在Kubernetes上使用Helm安装Jenkins可以简化安装和管理Jenkins的过程。同时借助Kubernetes,jenkins可以实现工作节点的动态调用伸缩,更好的提高资源利用率。通过Jenkins的kubernetes-plugin来实现将Jenkins运行在Kubernetes上的功能。

准备工作

  1. 已经安装并配置好了Kubernetes集群。
# k8s版本及环境信息
root@master1:~# kubectl get node -o wide
NAME      STATUS   ROLES           AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE           KERNEL-VERSION     CONTAINER-RUNTIME
master1   Ready    control-plane   25h   v1.28.2   192.168.0.61   <none>        Ubuntu 24.04 LTS   6.8.0-36-generic   containerd://1.7.12
node1     Ready    <none>          25h   v1.28.2   192.168.0.62   <none>        Ubuntu 24.04 LTS   6.8.0-36-generic   containerd://1.7.12
node2     Ready    <none>          25h   v1.28.2   192.168.0.63   <none>        Ubuntu 24.04 LTS   6.8.0-36-generic   containerd://1.7.12

# 操作系统信息
root@master1:~# cat /etc/issue
Ubuntu 24.04 LTS \n \l

root@master1:~# uname -a
Linux master1 6.8.0-36-generic #36-Ubuntu SMP PREEMPT_DYNAMIC Mon Jun 10 10:49:14 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
  1. 已经安装并配置好了Helm。
# helm版本
root@master1:~# helm version
version.BuildInfo{Version:"v3.15.2", GitCommit:"1a500d5625419a524fdae4b33de351cc4f58ec35", GitTreeState:"clean", GoVersion:"go1.22.4"}
  1. 已经部署了提供pv、pvc等资源的存储资源。
root@master1:~# helm ls -n openebs
NAME    NAMESPACE   REVISION        UPDATED                           STATUS          CHART           APP VERSION
openebs openebs         1     2024-07-02 14:38:40.928808834 +0800 CST deployed        openebs-4.0.1   4.0.1
root@master1:~# kubectl get pod -n openebs
NAME                                              READY   STATUS    RESTARTS   AGE
openebs-localpv-provisioner-6b8bff68bd-vmwp7      1/1     Running   0          121m
openebs-lvm-localpv-controller-778b75449c-mmvw6   5/5     Running   0          121m
openebs-lvm-localpv-node-d2trc                    2/2     Running   0          121m
openebs-lvm-localpv-node-md5wh                    2/2     Running   0          121m
openebs-zfs-localpv-controller-6665568c7c-snw4q   5/5     Running   0          121m
openebs-zfs-localpv-node-mc8tv                    2/2     Running   0          121m
openebs-zfs-localpv-node-w6nns                    2/2     Running   0          121m
root@master1:~# kubectl get sc -n openebs
NAME               PROVISIONER        RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
openebs-hostpath   openebs.io/local   Delete          WaitForFirstConsumer   false                  121m

可以参考我的另外一篇文章部署openebs,《Kubernetes云原生存储解决方案openebs部署实践-3.10.0版本(helm部署)》。

helm安装步骤

1. 添加Jenkins的Helm仓库

# 添加更新仓库
helm repo add jenkins https://charts.jenkins.io
helm repo update

# 查看版本列表
helm search repo -l jenkins/jenkins

# 查看最新版本
helm search repo jenkins

# 下载chart包,不加--version则加载最新版本
helm pull jenkins/jenkins --version 5.1.9

关于chart版本和jenkins版本的对应关系,下面是部分映射关系:

NAMECHART VERSIONAPP VERSIONDESCRIPTION
jenkins/jenkins5.3.32.452.2Jenkins - Build great things at any scale! As t…
jenkins/jenkins5.3.22.452.2Jenkins - Build great things at any scale! As t…
jenkins/jenkins5.3.12.452.2Jenkins - Build great things at any scale! As t…
jenkins/jenkins5.1.92.440.3Jenkins - Build great things at any scale! As t…

2. 创建命名空间

kubectl create namespace jenkins

3. 安装Jenkins

# 查看values
helm show values jenkins/jenkins

# 下面安装的参数来自于values。指定服务暴露方式为NodePort并指定端口,pv由存储类openebs-hostpath提供
helm upgrade --install jenkins jenkins/jenkins --namespace jenkins --set persistence.storageClass="openebs-hostpath" --set controller.serviceType=NodePort --set controller.nodePort=30080

# 卸载安装
helm uninstall jenkins -n jenkins 
  
# 测试环境执行
root@master1:~/jenkins# helm upgrade --install jenkins jenkins/jenkins --namespace jenkins --set persistence.storageClass="openebs-hostpath" --set controller.serviceType=NodePort --set controller.nodePort=30080
Release "jenkins" does not exist. Installing it now.
NAME: jenkins
LAST DEPLOYED: Wed Jul  3 14:07:47 2024
NAMESPACE: jenkins
STATUS: deployed
REVISION: 1
NOTES:
1. Get your 'admin' user password by running:
  kubectl exec --namespace jenkins -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo
2. Get the Jenkins URL to visit by running these commands in the same shell:
  export NODE_PORT=$(kubectl get --namespace jenkins -o jsonpath="{.spec.ports[0].nodePort}" services jenkins)
  export NODE_IP=$(kubectl get nodes --namespace jenkins -o jsonpath="{.items[0].status.addresses[0].address}")
  echo http://$NODE_IP:$NODE_PORT

3. Login with the password from step 1 and the username: admin
4. Configure security realm and authorization strategy
5. Use Jenkins Configuration as Code by specifying configScripts in your values.yaml file, see documentation: http://$NODE_IP:$NODE_PORT/configuration-as-code and examples: https://github.com/jenkinsci/configuration-as-code-plugin/tree/master/demos

For more information on running Jenkins on Kubernetes, visit:
https://cloud.google.com/solutions/jenkins-on-container-engine

For more information about Jenkins Configuration as Code, visit:
https://jenkins.io/projects/jcasc/

# 查看安装的资源
root@master1:~/jenkins# kubectl get all -n jenkins
NAME            READY   STATUS    RESTARTS   AGE
pod/jenkins-0   2/2     Running   0          10m

NAME                    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
service/jenkins         NodePort    10.102.102.102   <none>        8080:30080/TCP   10m
service/jenkins-agent   ClusterIP   10.99.77.201     <none>        50000/TCP        10m

NAME                       READY   AGE
statefulset.apps/jenkins   1/1     10m

参数说明:

  • persistence.storageClass参数:用于动态申请pv,持久化jenkins数据。
  • serviceType参数:指定服务暴露的方式,nodePort范围:30000-32767。

也可以通过自定义 values.yaml 文件来配置Jenkins安装参数。例如,创建一个 myvalues.yaml 文件:

controller:
  JCasC:
    enabled: true
    configScripts:
      welcome-message: |
        jenkins:
          systemMessage: "Welcome to Jenkins on Kubernetes with Helm"
  installPlugins:
    - kubernetes
    - workflow-aggregator
    - git
    - configuration-as-code
  serviceType: NodePort

然后使用以下命令安装Jenkins:

helm install jenkins jenkins/jenkins --namespace jenkins -f myvalues.yaml

4. 配置jenkins

  1. 查询admin密码
kubectl --namespace jenkins get secret jenkins -o jsonpath="{.data.jenkins-admin-password}" | base64 --decode
# 或者
kubectl exec --namespace jenkins -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo

# 我这里获取的随机密码
EepJvUf9a8ryLo1JPDzdqo
  1. 配置Jenkins插件源
root@master1:~# kubectl get pod -n jenkins
NAME        READY   STATUS    RESTARTS   AGE
jenkins-0   2/2     Running   0          22m
root@master1:~# kubectl exec -itn jenkins jenkins-0 sh

$ echo $JENKINS_HOME
/var/jenkins_home

$ cp $JENKINS_HOME/hudson.model.UpdateCenter.xml{,.bak}

$ sed -i 's#https://updates.jenkins.io/update-center.json#https://mirrors.huaweicloud.com/jenkins/updates/update-center.json#g' $JENKINS_HOME/hudson.model.UpdateCenter.xml

5. 访问Jenkins

svc设置为NodePort方式,通过节点ip+30080端口访问:

kubectl --namespace jenkins get svc

用户名为admin,密码为上面查到的随机密码。

在这里插入图片描述

参考资料

  1. jenkins 5.3.3 · jenkins/jenkinsci (artifacthub.io)
  2. charts/stable/jenkins at master · helm/charts (github.com)
  3. Jenkins

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/784877.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

拆分pdf文件最简单的方法,pdf怎么拆成一页一张

在数字化的时代&#xff0c;pdf文件已经成为我们日常办公、学习不可或缺的文档格式。然而&#xff0c;有时候我们可能需要对一个大的pdf文件进行拆分&#xff0c;以方便管理和分享。那么&#xff0c;如何将一个pdf文件拆分成多个pdf呢&#xff1f;本文将为你推荐一种好用的拆分…

HNTs-g-PEG-CDs-Biotin NPs;碳量子点修饰接枝生物素化的羟基磷灰石纳米管

HNTs-g-PEG-CDs-Biotin NPs&#xff0c;即碳量子点修饰接枝生物素化的羟基磷灰石纳米管&#xff0c;是一种结合了多种先进材料特性的纳米复合材料。以下是对该材料的详细分析&#xff1a; 一、组成成分及特性 羟基磷灰石纳米管&#xff08;HNTs&#xff09;&#xff1a; 羟基磷…

多用户挂售转卖竞拍闪拍商城系统/NFT数藏系统/后端PHP+前端UNIAPP源码带教程(亲测源码)

挂售转卖竞拍商城系统源码/竞拍系统/转拍闪拍系统/后端PHP前端UNiapp源码 亲测可用 1、后台管理&#xff1a;系统管理员通过后台可以轻松添加商品进行挂单。这包括商品的详细信息&#xff0c;如名称、描述、价格、库存等。 商品展示&#xff1a;挂单后的商品会在商城前端进行…

22.状态机设计--可乐机设计(投币三元出一瓶可乐)

理论知识&#xff1a; &#xff08;1&#xff09;状态机简写为FSM&#xff08;Finite State Machine&#xff09;&#xff0c;也称为同步有限状态机。同步是指状态的变化都是在时钟的边沿发送变化&#xff0c;有限值得是状态的个数是可数的。 &#xff08;2&#xff09;分类&…

Xilinx FPGA DDR4 接口的 PCB 准则

目录 1. 简介 1.1 FPGA-MIG 与 DDR4 介绍 1.2 DDR4 信号介绍 1.2.1 Clock Signals 1.2.2 Address and Command Signals 1.2.3 Address and Command Signals 1.2.4 Data Signals 1.2.5 Other Signals 2. 通用存储器布线准则 3. Xilinx FPGA-MIG 的 PCB 准则 3.1 引脚…

ElasticSearch第一天

学习目标&#xff1a; 能够理解ElasticSearch的作用能够安装ElasticSearch服务能够理解ElasticSearch的相关概念能够使用Postman发送Restful请求操作ElasticSearch能够理解分词器的作用能够使用ElasticSearch集成IK分词器能够完成es集群搭建 第一章 ElasticSearch简介 1.1 什么…

【Unity2D 2022:】制作NPC

一、创建NPC角色 1. 创建JambiNPC并同时创建Jambi站立动画 &#xff08;1&#xff09;点击第一张图片&#xff0c;按住shift不松&#xff0c;再选中后两张图片&#xff0c;拖到层级面板中 &#xff08;2&#xff09;将动画资源文件保存到Animation Clips文件夹中 &#xff08;…

YOLOv10改进 | 损失函数篇 | InnerIoU、InnerSIoU、InnerWIoU、FocusIoU等损失函数

一、本文介绍 本文给大家带来的是YOLOv10最新改进&#xff0c;为大家带来最近新提出的InnerIoU的内容同时用Inner的思想结合SIoU、WIoU、GIoU、DIoU、EIOU、CIoU等损失函数&#xff0c;形成 InnerIoU、InnerSIoU、InnerWIoU、等新版本损失函数&#xff0c;同时还结合了Focus和…

PHP源码:线上书店系统(附管理后台+前台)

一. 前言 今天小编给大家带来了一款可学习&#xff0c;可商用的&#xff0c;线上书店 源码&#xff0c;支持二开&#xff0c;无加密。项目的内容是销售书籍&#xff0c;可以扩展成pdf&#xff0c;文档等一些虚拟产品的销售。 详细界面和功能见下面视频演示。 二. 视频演示 线…

一个php文件怎么实现联系表单自动发送邮件

学习PHP&#xff1a;如何编写一个自动发送邮件的联系表单处理器&#xff1f; 无论是反馈意见、业务咨询&#xff0c;还是技术支持&#xff0c;联系表单都能为用户提供便捷的交流途径。AokSend将探讨如何通过一个PHP文件实现联系表单的自动发送邮件功能。 php文件&#xff1a;…

【豆包AI】北京春田知韵

看到有国内AI上线了&#xff0c;网络信息那么多&#xff0c;我该怎么找它的官网呢&#xff1f; 找官方网站3步 1百度 关于抖音豆包的网站是哪个?【www.doubao.com】 豆包属于哪个公司&#xff1f;【北京春田知韵科技有限公司】 www.doubao.com 2查询备案号 PC版本的安装…

外卖跑腿小程序APP软件成品系统和软甲开发APP小程序可进行封装打包

&#xff0c;用户友好界面设计 首先&#xff0c;外卖施限小程序APP应具备用户友好的界面设计。界面应简洁明了&#xff0c;让用户能够方便快捷地议,览和选择所需的菜品或服务。系统应提供详细的菜品描述、价格透明&#xff0c;并允许用户根据口味、偏好进行结进和排序。此外&am…

如何保证队列消息的有序性

要保证队列消息的有序性&#xff0c;你可以采取以下几种策略&#xff1a; 1.单一生产者和消费者&#xff1a;确保只有一个生产者向队列发送消息&#xff0c;以及只有一个消费者从队列接收消息&#xff0c;这样可以保证消息的顺序。 2.使用有序集合&#xff1a;如果你使用Redis&…

GPU发展史(二):改变游戏规则的3Dfx Voodoo

小伙伴们&#xff0c;大家好呀&#xff0c;我是老猫。 在上一篇GPU发展史&#xff08;一&#xff09;文章中&#xff0c;我们介绍了1976-1995期间早期显卡的发展故事&#xff0c;今天我们将介绍在1995-1999年这段时间显卡的故事&#xff0c;而这段故事的主角就是——3Dfx 提起…

在idea中查看某个接口的所有实现类图

一、选中某个接口右键 ---> Diagrams ---> show Diagrams&#xff0c;然后就会进入一个新的 tab 页&#xff1b; 二、然后在出来的图上选中某个接口右键 ---> show Implementations&#xff0c;就会显示选中接口的所有实现类列表&#xff1b; 三、最后 ctrl A 全部选…

StarRocks下载使用说明和基础操作

简介 StarRocks 是一款高性能分析型数据仓库&#xff0c;使用向量化、MPP 架构、CBO、智能物化视图、可实时更新的列式存储引擎等技术实现多维、实时、高并发的数据分析。StarRocks 既支持从各类实时和离线的数据源高效导入数据&#xff0c;也支持直接分析数据湖上各种格式的数…

普中51单片机:矩阵按键扫描与应用详解(五)

文章目录 引言电路图开发板IO连接矩阵键盘的工作原理行列扫描逐行/逐列扫描 LCD1602代码库代码演示——暴力扫描代码演示——数码管(行列式)代码演示——线翻转法代码演示——LCD1602密码锁 引言 矩阵按键是一种通过行列交叉连接的按键阵列&#xff0c;可以有效地减少单片机I/…

萝卜快跑的狠活

萝卜快跑作为百度旗下的自动驾驶出行服务平台&#xff0c;在科技应用上展现了多项领先的技术。以下是萝卜快跑采用的一些主要科技“狠活”&#xff1a; 自动驾驶技术&#xff1a; 萝卜快跑主要使用了百度Apollo的L4级自动驾驶技术&#xff0c;该技术能够应对海量的城市道路场景…

Vue的常见指令

目录 1.v-bind 2. class绑定 3.style绑定 4.v-if/v-show 1.v-bind v-bind指令用于绑定属性 可以简写成 “ &#xff1a;” 它的作用就是我们可以动态的定义属性的值&#xff0c;比如常见的<img src "1.jpg"> 我们如果想要修改图片就需要获取到DOM对象&am…

Nginx:关于实现跨域代理

运维专题 Nginx&#xff1a;关于实现跨域代理 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.ne…