【问题标题】:How to create docker Secret with client-go如何使用 client-go 创建 docker Secret
【发布时间】:2021-02-21 18:38:06
【问题描述】:

假设我知道以下秘密参数:

"name":            "aaa",
"docker-server":   "a.b.com",
"docker-username": "aaa",
"docker-password": "aaaa",
"docker-email":    "aaa@gmail.com"

那我想用client-go创建一个pull-image secret

secret := &corev1.Secret{
    ObjectMeta: metav1.ObjectMeta{
        Name:      "pull-image-secret",
        Namespace: "aaaaaa",
    },
    Type: "kubernetes.io/dockerconfigjson",
    Data: map[string][]byte{".dockerconfigjson": []byte(secretData)},
}
err = k8sClient.Create(context.Background(), secret)

我的问题是,如何将秘密参数转换为secretData?

【问题讨论】:

    标签: kubernetes client-go


    【解决方案1】:

    来自docs

    Secret 对象的数据字段必须包含一个 .dockerconfigjson 键,其中 ~/.docker/config.json 文件的内容以 base64 编码字符串的形式提供

    因此,如果您想使用 Data 字段,则需要修改代码以对秘密数据进行 base64 编码,这样应该可以:

    import b64 "encoding/base64"
    
    ...
    
    base64EncodedData := make([]byte, b64.StdEncoding.EncodedLen(len(secretData)))
    b64.StdEncoding.Encode(base64EncodedData, []byte(secretData))
    
    secret := &corev1.Secret{
        ObjectMeta: metav1.ObjectMeta{
            Name:      "pull-image-secret",
            Namespace: "aaaaaa",
        },
        Type: "kubernetes.io/dockerconfigjson",
        Data: map[string][]byte{".dockerconfigjson": base64EncodedData},
    }
    

    否则,您可以尝试使用不带base64编码的StringData字段:

    secret := &corev1.Secret{
        ObjectMeta: metav1.ObjectMeta{
            Name:      "pull-image-secret",
            Namespace: "aaaaaa",
        },
        Type: "kubernetes.io/dockerconfigjson",
        StringData: map[string]string{".dockerconfigjson": secretData},
    }
    

    【讨论】:

    • 嗨,Grigoriy,我的问题是,``` myData map[string]string = { "name": "aaa", "docker-server": "abcom", "docker-username" : "aaa", "docker-password": "aaaa", "docker-email": "aaa@gmail.com"} ``` 如何将 myData 转换为 []byte(secretData)?
    • @Joe 那么,您问如何将映射转换为字节切片?试试data, _ := json.Marshal(myData)
    猜你喜欢
    • 2018-11-03
    • 2013-12-27
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 2022-11-20
    相关资源
    最近更新 更多