新闻详情

新闻详情

首页 / 资讯中心 / 详情

90DaysOfDevOps 实战:在 minikube 上使用 Helm 部署 Jenkins 的完整步骤指南

发布时间:2026/10/1 8:02:11来源:尧图网络
90DaysOfDevOps 实战:在 minikube 上使用 Helm 部署 Jenkins 的完整步骤指南
文档/教程【免费下载链接】90DaysOfDevOpsThis repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.项目地址https://gitcode.com/gh_mirrors/90/90DaysOfDevOps点击查看免费下载本篇指南基于 90DaysOfDevOps 项目 2022 年 CICD 专题中的 Jenkins 部署文档steps.md完整呈现了如何在本地 minikube 集群中通过 Helm Chart 从零部署 Jenkins、配置持久化存储与 RBAC、获取管理员密码、完成端口转发登录并更新插件的全过程。读者读完本指南后将掌握一套可复制的「Kubernetes Helm 部署 Jenkins」实操流程并能够结合仓库中的 jenkins-values.yml 与 Pipeline/Jenkinsfile 进一步配置插件、JCasC 与 Kubernetes 动态 Agent。部署流程总览整个部署流程以 steps.md 为操作主线共分为以下几个阶段启动 minikube 集群创建独立的jenkins命名空间准备持久化存储PersistentVolume与服务账户ServiceAccount RBAC添加 Jenkins 官方 Helm 仓库并更新索引通过 Helm Chart 安装 Jenkins修正存储目录权限并触发控制器重启提取初始管理员密码端口转发并以浏览器登录执行插件更新进入日常使用。仓库中配套了全部所需的 YAML 清单文件位于 2022/es/Days/CICD/Jenkins 目录下可以对照每一步逐一执行。第一步启动 minikube 集群在安装任何 Kubernetes 资源之前先启动本地集群minikube startminikube start会创建并启动一个单节点的本地 Kubernetes 集群作为 Jenkins 控制器的运行底座。执行完毕后可以用kubectl get nodes验证集群状态就绪。第二步创建 jenkins 命名空间为了资源隔离和后续清理方便将 Jenkins 的所有资源放入独立的命名空间kubectl create namespace jenkins或者直接使用仓库中提供的声明式清单kubectl create -f 2022/es/Days/CICD/Jenkins/jenkins-namespace.ymljenkins-namespace.yml 内容如下--- apiVersion: v1 kind: Namespace metadata: name: jenkins验证命名空间是否创建成功kubectl get namespaces输出中应能看到jenkins命名空间处于Active状态。后续所有 Jenkins 相关命令都会带上-n jenkins以限定作用范围。第三步准备持久化存储Jenkins 的配置、任务Jobs、插件和构建记录都存储在JENKINS_HOME默认/var/jenkins_home中因此必须为其提供持久化存储否则控制器 Pod 一旦重建所有数据都会丢失。仓库提供了基于hostPath的 PersistentVolume 定义jenkins-volume.ymlapiVersion: v1 kind: PersistentVolume metadata: name: jenkins-pv namespace: jenkins spec: storageClassName: jenkins-pv accessModes: - ReadWriteOnce capacity: storage: 20Gi persistentVolumeReclaimPolicy: Retain hostPath: path: /data/jenkins-volume/应用该清单kubectl apply -f 2022/es/Days/CICD/Jenkins/jenkins-volume.yml关键字段说明storageClassName: jenkins-pv该名称必须与后面 Helm values 中persistence.storageClass保持一致用于将 PV 与 PVC 绑定accessModes: ReadWriteOnce允许单个节点挂载读写适合单控制器场景capacity.storage: 20GiPV 声明容量而 Helm values 中 PVC 请求的默认容量为8GiPV 容量须大于等于 PVC 请求量persistentVolumeReclaimPolicy: RetainPV 释放后保留数据防止误删导致 Jenkins 数据丢失hostPath.path: /data/jenkins-volume/数据实际落在 minikube 节点的宿主机目录下这也是后续需要进入节点修正权限的原因。注意hostPath仅适用于本地开发/测试环境如 minikube在生产环境应改用云厂商的块存储或 NFS 等网络存储。第四步创建服务账户与 RBAC 授权为了让 Jenkins 控制器能够调用 Kubernetes API 动态创建/销毁 Agent Podkubernetes 插件的能力需要创建服务账户并绑定集群角色。仓库提供了完整的 jenkins-sa.yml包含三部分资源ServiceAccountapiVersion: v1 kind: ServiceAccount metadata: name: jenkins namespace: jenkinsClusterRole授予statefulsets、services、replicationcontrollers、replicasets、podtemplates、pods、pods/log、pods/exec、persistentvolumes、persistentvolumeclaims、jobs、deployments、deployments/scale、daemonsets、cronjobs、configmaps、namespaces、events、secrets等资源的create/get/watch/delete/list/patch/update权限同时对nodes提供get/list/watch/update权限。ClusterRoleBinding将上述 ClusterRole 绑定到system:serviceaccounts:jenkins组即命名空间jenkins下所有服务账户。应用清单kubectl apply -f 2022/es/Days/CICD/Jenkins/jenkins-sa.yml从源码结构看该 ClusterRole 的授权范围相当宽泛apiGroups 为*覆盖了 Jenkins Kubernetes 插件管理 Agent、Job、PVC 等场景所需的几乎所有 API 对象属于开箱即用的演示级配置在严格的生产环境中建议按最小权限原则裁剪。第五步添加 Jenkins 官方 Helm 仓库Helm Chart 安装 Jenkins 前需要先把 Jenkins 官方仓库加入本地仓库列表并更新索引helm repo list查看当前已配置的仓库随后添加 Jenkins 官方仓库helm repo add jenkinsci https://charts.jenkins.io更新仓库索引获取最新的 Chart 与版本信息helm repo update第六步使用 Helm Chart 安装 Jenkins仓库提供了经过裁剪的 jenkins-values.yml通过-f参数将其传入 Helm 安装命令chartjenkinsci/jenkins helm install jenkins -n jenkins -f 2022/es/Days/CICD/Jenkins/jenkins-values.yml $chart该 Chart 会把 Jenkins 控制器以 StatefulSet 形式部署Pod 名为jenkins-0并自动创建 PVC、Service 与 ConfigMap 等关联资源。values 文件中的核心配置解读以下是对 jenkins-values.yml 中与本次部署直接相关的关键配置的逐一说明控制器镜像与资源controller: image: jenkins/jenkins tagLabel: jdk11 imagePullPolicy: Always runAsUser: 1000 fsGroup: 1000 servicePort: 8080 targetPort: 8080 serviceType: ClusterIP resources: requests: cpu: 50m memory: 256Mi limits: cpu: 2000m memory: 4096MirunAsUser: 1000/fsGroup: 1000以非 root 用户官方镜像内 uid 1000 的jenkins用户运行与第六步之后的目录权限修正目标 uid 1000 严格对应serviceType: ClusterIPvalues 注释明确说明For minikube, set this to NodePort, elsewhere use LoadBalancer本部署选择 ClusterIP随后通过port-forward访问符合本地开发场景。内置插件安装时自动下载installPlugins: - kubernetes:1.31.3 - workflow-aggregator:2.6 - git:4.10.2 - configuration-as-code:1.55.1这四类插件分别支撑Kubernetes 动态 Agent、流水线Pipeline聚合、Git 源码拉取以及 JCasC 配置即代码。JCasC 安全域与授权策略JCasC: defaultConfig: true securityRealm: |- local: allowsSignup: false enableCaptcha: false users: - id: ${chart-admin-username} name: Jenkins Admin password: ${chart-admin-password} authorizationStrategy: |- loggedInUsersCanDoAnything: allowAnonymousRead: false用户名与密码通过${chart-admin-username}/${chart-admin-password}占位符引用 Chart 自动生成的 Secret关闭匿名注册与匿名读取仅允许登录用户执行操作。持久化与 PVC 绑定persistence: enabled: true storageClass: jenkins-pv accessMode: ReadWriteOnce size: 8GistorageClass: jenkins-pv与第三步创建的 PV 的storageClassName同名从而把 PVC 与hostPathPV 绑定PVC 请求容量 8Gi小于 PV 声明的 20Gi可以正常绑定。Agent 配置agent: enabled: true image: jenkins/inbound-agent tag: 4.11.2-4 sideContainerName: jnlp podRetention: Never containerCap: 10控制器通过 50000 端口agentListenerPort与 JNLP Agent 通信构建时按需拉起 Agent Pod构建结束后删除podRetention: Never。第七步修正存储目录权限并重启控制器由于 Jenkins 以 uid 1000 运行而hostPath目录/data/jenkins-volume默认归属于 root首次启动时 Jenkins 可能因无法写入JENKINS_HOME而陷入CrashLoopBackOff。此时需要进入 minikube 节点把目录属主改为 1000minikube ssh sudo chown -R 1000:1000 /data/jenkins-volume然后删除控制器 Pod让 StatefulSet 重建从而以正确的权限重新挂载并初始化kubectl delete pod jenkins-0 -n jenkins观察 Pod 状态直至就绪kubectl get pods -n jenkins -w-w会持续监听变化直到jenkins-0变为Running且READY为1/1。这一chown 删除 Pod的组合是使用hostPathPV 部署 Jenkins 时最关键的排障步骤与 steps.md 的原始操作序列完全一致。第八步获取初始管理员密码Chart 会把初始管理员密码写入 Secret 中通过kubectl exec在控制器容器内读取kubectl exec --namespace jenkins -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/chart-admin-password echo说明svc/jenkins表示直接使用 Service 对应的 Pod 执行命令-c jenkins指定容器名为jenkins密码文件挂载路径为/run/secrets/chart-admin-password追加 echo是为了在输出末尾补一个换行避免密码与 shell 提示符粘连难以复制。该密码对应的用户即 jenkins-values.yml 中controller.adminUser: admin默认admin。第九步端口转发并用浏览器登录由于 Service 类型为 ClusterIP需要通过port-forward将本地 8080 端口映射到控制器kubectl --namespace jenkins port-forward svc/jenkins 8080:8080随后打开浏览器访问http://localhost:8080使用第八步获取的密码以用户admin登录。port-forward会保持前台运行请保持该终端不关闭。第十步执行插件更新首次登录后Jenkins 会提示存在可用的插件更新。在界面中进入Manage Jenkins → Plugins → Updates执行插件更新并重启控制器使其生效。由于 jenkins-values.yml 中设置了installLatestPlugins: trueChart 安装阶段已自动下载插件依赖的最新版本后续 UI 内的更新则用于跟进插件的增量发布。扩展验证结合仓库 Pipeline 打通 CI 流程部署完成后可以结合仓库自带的 Pipeline/Jenkinsfile 验证 Kubernetes 动态 Agent 与容器化构建能力。该 Jenkinsfile 演示了三条关键链路动态 Agent Pod通过podTemplate定义一个包含maven与kaniko两个容器的 Pod其中kaniko容器挂载了名为dockercred的 Secret/kaniko/.docker下的config.json用于镜像仓库认证流水线阶段Clone Repository阶段使用git从远程仓库拉取代码Build Image阶段在maven容器内执行构建命令Build Hello World App阶段在kaniko容器内调用/kaniko/executor构建并推送 Docker 镜像--destination指定目标仓库配套镜像素材Pipeline/Dockerfile 基于busybox构建一个托管 index.html 的极简静态 Web 服务镜像index.html 内容为Hello World!可作为 CI 构建产物的验证样例。这套素材证明本次部署的 Jenkins 不仅是一个可登录的 Web 服务还能通过 kubernetes 插件按需拉起 Agent、并行执行多容器流水线构成完整的「CI 编排 容器镜像构建」能力。常见问题与排障要点CrashLoopBackOff优先检查是否已执行minikube ssh下的chown -R 1000:1000 /data/jenkins-volume并确认 jenkins-values.yml 中runAsUser/fsGroup均为 1000。PVC 一直Pending确认 jenkins-volume.yml 的storageClassName: jenkins-pv与 values 中persistence.storageClass完全一致且 PV 容量20Gi不小于 PVC 请求8Gi。helm install报仓库不存在确认已执行helm repo add jenkinsci https://charts.jenkins.io与helm repo update并可用helm repo list复核。浏览器无法访问 8080确认kubectl --namespace jenkins port-forward svc/jenkins 8080:8080终端仍在运行且 Pod 处于Running状态。Agent 无法连接控制器检查 values 中agentListenerPort: 50000与 Agent 配置确保 JNLP 通信链路未被 NetworkPolicy 阻断values 中networkPolicy.enabled默认为false。本指南对应的全部清单文件均可从仓库 2022/es/Days/CICD/Jenkins 目录获取其中 steps.md 为原始部署步骤、jenkins-namespace.yml 为命名空间、jenkins-sa.yml 为 RBAC、jenkins-volume.yml 为持久化卷、jenkins-values.yml 为 Helm 参数Pipeline/Jenkinsfile 及其配套 Dockerfile、index.html 可用于验证流水线构建能力。赞分享文档/教程【免费下载链接】90DaysOfDevOpsThis repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.项目地址https://gitcode.com/gh_mirrors/90/90DaysOfDevOps点击查看免费下载相关推荐在 minikube 上使用 Helm 部署 Jenkins完整实操指南与 Kubernetes 流水线配置在 minikube 上使用 Helm 部署 Jenkins完整实操指南与 Kubernetes 流水线配置 本文以 90DaysOfDevOps 仓库 20文档/教程Kubernetes 集群日志监控实战基于 90DaysOfDevOps 在 Minikube 上部署 EFK StackElasticsearch Fluentd KibanaKubernetes 集群日志监控实战基于 90DaysOfDevOps 在 Minikube 上部署 EFK StackElasticsearch F文档/教程使用 Helm 在 Kubernetes 上部署 Cognee内置 PostgreSQL pgvector 的完整指南使用 Helm 在 Kubernetes 上部署 Cognee内置 PostgreSQL pgvector 的完整指南 Cognee 是开源 AI 记忆平人工智能AI AgentRAG知识图谱后端MCP 服务上一篇SuperClaude未来发展路线2025年功能规划与技术愿景下一篇Ory Hydra容器镜像优化减小体积与加速部署的5个技巧创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

