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 \lroot@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_PORT3. 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/demosFor more information on running Jenkins on Kubernetes, visit:
https://cloud.google.com/solutions/jenkins-on-container-engineFor 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          10mNAME                    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        10mNAME                       READY   AGE
statefulset.apps/jenkins   1/1     10m

参数说明:

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

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

controller:JCasC:enabled: trueconfigScripts:welcome-message: |jenkins:systemMessage: "Welcome to Jenkins on Kubernetes with Helm"installPlugins:- kubernetes- workflow-aggregator- git- configuration-as-codeserviceType: 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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL Innodb存储引擎中,当页默认的大小是16K时,页中最多存放多少行的记录?

1、题目引入 Innodb存储引擎是面向行的(row-oriented)&#xff0c;也就是说数据的存放按行进行&#xff0c;每页存放的行记录是有硬性定义的&#xff0c;当页默认的大小是16K时&#xff0c;页中最多存放多少行的记录&#xff1f; A、1600 行B、8192 行C、16383 行D、7992 行 …

基于Python协同过滤的旅游景点推荐系统,采用Django框架,MySQL数据存储,Bootstrap前端,echarts可视化实现

随着旅游业的迅速发展&#xff0c;个性化旅游推荐系统成为提升用户体验和促进旅游市场增长的重要工具。本研究旨在设计并实现一种基于Python协同过滤的旅游景点推荐系统&#xff0c;结合Django框架、MySQL数据库存储、Bootstrap前端框架以及echarts数据可视化技术&#xff0c;为…

【粉丝福利 | 第8期】值得收藏!推荐10个好用的数据血缘工具

⛳️ 写在前面参与规则&#xff01;&#xff01;&#xff01; ✅参与方式&#xff1a;关注博主、点赞、收藏、评论&#xff0c;任意评论&#xff08;每人最多评论三次&#xff09; ⛳️本次送书1~4本【取决于阅读量&#xff0c;阅读量越多&#xff0c;送的越多】 目前市面上绝…

数据迁移探索

概念 数据迁移是指将数据从一个计算环境或存储系统移动到另一个计算环境或存储系统。 随着公司业务的发展&#xff0c;出于成本优化、系统升级、分库分表、整合数据等原因。数据迁移工作在日常工作中会陆续出现。 我们可以将数据迁移分成两个部分&#xff0c;第一部分是数据…

springboot高职院校毕业生信息管理系统-计算机毕业设计源码27889

摘 要 基于Java语言开发的高职院校毕业生信息管理系统旨在提供一个便捷、高效的方式来管理毕业生的相关信息。系统包括学生基本信息管理、成绩管理、就业信息管理等模块&#xff0c;通过界面友好、操作简单的设计&#xff0c;方便管理员快速查询和更新学生信息。系统还提供数据…

采用前后端分离技术架构+java语言开发的全套产科信息管理系统源码 可与医院HIS、LIS、PACS、RIS等系统进行对接

采用前后端分离技术架构java语言开发的全套产科信息管理系统源码 可与医院HIS、LIS、PACS、RIS等系统进行对接 什么是产科信息管理系统-建档管理&#xff1f; 产科信息管理系统建档管理通过信息技术实现了孕产妇健康信息的电子化、网络化和智能化管理&#xff0c;提高了医疗服…

Riscv 架构的合规测试

为啥直接关注riscv-arch-test&#xff0c;是因为RISCOF 测试框架使用的是riscv-arch-test 1. The architectural test 架构测试是一个单一的测试&#xff0c;代表了可编译和运行的最小测试代码。它是用汇编代码编写的&#xff0c;其产品是test signature。一个架构测试可能由…

微信小程序推送消息java版

需求背景 使用springboot2微信小程序推送消息。百度了一下看了一篇文章整体还可以&#xff0c;这里推荐一下。 教程解析 1、微信平台开通订阅消息。 2、添加模板。 3、springboot后台接口开发 微信平台验证地址接口开发&#xff0c;然后部署到公网服务器。 4、微信平台验…

基于FPGA的数字信号处理(15)--定点数的舍入模式(6)向0取整fix

前言 在之前的文章介绍了定点数为什么需要舍入和几种常见的舍入模式。今天我们再来看看另外一种舍入模式&#xff1a;向上取整fix。 10进制数的fix fix&#xff1a;也叫 向0取整。它的舍入方式是数据往0的方向&#xff0c;舍入到最近的整数&#xff0c;比如1.75 fix到2&#xf…

