kubernetes-handbook 实战:使用 GitHub Pages 构建 Helm 私有 Chart 仓库
教程云原生容器编排【免费下载链接】kubernetes-handbookKubernetes 架构与生态从云原生到 AI 原生基础设施的构建指南项目地址https://gitcode.com/gh_mirrors/ku/kubernetes-handbook点击查看免费下载导读当企业内部应用逐渐增多、依赖关系与部署环境日趋复杂时直接用 YAML 文件管理 Kubernetes 应用的方式将难以满足生产需要。本文以 kubernetes-handbook 仓库中 构建私有 Chart 仓库 一文为骨架结合仓库内 manifests/charts 下的真实 Chart 样例系统讲解 Helm Chart 的组成结构、安装方式与依赖管理并给出两条可落地的私有 Chart 仓库建设路径使用 GitHub Pages 静态托管 Chart 压缩包 index.yaml以及部署 Monocular UI 实现 Chart 的展示与搜索。读完本文你将掌握从 Chart 打包、仓库索引生成、GitHub Pages 发布到helm repo add消费的完整链路并了解 Monocular 的两种部署方式及其踩坑点。为什么需要私有 Chart 仓库Helm 是 Kubernetes 应用的包管理工具地位类似 Ubuntu 的 APT 与 CentOS 的 YUMChart 则是 Helm 管理的应用打包格式。仓库中 使用 Helm 管理 Kubernetes 应用 一文总结了 Helm 与 Chart 的四大核心价值应用程序封装、版本管理、依赖检查、便于应用程序分发。当企业内部应用数量上升后直接使用 YAML 文件管理的方式会遇到两个突出问题互相依赖应用间存在版本耦合缺乏统一的依赖解析与版本约束机制部署环境复杂不同环境测试、预发、生产的配置差异难以用散落的 YAML 文件收敛。因此有必要构建自己的 Chart 仓库统一承载打包后的 Chart 压缩包并最好提供一个前端用于展示和搜索 Chart。原文档给出的目标是构建一个 GitHub Pages 存储所有 Chart 压缩文件并配有前端展示与搜索能力。理解 ChartHelm 的打包与分发单元Chart 是 Helm 管理的应用打包格式具有如下特征Chart 中包含一系列 YAML 格式的描述文件一个 Chart 只用于部署单个应用不应过于复杂不应包含多个依赖相当于一个微服务。Chart 有特定的目录结构可以打包起来进行版本控制。Chart 的组成结构以 nginx 的 Chart 为例其组成结构如下nginx/ Chart.yaml # 必须一个包含chart的名称、版本和启用条件信息等的YAML文件 LICENSE # 可选: chart的许可证 README.md # 可选: 使用说明 requirements.yaml # 可选: 该chart的依赖配置 values.yaml # 必须该chart的默认配置值 charts/ # 可选: 包含该chart依赖的chart templates/ # 可选kubernetes manifest文件模板用于生成kubernetes yaml文件 templates/NOTES.txt # 可选: 该chart的使用说明和提示信息文本文件作为helm install后的提示信息仓库 manifests/charts 目录下就保留了多个结构完整的真实 Chart可作为对照样本。以 mychart 为例其 Chart.yaml 内容为apiVersion: v1 description: A Helm chart for Kubernetes name: mychart version: 0.1.0而 values.yaml 定义了模板渲染所需的默认值包括副本数、镜像仓库与标签、拉取策略、Service 端口映射以及资源限制# Default values for mychart. # This is a YAML-formatted file. # Declare variables to be passed into your templates. replicaCount: 1 image: repository: harbor-001.jimmysong.io/library/nginx tag: 1.9 pullPolicy: IfNotPresent service: name: nginx type: ClusterIP externalPort: 80 internalPort: 80 resources: limits: cpu: 100m memory: 128Mi requests: cpu: 100m memory: 128Mitemplates目录下的 deployment.yaml 与 service.yaml 展示了模板化的工作方式文件中的{{ .Values.xxx }}会在安装/升级时被values.yaml或命令行传入的值渲染替换{{ template fullname . }}、{{ .Chart.Name }}、{{ .Chart.Version }}等则来自 templates/_helpers.tpl 与 Chart 元数据。例如_helpers.tpl中的fullname定义为{{- define fullname -}} {{- $name : default .Chart.Name .Values.nameOverride -}} {{- printf %s-%s .Release.Name $name | trunc 63 | trimSuffix - -}} {{- end -}}可见 Chart 模板底层使用的是 Go template_helpers.tpl集中定义了模板辅助函数values.yaml中的键值通过{{ .Values.service.type }}这类表达式注入到最终的 Kubernetes 清单中。关于模板渲染的详细讲解可参见 使用 Helm 管理 Kubernetes 应用。Chart 的安装方式安装 Chart 主要分为安装本地定义的 Chart 和远程 Chart 仓库中的 Chart 两种方式。安装本地 Chart指定本地 Chart 目录helm install .指定本地 Chart 压缩包helm install nginx-1.2.3.tgz安装 Chart 仓库中的 Chart使用默认的远程仓库helm install stable/nginx使用指定的仓库helm install localhost:8879/nginx-1.2.3.tgz实际上可以将 Chart 打包后作为静态文件托管到 Web 服务器上例如 GitHub Pages 作为 Chart 仓库也可以。仓库中 nginx-ingress 安装文档 就使用了helm package .将本地 Chart 打包这正是将 Chart 发布到仓库前的标准动作。结合 helm.md 的完整命令体系与仓库构建强相关的常用命令包括helm create在本地创建新的 Charthelm dependency管理 Chart 依赖helm package打包本地 Charthelm repo列出、增加、更新、删除 Chart 仓库helm pull拉取远程 Chart 到本地helm search使用关键词搜索 Charthelm install安装 Chart可配合-f myvalues.yaml、--set keyvalue、--set-string、--set-file覆盖默认值helm upgrade/helm rollback升级与回滚 releasehelm uninstall卸载 releasehelm lint检查 Chart 配置是否有误。依赖管理有两种方式来管理 Chart 的依赖直接在 Chart 的charts目录下定义通过在requirements.yaml文件中定义依赖的 Chart。在每个 Chart 的charts目录下可以定义依赖的子 Chart。子 Chart 有如下特点无法访问父 Chart 中的配置父 Chart 可以覆盖子 Chart 中的配置。仓库中 mean 是一个多 Chart 组合的典型案例其 requirements.yaml 声明了对 MongoDB 子 Chart 的依赖dependencies: - name: mongodb repository: http://localhost:8879 version: 0.4.x对应的 requirements.lock 则锁定了依赖解析结果将mongodb固定到version: 0.4.17并记录了依赖图谱的digest与生成时间dependencies: - condition: enabled: false import-values: null name: mongodb repository: http://localhost:8879/ tags: null version: 0.4.17 digest: sha256:955f80c2844df5fb24c06440898df8d3b2143d7081ac11409d8604720e47b814 generated: 2017-10-24T11:45:19.05411408:00可以看到其依赖的 mongodb Chart 版本正是0.4.17requirements.lock保证了同一份依赖图谱在不同环境下的可复现性。该 Chart 的templates/_helpers.tpl中还额外定义了mongodb.fullname辅助函数说明子 Chart 拥有独立的命名空间与模板上下文。Chart 仓库的本质Chart 仓库repository是一个用来托管index.yaml文件和打包好的 Chart 文件的 Web 服务器。当前 Chart 仓库本身没有设置身份和权限验证官方 issue 对此问题的进展一直在跟进详见原文档所引 kubernetes/helm#1038。因为 Chart 仓库只是一个 HTTP 服务通过 HTTP GET 获取 YAML 文件和 Chart 的压缩包所以可以将这些文件存储在 Web 服务器中例如 GCS、Amazon S3、GitHub Pages 等。关于 Chart 仓库的更多信息请参考 Helm Chart 官方文档。使用 GitHub Pages 托管 Charts既然 Chart 仓库本质上只是静态文件托管那么用 GitHub Pages 做存储是完全可行的。整体思路如下打包 Chart对本地 Chart 目录执行helm package .生成nginx-1.2.3.tgz这样的压缩包仓库中 nginx-ingress 安装文档 即示范了该命令的实际用法生成索引将多个 Chart 压缩包放入同一目录后执行helm repo index .生成仓库索引index.yaml其中记录了每个 Chart 的下载地址、版本、校验和等元数据发布到 GitHub Pages将 Chart 压缩包与index.yaml提交并推送到 GitHub 仓库的gh-pages分支或配置为 Pages 的目录即可获得一个静态托管的 Chart 仓库地址在 Helm 中新增 repo执行helm repo add myrepo https://username.github.io/repo之后即可通过helm search、helm install myrepo/chart消费该仓库。此外Helm 2 时代还提供过本地 HTTP 仓库方案。仓库中 ceph-helm 安装指南 就记录了本地 repo 的用法$ helm serve $ helm repo add local http://localhost:8879/charts上述localhost:8879正是 mean/requirements.yaml 中依赖仓库地址http://localhost:8879的由来。需要说明的是helm serve属于 Helm 2 的功能Helm 3 已将其移除团队自建仓库时建议直接采用静态托管方案GitHub Pages、对象存储等配合helm repo index它们对 Helm 3 完全兼容。构建 Monocular UIChart 仓库只有原始文件还不够直观Monocular 是一个开源的 Kubernetes Helm Chart 浏览器提供 Chart 的展示、搜索与安装入口。克隆项目到本地git clone https://github.com/kubernetes-helm/monocular.git依赖环境Monocular UI 基于以下技术栈构建Angular 2angular/cliTypescriptSassWebpackBootstrap在monocular/src/ui目录下执行以下命令安装依赖yarn install npm install -g angular/cli npm install -g typescript npm install -g webpack运行使用 docker-compose最简单的运行方式是使用 docker-composedocker-compose up该命令需要用到如下镜像bitnami/mongodb:3bitnami/node:8quay.io/deis/go-dev:v1.5.0原文档特别提示这个过程会有一个很长的 build 过程且构建失败。这意味着 docker-compose 方式在当时的环境下并不可行需要改用下面的 Helm 部署方式。运行使用 Helm首先需要已在本地安装了 Helm并在 Kubernetes 集群中安装了 tiller对应部署环境请先阅读 使用 Helm 管理 Kubernetes 应用其中包含 Helm 安装、Chart 创建与常用命令的完整说明。# 需要安装 nginx ingress $ helm install stable/nginx-ingress $ helm repo add monocular https://kubernetes-helm.github.io/monocular $ helm install monocular/monocular部署完成后即可打开 Monocular 界面查看 Chart 列表。不过原文档记录了一个真实踩坑点由于 nginx ingress 配置问题官方 Chart 中api与ui使用的是同样的 domain name作者当时使用的是 traefik ingress导致api访问不到因此加载不了 Chart。这提示我们在生产使用 Monocular 时需要额外注意 ingress 路由规则api与ui必须分别配置可解析的域名或路径规则否则前端无法从后端 API 拉取 Chart 数据。小结与参考本文完整覆盖了私有 Chart 仓库建设的三个层次理解 Chart 结构打包单元、目录组成、安装方式、依赖管理、搭建仓库底座利用 GitHub Pages 静态托管 index.yaml索引、增强体验Monocular UI 的展示与搜索。仓库中 manifests/charts 下的 mychart、mongodb、mean、oam-core-resources 等真实 Chart 可以作为构建与验证的样本helm.md 提供了 Helm 命令体系的完整速查ceph-helm 安装指南 则展示了本地 repo 方案在企业实践中的真实用法。进一步参考Monocular UI 官方仓库kubernetes-helm/monocularUsing a private github repo as helm chart repo (https access)仓库内 使用 Helm 管理 Kubernetes 应用、ceph-helm 安装指南、manifests/charts 目录赞分享教程云原生容器编排【免费下载链接】kubernetes-handbookKubernetes 架构与生态从云原生到 AI 原生基础设施的构建指南项目地址https://gitcode.com/gh_mirrors/ku/kubernetes-handbook点击查看免费下载相关推荐Helm仓库管理指南私有Chart仓库搭建与维护Helm仓库管理指南私有Chart仓库搭建与维护 前言为什么需要私有Chart仓库 在Kubernetes生态中Helm作为事实上的包管理标准极大地简云原生容器编排CLI运维Helm企业级Chart仓库搭建私有化应用分发平台Helm企业级Chart仓库搭建私有化应用分发平台 引言 在KubernetesK8s容器编排系统环境中应用的部署和管理面临着诸多挑战如版本控制复杂云原生容器编排CLI运维在 Kubernetes 上使用 Helm Chart 部署 MEAN 应用kubernetes-handbook 中的 mean Chart 实战指南在 Kubernetes 上使用 Helm Chart 部署 MEAN 应用kubernetes handbook 中的 mean Chart 实战指南 导读教程云原生容器编排创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

