附加组件

如何开发 minikube 插件

创建新插件

要创建插件,请先 fork minikube 仓库,然后检出您的 fork

git clone git@github.com:<username>/minikube.git

然后进入源代码目录

cd minikube

创建子目录

mkdir deploy/addons/<addon name>

将您的 manifest YAML 文件添加到您创建的目录中

cp *.yaml deploy/addons/<addon name>

注意:如果插件永远不需要 GCP 身份验证,那么请考虑为 pod 的 yaml 添加以下标签

gcp-auth-skip-secret: "true"

要使插件出现在 minikube addons list 中,请将其添加到 pkg/addons/config.go。以下是 registry 插件使用的条目,它适用于任何不需要自定义代码的插件

  {
    name:      "registry",
    set:       SetBool,
    callbacks: []setFn{EnableOrDisableAddon},
  },

接下来,使用 //go:embed 指令将所有必需文件添加到 deploy/addons/assets.go 中的新 embed.FS 变量。以下是 csi-hostpath-driver 插件使用的条目

	// CsiHostpathDriverAssets assets for csi-hostpath-driver addon
	//go:embed csi-hostpath-driver/deploy/*.tmpl csi-hostpath-driver/rbac/*.tmpl
	CsiHostpathDriverAssets embed.FS

然后,将要复制到集群的文件列表(包括 manifest)添加到 pkg/minikube/assets/addons.go 中。以下是 registry 插件使用的条目

  "registry": NewAddon([]*BinAsset{
    MustBinAsset(addons.RegistryAssets,
      "registry/registry-rc.yaml.tmpl",
      vmpath.GuestAddonsDir,
      "registry-rc.yaml",
      "0640",
      false),
    MustBinAsset(addons.RegistryAssets,
      "registry/registry-svc.yaml.tmpl",
      vmpath.GuestAddonsDir,
      "registry-svc.yaml",
      "0640",
      false),
    MustBinAsset(addons.RegistryAssets,
      "registry/registry-proxy.yaml.tmpl",
      vmpath.GuestAddonsDir,
      "registry-proxy.yaml",
      "0640",
      false),
  }, false, "registry", "google"),

MustBinAsset 参数是

  • asset 变量(通常存在于 deploy/addons/assets.go 中)
  • 源文件名
  • 目标目录(通常是 vmpath.GuestAddonsDir
  • 目标文件名
  • 权限(通常是 0640
  • 一个布尔值,表示是否需要模板替换(通常是 false

最后一行中的布尔值表示插件是否默认启用。这应该始终为 false。此外,在最后一行中,紧随插件名称的是维护者字段。此字段旨在告知用户插件镜像的控制方。在上面的例子中,维护者是 Google,因为 registry 插件使用的镜像由 Google 控制。创建新插件时,应联系镜像的来源,并在将其列入之前请求他们是否愿意成为该插件的联系人。如果来源不接受责任,将维护者字段留空是可以接受的。

要查看其他示例,请参阅 插件提交历史记录 以获取其他近期示例。

要添加基于 helm 的插件,请查看 基于 Helm 的插件

“插件打开”支持

如果您的插件包含 NodePort 服务,请添加 kubernetes.io/minikube-addons-endpoint: <addon name> 标签,该标签由 minikube addons open 命令使用

apiVersion: v1
kind: Service
metadata:
 labels:
    kubernetes.io/minikube-addons-endpoint: <addon name>

注意:minikube addons open 目前仅适用于 kube-system 命名空间:#8089

测试插件更改

重新构建 minikube 二进制文件并应用具有额外日志记录启用的插件

make && make test && ./out/minikube addons enable <addon name> --alsologtostderr

请注意,您每次更改 YAML 文件时都必须运行 make。要在新更改做出后禁用该插件,请运行

./out/minikube addons disable <addon name> --alsologtostderr

发送您的 PR

在测试完您的插件后,请点击 新拉取请求 将您的 PR 发送给我们!


最后修改于 2025 年 11 月 20 日:替换链接为 relref (00cfd2bb5)