基于 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-name或oci://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