从 Kubernetes CRD 到 Go 导入

gue*_*tli 6 go kubernetes visual-studio-code

想象一下,您想要KubeadmControlPlane从 kubernetes API 服务器调用 kind/struct。

这意味着您需要将相关结构导入到您的代码中。

匹配的导入语句KubeadmControlPlane是:

kubeadm“sigs.k8s.io/cluster-api/controlplane/kubeadm/api/v1beta1”

到目前为止我需要很多时间来找到匹配的导入语句。

我用的是vscode。

如何从 CRD 类型转换为 import 语句?

Von*_*onC 3

原则上, a go get sigs.k8s.io/cluster-api@v1.4.2(在您所在的文件夹中完成go.mod)应该足以:

  • 更新你的go.mod
  • 将库添加到您的$GOPATH并且
  • 启用 VSCode 自动导入功能。

这意味着,当您开始输入结构体的名称(例如 )时KubeadmControlPlane,如果VSCode Go 扩展GOPATH可以在您或项目的供应商目录中找到匹配的包,则它应该建议自动导入。


如果没有,手动过程将是:

  1. 识别 CRD 的 API 组和版本:此信息通常可以在apiVersionCRD YAML 文件的字段中找到。例如,KubeadmControlPlane是 API 组和版本的一部分controlplane.cluster.x-k8s.io/v1beta1

  2. 查找该API组的Go包:您需要找到该API组对应的Go包。
    对于KubeadmControlPlane,它是项目的一部分sigs.k8s.io/cluster-api,具体的包路径是sigs.k8s.io/cluster-api/controlplane/kubeadm/api/v1beta1
    搜索也有效pkg.go.dev,等待官方 API 来查找包(问题 36785)。

  3. 识别 CRD 的 Go 结构体: Go 结构体的命名通常与 CRD 的 Kind 类似。在这种情况下,它是KubeadmControlPlane

  4. 创建 Go 导入语句:获得包路径和结构名称后,就可以创建 Go 导入语句。例如:

import (
    kubeadm "sigs.k8s.io/cluster-api/controlplane/kubeadm/api/v1beta1"
)
Run Code Online (Sandbox Code Playgroud)