如何解决如何使用Client-Go创建Docker Secret
假设我知道以下秘密参数:
"name": "aaa","docker-server": "a.b.com","docker-username": "aaa","docker-password": "aaaa","docker-email": "aaa@gmail.com"
然后我要使用client-go来创建拉取映像的秘密
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?
解决方法
来自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},}
否则,您可以尝试使用StringData
字段而不使用base64编码:
secret := &corev1.Secret{
ObjectMeta: metav1.ObjectMeta{
Name: "pull-image-secret",StringData: map[string]string{".dockerconfigjson": secretData},}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。