SuperAPI AI 工具集

kubespray-helm-airgap

部署与运维

查看项目

更新于 10-24 01:25

技能介绍

用途与背景

本技能文档面向在隔离网络(air-gapped)环境中部署 Kubernetes 应用时管理 Helm Chart 的场景。由于无法访问公共 Helm 仓库,需要预先将 Chart 及其引用的容器镜像转移到内部存储,再在隔离集群中安装。文档给出两种内部存储方案:传统 Helm 仓库服务器(以 ChartMuseum 为例)和现代 OCI 兼容容器注册表(如 Harbor、Docker Registry、Zot)。核心原则是:将 Helm Chart 与其引用的容器镜像一起打包,并提前暂存到内部注册表,然后再部署。

主要能力

  • 比较 Helm Repo 与 OCI Registry 在存储、部署命令、认证、安全、优缺点及示例 URL 上的差异。
  • 从零创建 Helm Chart,并通过 helm template 校验渲染结果,使用 helm package 打包为 tgz。
  • 将 Chart 推送到 OCI 注册表,并验证存储、安装、查看元数据与 values。
  • 部署 ChartMuseum 作为传统 Helm 仓库,注册仓库、安装 helm-push 插件并推送 Chart。
  • 在联网机器上从公共 OCI 注册表拉取 Chart,检查内容后转移至隔离环境,直接安装或推送到内部仓库。
  • 为 Chart 引用的容器镜像做内部暂存:拉取、重打标签、推送到内部注册表,并在安装时覆盖镜像地址。

使用方式

文档按操作流程给出具体命令。创建 Chart 时需编写 Chart.yaml、values.yaml 和 templates 下的资源清单,然后执行 helm template my-release . -f values.yaml 校验,最后 helm package . 生成 tgz。

使用 OCI 注册表时,执行 helm push nginx-chart-1.0.0.tgz oci://192.168.10.10:35000/helm-charts 推送,通过 helm install my-nginx oci://192.168.10.10:35000/helm-charts/nginx-chart --version 1.0.0 安装。该方式要求 Helm 3.8+,且不使用 helm repo add。

使用 ChartMuseum 时,以容器方式运行 ChartMuseum 并挂载本地存储目录,通过 helm repo add internal http://192.168.10.10:8080 注册仓库,安装 helm-push 插件后使用 helm cm-push 推送 Chart,再用 helm install my-nginx internal/nginx-chart 安装。

离线使用外部 Chart 时,在联网机器上执行 helm pull oci://registry-1.docker.io/bitnamicharts/nginx --version 22.4.7 获取 tgz,检查内容后通过 USB 或堡垒机 SCP 等方式转移到隔离环境,可直接 helm install my-nginx ./nginx-22.4.7.tgz 安装,或先推送到内部 OCI 注册表/ChartMuseum。

容器镜像暂存需先确认 Chart 引用的镜像,使用 podman 拉取、重打标签并推送到内部注册表;对于 HTTP 注册表需在 /etc/containers/registries.conf 中配置 insecure。安装时通过 --set image.repository=192.168.10.10:35000/bitnami/nginx 覆盖镜像地址。

适用场景

  • 在隔离网络的 Kubernetes 集群中部署 Helm Chart。
  • 搭建内部 Helm Chart 仓库或使用 OCI 注册表存储 Chart。
  • 将 Chart 打包并转移到隔离网络。
  • 在隔离环境中部署 ChartMuseum。

限制与注意事项

文档列出常见错误:忘记推送 Chart 引用的容器镜像会导致 Pod 出现 ImagePullBackOff;未配置非安全注册表会导致 podman push 失败;使用 ChartMuseum 时缺少 helm-push 插件则 helm cm-push 不可用;OCI 注册表不适用 helm repo add,应使用 helm push 和 helm install oci://;Chart values 若引用公共镜像仓库,需在安装时用 --set image.repository 覆盖为内部地址。文档未提供具体认证配置、安全策略细节、ChartMuseum 高可用或持久化存储方案,这些暂未提供。