15款视频压缩软件汇总!看看有没有你喜欢的那一款 2026/10/1 10:26:51

15款视频压缩软件汇总!看看有没有你喜欢的那一款

做过短视频的朋友,肯定都知道大部分平台的视频大小都有限制,那么如何通过无损压缩,上传体积小、清晰度高的视频,成为了不少同学的锥心之痛! 今天,俺就以一名剪辑师的身份,分享圈里人用的比较多…

阅读更多 →
Windows SDK v6.0A 老版本工具链完整拆解与实战配置指南 2026/10/1 10:26:38

Windows SDK v6.0A 老版本工具链完整拆解与实战配置指南

简介:Microsoft Windows SDK v6.0A 是微软面向 Windows 平台开发者推出的经典开发工具集,适合使用 C、C、C# 编写原生 Win32 或 .NET 应用程序的中高级程序员,用于解决系统 API 调用、程序调试与软件部署等实际问题。压缩包共收录 2000 个文件…

阅读更多 →
端侧AI落地九大约束与八维评测:横切思维下的权衡法则 2026/10/1 10:26:38

端侧AI落地九大约束与八维评测:横切思维下的权衡法则

端侧AI这两年从PPT概念一路卷到真机落地,我身边做嵌入式、做算法、做产品的朋友几乎都在同一个坑里反复摔跤:模型在服务器上跑得漂漂亮亮,一塞进手机、手表、车机、摄像头,精度掉、延迟炸、发热烫、内存爆,最后只能砍功…

