我想使用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)
1条答案
按热度按时间jogvjijk1#
找到问题了。我忘了初始化客户端