Openshift oc新应用程序如何映射另一个pod的秘密?

Openshift oc新应用程序如何映射另一个pod的秘密?,openshift,openshift-origin,openshift-client-tools,Openshift,Openshift Origin,Openshift Client Tools,我在Openshift 3.9中有一个项目/名称空间。它有一个Mysql db pod,凭证详细信息存储为机密 在部署Springboot应用程序时,我在Openshift UI中更改部署配置,将动态变量从我的应用程序映射到Mysql 现在我想自动化这一步,以及如何在使用ocnewappcmd时提及/传递这些秘密。我正在使用下面的命令,但不确定如何将变量传递/映射到secrets oc new-app redhat-openjdk18-openshift~https://github.com

我在Openshift 3.9中有一个项目/名称空间。它有一个Mysql db pod,凭证详细信息存储为
机密

在部署Springboot应用程序时,我在Openshift UI中更改
部署配置
,将动态变量从我的应用程序映射到Mysql

现在我想自动化这一步,以及如何在使用
ocnewapp
cmd时提及/传递这些秘密。我正在使用下面的命令,但不确定如何将变量传递/映射到secrets

oc new-app redhat-openjdk18-openshift~https://github.com/xyzasdkjasnda/openshift-mysql
在某个地方,我看到了下面这样的解决方法

oc新应用程序 redhat-openjdk18-openshift~ |jq'.items[]|选择(.kind==“DeploymentConfig”)| .spec.template.spec.containers[0].env+= [{“name”:“db_name”,“valueFrom”:{“secretKeyRef”:{“key”:“database name”,“name”:“mysql”}}},{“name”:“db_username”,“valueFrom”:{“secretKeyRef”:{“key”:“database user”,“name”:“mysql”}},{“name”:“db_password”,“valueFrom”:{“secretKeyRef”:{“key”:“database password”,“name”:“mysql”}}] | \ oc应用--文件名-


虽然
ocnewapp
似乎很方便,但通常更倾向于显式创建(或部署)文件并将其签入代码repo;使用
occreate-f
在OpenShift中创建实际对象

有关如何使用Secrets中的值填充环境变量的信息,请参阅,这就是“变通方法”的作用


或者,您仍然可以使用
ocnewapp
创建一个新的应用程序,包括,它将创建DeploymentConfig,然后您可以从Secrets configuration添加环境变量。

好的,假设我使用
dc.json
进行部署配置,并且我添加了一些变量,如
${app_NAME}
dc.json中的
。我们如何在
occreate-fdc.json
中传递这些变量我使用了以下方法:用要替换的值定义env vars(例如
export APP_NAME=my APP
);通过
grep
-ing对包含占位符(例如
${APP_NAME}
)的yaml文件(json也可以工作)进行预处理,以确定
${/code>和
}
分隔符之间的内容,并将其作为环境变量进行评估;搜索-n-通过
sed
占位符替换已评估的环境变量值;将结果传递给oc apply
。(对不起,听起来可能有点神秘)。一些解决方案,如允许类似地使用和替换占位符值等。