阅读更多 →
AnythingLLM实战:从私有知识库到AI Agent工作区的本地部署指南 2026/10/1 10:26:38

AnythingLLM实战:从私有知识库到AI Agent工作区的本地部署指南

记一次真实的折腾经历:我在把某个项目文档整理成可问询的知识库时,最开始的做法是直接丢给 ChatGPT 官方网页版,体验确实不错,但有两个硬伤:一是公司内部文档传上去之后,心里始终有道坎,不知道这…

阅读更多 →
WeKnora实战:多智能体检索增强引擎如何解决RAG知识库难题 2026/10/1 10:26:38

WeKnora实战:多智能体检索增强引擎如何解决RAG知识库难题

最近项目组要搭一套私有知识库,我把 Dify、RAGFlow、FastGPT 基本试了个遍,结果都卡在同一个地方:文档进来之后,看似能聊,实际问答一追细节就露馅——要么答非所问,要么引用来源张冠李戴。后来看到微信团队…

阅读更多 →
写在前面:这套测试到底在测什么 2026/10/1 10:26:32

写在前面:这套测试到底在测什么

缘起 电力监控系统里,104 规约(IEC 60870-5-104)过去是明文跑的,谁都能在链路上看,也能往里塞东西。IEC 62351-3 就是来解决这个问题的,它把 TLS 套在 TCP 之上,让 104 的报文有了加密和双向认…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