Openshift oc新应用程序如何映射另一个pod的秘密?
我在Openshift 3.9中有一个项目/名称空间。它有一个Mysql db 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
机密
在部署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
。(对不起,听起来可能有点神秘)。一些解决方案,如允许类似地使用和替换占位符值等。