go - 使用 Golang 客户端在 Kubernetes 中创建 Secret 的问题

标签 go kubernetes

我有以下代码:

secret, err = d.serviceClient.Secrets(namespace).Get(secret.Name, metav1.GetOptions{})
if err != nil {
    // If not found, create a new secret
    if _, err := d.serviceClient.Secrets(namespace).Create(secret); err != nil {
        return errors.Wrap(err, "error creating user secrets")
    }
}

以及生成 secret 的代码:
func generateDatabaseSecret(message types.Deployment) *apiv1.Secret {
    data := map[string][]byte{
        "TEST":     []byte("test"),
    }
    object := metav1.ObjectMeta{Name: "test"}
    secret := &v1.Secret{Data: data, ObjectMeta: object}

    output, _ := json.Marshal(secret)
    log.Println(string(output))
    return secret

}

但是,当我对我的 Kubernetes 集群运行上述命令时,我收到以下错误:
 error creating user secrets: Secret "" is invalid: metadata.name: Required value: name or generateName is required

即使 JSON 编码的 secret 如下:
{"metadata":{"name":"test","creationTimestamp":null},"data":{"TEST":"bG9jYWxsb3N0"}

我在这里错过了一些非常明显的东西吗?这没有任何意义

最佳答案

正如 David Maze 在评论中悲伤的那样,你调用了错误的方法 Create而不是 generateDatabaseSecret .

关于go - 使用 Golang 客户端在 Kubernetes 中创建 Secret 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62281630/

相关文章:

docker - Kubernetes 持久卷声明创建一个新的持久卷,而不是绑定(bind)到可用的持久卷

templates - {{template "base"}} 和 {{template "base".}} 在 go-gin 中的区别

go - 在 Go 中重复函数调用的 For 循环

mysql - 如何处理 sql.ErrTxDone

go - 附加到 for 循环中的 slice 并产生意外结果

kubernetes - 通过查找 Ingress URL 访问 POD 的 IP 地址

postgresql - 使用 kubectl apply 命令重新配置 postgres

go - 无法让测试适用于 INSERT 语句

kubernetes - 在 helm 部署中连接环境变量?

php - php 测试应用程序的 Kubernetes 部署