将WordPress的文章重新排序的3个方法

有效的调整文章显示顺序看开可以更好突出内容&#xff0c;还可以保持网站的新鲜感&#xff0c;今天我将带您了解三种方法&#xff0c;通过重新排序文章显著提升网站的吸引力。我们将逐步讲解从调整设置到使用插件以及“置顶”文章的每一种方法&#xff0c;确保WordPress 新手也…

利用python进行数据分析 —— python正则表达式(持续更新中!)

文章目录 利用python进行数据分析 —— python基础知识进阶重点笔记&#xff1a;正则表达式re.match 匹配开头re.search 全文匹配re.sub 替换删除re.compile 编译正则findall 返回列表finditer 返回迭代器re.split 分割返回列表(?P...) 分组匹配正则表达符号、修饰符通配符1 ^…

谷歌上新!最强开源模型Gemma 2,27B媲美LLaMA3 70B,挑战3140亿Grok-1

文章目录 LMSYS Chatbot Arena&#xff1a;开源模型性能第一Gemma为什么这么强&#xff1f;架构创新对AI安全性的提升 A领域竞争激烈&#xff0c;GPT-4o 和 Claude 3.5 Sonnet 持续发力&#xff0c;谷歌迅速跟进。 谷歌为应对AI竞争所采取的策略&#xff1a;依靠 Gemini 闭源模…

hdu物联网硬件实验3 按键和中断

学院 班级 学号 姓名 日期 成绩 实验题目 按键和中断 实验目的 实现闪灯功能转换 硬件原理 无 关键代码及注释 /* Button Turns on and off a light emitting diode(LED) connected to digital pin 13, when pressing a pushbutton attached…

解决WSL2报错:当前电脑配置不支持WSL2,请启用虚拟机平台 Windows 功能并确保在 BIOS 中启用虚拟化

事情要追溯到突发奇想下载了腾讯的手游模拟器开始。。。因为一直闪退&#xff0c;模拟器自检就要求把虚拟化功能关闭了&#xff0c;结果还是一直闪退&#xff0c;WSL2也给我报错了。。。大无语 主要通过以下两个步骤解决&#xff0c;操作了之后需要把电脑重启&#xff1a; 一、…

小程序做自定义分享封面图,Canvas base64图片数据真机上不显示?【已解决】

首选说一下需求&#xff0c;做一个小程序分享&#xff0c;但是封面图要自定义&#xff0c;除了要有对应商品还有有背景图&#xff0c;商品名。类似这种 实现逻辑&#xff0c;把商品图和背景图&#xff0c;再加上价格和商品名用canvas 渲染出来 这是弄好之后的效果图&#xff0…

SpringSecurity中文文档(Servlet Method Security)

Method Security 除了在请求级别进行建模授权之外&#xff0c;Spring Security 还支持在方法级别进行建模。 您可以在应用程序中激活它&#xff0c;方法是使用EnableMethodSecurity 注释任何Configuration 类&#xff0c;或者将 < method-security > 添加到任何 XML 配…

springbootAl农作物病虫害预警系统-计算机毕业设计源码21875

摘要 随着农业现代化的推进&#xff0c;农作物病虫害的防治已成为农业生产中的重要环节。传统的病虫害防治方法往往依赖于农民的经验和观察&#xff0c;难以准确、及时地预测和防控病虫害的发生。因此&#xff0c;开发一种基于现代信息技术的农作物病虫害预警系统&#xff0c;对…

【计算机毕业设计】012基于微信小程序的科创微应用平台

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

解决vite 断点调试定位不准确问题

问题&#xff1a;vite构建时&#xff0c;控制台报错行数等信息定位不准确或debugger断点调试定位不准确 解决&#xff1a;F12后打开设置面板&#xff0c;把“JavaScript源代码映射”去掉可临时解决&#xff0c;如需永久解决需升级vite到最新版 还有一种&#xff1a; 参考&…

7.9 cf div3

BProblem - B - Codeforces 题目解读&#xff1a; 找到严格大于相邻数字的数&#xff0c;将其减一&#xff0c;直到整个数组成为稳定的&#xff08;不存在数字严格大于相邻数&#xff09; ac代码 #include<bits/stdc.h> typedef long long ll;#define IOS ios::sync_w…