使用Golang客户端在Kubernetes中创建秘密的问题

使用Golang客户端在Kubernetes中创建秘密的问题,go,kubernetes,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 er

我有以下代码:

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")
    }
}
以及生成秘密的代码:

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编码的秘密如下所示:

{"metadata":{"name":"test","creationTimestamp":null},"data":{"TEST":"bG9jYWxsb3N0"}

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

因为David Maze在评论中悲伤,你调用了错误的方法
Create
,而不是像David Maze在评论中悲伤一样
generateDatabaseSecret
,您调用了错误的方法
Create
而不是
generateDatabaseSecret

,看起来您的代码没有调用
generateDatabaseSecret
;它使用失败的
Get
调用返回的(可能是零值的)
secret
调用
Create
方法。哦,天哪,你完全正确!我真傻!看起来您的代码没有调用
generateDatabaseSecret
;它使用失败的
Get
调用返回的(可能是零值的)
secret
调用
Create
方法。哦,天哪,你完全正确!我真傻!