使用go Kubernetes客户端创建自定义资源

1l5u6lss  于 2023-04-18  发布在  Go
关注(0)|答案(1)|浏览(131)

我想使用go Kubernetes客户端基于已经部署的CRD部署一个自定义资源。根据客户端的文档,我将示例修改为如下所示:

u := &unstructured.Unstructured{}
u.Object = map[string]interface{}{
    "metadata": map[string]interface{}{
        "name": task.Name,
    },
    "spec": map[string]interface{}{
        "steps": []interface{}{
            map[string]interface{}{
                "image": "ubuntu",
                "name":  "hello",
                "command": []interface{}{
                    "echo",
                },
                "args": []interface{}{
                    "Hello World!",
                },
            },
        },
    },
}
u.SetGroupVersionKind(schema.GroupVersionKind{
    Group:   "tekton.dev",
    Version: "v1beta1",
    Kind:    "Task",
})

err := c.Create(context.Background(), u)
if err != nil {
    logger.Error("Error creating TektonTask!", "ERR", err)
} else {
    logger.Info("Created TektonTask.", "Task", u)
}

当我尝试执行代码时,我没有从日志记录器获得反馈。错误,但出现以下panic:

runtime error: invalid memory address or nil pointer dereference
goroutine 12

一切都运行在一个http请求处理,但因为我用其他(非crd为基础)资源已经我会假设这不是问题.当扩大日志,我看到一切工作,直到创建的资源与行

err := c.Create(context.Background(), u)
jogvjijk

jogvjijk1#

找到问题了。我忘了初始化客户端

c, err := client.New(config.GetConfigOrDie(), client.Options{})

相关问题