PADS Logic到OrCAD格式转换实战:E-studio导出与网络完整性验证

PADS Logic到OrCAD格式转换实战:E-studio导出与网络完整性验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 3:24:32 阅读更多 →
ARA 目录 Schema 全字段参考:构建 Agent 原生研究产物的认知层、物理层与证据层规范

ARA 目录 Schema 全字段参考:构建 Agent 原生研究产物的认知层、物理层与证据层规范

AI 技能人工智能大模型深度学习 【免费下载链接】AI-Research-SKILLs Comprehensive open-source library of AI research and engineering skills for any AI model. Package the skills and your claude code/codex/gemini agent will be an AI research agent with full hor…

2026/9/24 3:24:32 阅读更多 →
大一学计算机的第一天

大一学计算机的第一天

我是重庆某二本的计算机学生 所有人都说计算机不好走 不过为了给小时候的自己圆梦我还是义无反顾的报了计算机。 学习计算机的顺序应该是什么呢?其实我不知道,跟着课上走一步看一步吧。现在在学c,下一步是python,希望大一上学期可…

2026/9/24 3:24:32 阅读更多 →

最新新闻

AI陪伴机器人API设计-api-users到api-alerts的二十个接口

AI陪伴机器人API设计-api-users到api-alerts的二十个接口

