Openshift/OKD-如何模板化docker机密

Openshift/OKD-如何模板化docker机密,openshift,okd,Openshift,Okd,作为一名拥有大量参数化Openshift模板的管理员,我正在努力在kubernetes.io/dockerconfigjson或kubernetes.io/dockercfg类型的模板中创建一个参数化的秘密对象,以便将秘密用于docker拉取 挑战:对于正常的dockerconfigjson模板设置,所有内容都是以JSON格式预base64编码的,不知道如何更改 问题:如何创建一个秘密模板,该模板接受参数${DOCKER\u USER}、${DOCKER\u PASSWORD}、${DOCKER

作为一名拥有大量参数化Openshift模板的管理员,我正在努力在kubernetes.io/dockerconfigjson或kubernetes.io/dockercfg类型的模板中创建一个参数化的秘密对象,以便将秘密用于docker拉取

挑战:对于正常的dockerconfigjson模板设置,所有内容都是以JSON格式预base64编码的,不知道如何更改

问题:如何创建一个秘密模板,该模板接受参数${DOCKER\u USER}、${DOCKER\u PASSWORD}、${DOCKER\u SERVER}和${DOCKER\u EMAIL},然后创建可用于从私有/安全DOCKER注册表中提取DOCKER图像的实际秘密

这是为了替换命令行“occreatesecretdockerregistry…”技术,方法是将它们放在gitlab/github中存储的模板文件中,以具有gitOps样式的部署模式


谢谢

docker配置机密的格式可以在文档中找到(或通过
oc export secret/mysecret
在集群中找到)

另一种方法是使用机密对象的stringData字段。如同页所述:

stringData映射中的条目将转换为base64,然后该条目将自动移动到数据映射。此字段仅为写字段;该值将仅通过数据字段返回

.dockerconfigjson键的实际值的格式与
.docker/config.json
文件的内容相同。因此,在您的具体情况下,您可能会执行以下操作:

apiVersion: v1
kind: Secret
metadata:
  name: aregistrykey
  namespace: myapps
type: kubernetes.io/dockerconfigjson 
stringData:
  .dockerconfigjson:'{"auths": {"${REGISTRY_URL}": {"auth": "${BASE64_USERNAME_COLON_PASSWORD}"}}}'

不幸的是,OpenShift用于模板的模板语言功能不够强大,无法为您对实际参数值进行base64编码,因此您无法完全避免在模板本身之外对
username:password
对进行编码,但是您的CI/CD工具应该能够对原始用户名/密码字符串执行此操作。

谢谢Nick,他独立得出了auth值所需的base64编码的相同结论,但这是我可以使用的,谢谢!apiVersion:v1 kind:Secret metadata:name:aregistrykey命名空间:myapps类型:kubernetes.io/dockerconfigjson stringData:.dockerconfigjson:“{”auths:{{”${REGISTRY\u URL}:{”auth:“${BASE64\用户名\冒号\密码}”
apiVersion: v1
kind: Secret
metadata:
  name: aregistrykey
  namespace: myapps
type: kubernetes.io/dockerconfigjson 
data:
  .dockerconfigjson:${BASE64_DOCKER_JSON}
apiVersion: v1
kind: Secret
metadata:
  name: aregistrykey
  namespace: myapps
type: kubernetes.io/dockerconfigjson 
stringData:
  .dockerconfigjson:${REGULAR_DOCKER_JSON}
apiVersion: v1
kind: Secret
metadata:
  name: aregistrykey
  namespace: myapps
type: kubernetes.io/dockerconfigjson 
stringData:
  .dockerconfigjson:'{"auths": {"${REGISTRY_URL}": {"auth": "${BASE64_USERNAME_COLON_PASSWORD}"}}}'