首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Openshift/OKD -如何模板码头机密

Openshift/OKD -如何模板码头机密
EN

Stack Overflow用户
提问于 2019-03-29 15:49:03
回答 1查看 1.6K关注 0票数 3

作为一个拥有大量参数化Openshift模板的管理员,我很难在模板中为kubernetes.io/dockerconfigjson或kubernetes.io/dockercfg创建一个参数化的秘密对象,这样就可以将秘密用于docker拉出。

挑战:对于普通的dockerconfigjson模板设置,一切都是用JSON格式编码的,并且不确定如何更改它。

问题:如何创建一个秘密模板,该模板接受参数${DOCKER_USER}、${DOCKER_PASSWORD}、${DOCKER_SERVER}和${DOCKER_EMAIL},然后创建实际的秘密,该秘密可用于从私有/安全的码头注册表中提取码头图像。

这将取代命令行"oc创建秘密坞-注册表.“方法是将它们放入存储在gitlab/github中的模板文件中,使其具有gitOps风格的部署模式。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-29 16:26:33

码头配置机密的格式可以在使用秘密部分的文档(或通过使用秘密在集群中找到)中找到。

代码语言:javascript
复制
apiVersion: v1
kind: Secret
metadata:
  name: aregistrykey
  namespace: myapps
type: kubernetes.io/dockerconfigjson 
data:
  .dockerconfigjson:<base64encoded docker-config.json>

一种方法是接受模板参数中json文件的预基64编码内容,并将它们填充到数据部分。

代码语言:javascript
复制
apiVersion: v1
kind: Secret
metadata:
  name: aregistrykey
  namespace: myapps
type: kubernetes.io/dockerconfigjson 
data:
  .dockerconfigjson:${BASE64_DOCKER_JSON}

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

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

代码语言:javascript
复制
apiVersion: v1
kind: Secret
metadata:
  name: aregistrykey
  namespace: myapps
type: kubernetes.io/dockerconfigjson 
stringData:
  .dockerconfigjson:${REGULAR_DOCKER_JSON}

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

代码语言:javascript
复制
apiVersion: v1
kind: Secret
metadata:
  name: aregistrykey
  namespace: myapps
type: kubernetes.io/dockerconfigjson 
stringData:
  .dockerconfigjson:'{"auths": {"${REGISTRY_URL}": {"auth": "${BASE64_USERNAME_COLON_PASSWORD}"}}}'

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55421059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档