05-API设计-api-users到api-alerts的二十个接口黒漂技术佬 AI 伙伴(AI-Partner)「数据接口部署与二次开发」系列 05数据层拆完了,这篇上到接口层。AI 伙伴后端一共 9 个 Controller、19 个 HTTP 接口,全部基于 http://localhost:…

2026/9/24 4:03:53 阅读更多 →
SSM毕设项目:基于 SSM 的视频课程资源管理系统的设计与实现 基于 SSM 的在线学习资源推送系统 (源码+文档,讲解、调试运行,定制等)

SSM毕设项目:基于 SSM 的视频课程资源管理系统的设计与实现 基于 SSM 的在线学习资源推送系统 (源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/24 4:03:53 阅读更多 →
GitHub趋势榜解读:从打不开到跑起来的全能实战指南

GitHub趋势榜解读:从打不开到跑起来的全能实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 4:03:53 阅读更多 →
LDO稳定性设计:STB仿真原理与相位裕度实战解析

LDO稳定性设计:STB仿真原理与相位裕度实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 4:03:53 阅读更多 →
牛客网 HJ61 放苹果

牛客网 HJ61 放苹果

牛客网 HJ61 放苹果题目链接:https://www.nowcoder.com/practice/bfd8234bb5e84be0b493656e390bdebf一、原题完整陈述 题目描述 把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?重点&#xff1…

2026/9/24 4:03:53 阅读更多 →
Qwen3-0.6B 后训练实践:一次被数据否定的预注册假设,以及 DPO 在小规模下的失效边界

Qwen3-0.6B 后训练实践:一次被数据否定的预注册假设,以及 DPO 在小规模下的失效边界

本文所有数字均来自本人单卡实测,原始 CSV / 日志见文末仓库。文中结论如无特别说明,均为 seed 42 单种子下的观察,不构成统计意义上的证明。 0. 为什么先写结论 这篇文章记录我做的一次完整的小模型后训练实验:在一张 RTX 4060 …

2026/9/24 4:02:52 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →