基于 Helm 的插件

如何使用 Helm charts 开发 minikube 插件。

概述

Minikube 支持创建通过 Helm charts 部署的插件。这使得更复杂的应用程序可以作为插件进行管理。本指南将指导你创建基于 Helm 的插件。

有关创建插件的通用概述,请先参阅 创建新插件 指南。本指南侧重于基于 Helm 的插件的特定内容。

创建基于 Helm 的插件

创建基于 Helm 的插件与创建标准插件非常相似,只是插件的定义方式有几个关键区别。

1. 在 pkg/minikube/assets/addons.go 中定义插件

基于 Helm 的插件的核心是你 Addon 定义中的 HelmChart 结构体。你将在 pkg/minikube/assets/addons.go 中定义你的插件。

下面是一个基于 Helm 的插件定义示例

"my-helm-addon": NewAddon(
    []*BinAsset{}, // Usually empty for pure Helm addons
    false,
    "my-helm-addon",
    "Your Name",
    "",
    "path/to/your/addon/docs.md",
    map[string]string{
        // Optional: Define images for caching if not in the chart
    },
    map[string]string{
        // Optional: Define registries for images
    },
    &HelmChart{
        Name:      "my-helm-addon-release",
        Repo:      "oci://my-repo/my-chart",
        Namespace: "my-addon-namespace",
        Values: []string{
            "key1=value1",
            "key2=value2",
        },
        ValueFiles: []string{
            // Paths to values files inside the minikube VM
        },
    },
),

HelmChart 结构体字段

  • Name:Helm 安装的 release 名称(helm install <release-name>)。
  • Repo:Helm chart 仓库 URL(例如,stable/chart-nameoci://my-repo/my-chart)。
  • Namespace:要将 chart 安装到的 Kubernetes 命名空间。始终使用 --create-namespace 标志。
  • Values:字符串切片,用于通过 --set 设置单个值(例如,key=value)。
  • ValueFiles:字符串切片,指向 minikube VM 内部的 YAML 值文件路径。这些文件将通过 --values 标志传递给 Helm。

当插件被启用时,minikube 将自动确保 helm 二进制文件已安装在集群中,然后使用你定义的参数运行 helm upgrade --install。当禁用时,它将运行 helm uninstall

2. 将插件添加到 pkg/addons/config.go

要使你的插件对 minikube addons list 可见并使其可管理,你需要为它在 pkg/addons/config.go 中添加一个条目。

{
    name:      "my-helm-addon",
    set:       SetBool,
    callbacks: []setFn{EnableOrDisableAddon},
},

3. 测试你的 Helm 插件

要测试你的新插件,请重新构建 minikube 并启用它

make && ./out/minikube addons enable my-helm-addon

然后,你可以使用 kubectl 来验证 Helm chart 是否已正确部署。

kubectl -n my-addon-namespace get pods

最后修改于 2025 年 11 月 8 日:添加基于 Helm 的插件文档 (dd0222ee5)