登录
首页 >  Golang >  Go问答

使用Go编写Kubernetes客户端以创建自定义资源

来源:stackoverflow

时间:2024-02-09 17:48:20 160浏览 收藏

怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《使用Go编写Kubernetes客户端以创建自定义资源》,涉及到,有需要的可以收藏一下

问题内容

我想使用 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)
}

当我尝试执行代码时,我没有从记录器获得反馈。错误,但出现恐慌:

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

一切都在 http 请求处理中运行,但因为我已经将其与其他(非基于 crd 的)资源一起使用,所以我认为这不是问题。 当扩展日志记录时,我发现一切正常,直到使用该行创建资源

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

正确答案


发现问题了。我忘记初始化客户端了

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

以上就是《使用Go编写Kubernetes客户端以创建自定义资源》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>