插件
创建新的插件
要创建插件,首先 fork minikube 仓库,并检出你的 fork
git clone git@github.com:<username>/minikube.git
然后进入源代码目录
cd minikube
创建一个子目录
mkdir deploy/addons/<addon name>
将你的清单 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
然后,将要复制到集群中的文件列表(包括清单)添加到 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
参数是
- 资产变量(通常存在于
deploy/addons/assets.go
中) - 源文件名
- 目标目录(通常为
vmpath.GuestAddonsDir
) - 目标文件名
- 权限(通常为
0640
) - 表示是否需要模板替换的布尔值(通常为
false
)
最后一行的布尔值表示该插件是否应默认启用。这应始终为 false
。此外,在最后一行的插件名称之后是维护者字段。这是为了告知用户插件映像的控制方。在上面的示例中,维护者是 Google,因为 registry 插件使用 Google 控制的映像。在创建新插件时,应联系映像的来源,并询问他们是否愿意作为此插件的联系点,然后再将其放置。如果来源不接受此责任,则将维护者字段留空是可以接受的。
要查看其他示例,请参阅 插件提交历史记录 以了解其他最近的示例。
“addons open” 支持
如果你的插件包含 NodePort 服务,请添加 kubernetes.io/minikube-addons-endpoint: <插件名称>
标签,该标签由 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
测试完插件后,单击 新建 pull request 向我们发送你的 PR!