首页 > 解决方案 > Openshift oc new-app 如何映射另一个 pod 的秘密?

问题描述

我在 Openshift 3.9 中有一个项目/命名空间。它有一个 Mysql db pod,凭据详细信息存储为secrets.

在此处输入图像描述

在部署我的 Springboot 应用程序时,在 Openshift UI 中,我更改了Deployment Configuration将动态变量从我的 APP 映射到 Mysql 机密。

在此处输入图像描述

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

oc new-app redhat-openjdk18-openshift~https://github.com/xyzasdkjasnda/openshift-mysql

我在某处看到了如下解决方法,

oc new-app redhat-openjdk18-openshift~ https://github.com/xyzasdkjasnda/openshift-mysql | jq '.items[] | 选择(.kind ==“部署配置”)| .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 应用--文件名-

标签: openshiftopenshift-originopenshift-client-tools

解决方案


虽然oc new-app看起来很方便,但通常首选显式创建一个DeploymentConfig(或 Deployment)文件并将其签入代码仓库;用于oc create -f <deployment-filename>在 OpenShift 中创建实际对象。

有关如何使用 Secrets 中的值填充环境变量的信息,请参见此处的示例 #3 - 这就是“解决方法”的作用。

或者,您仍然可以使用oc new-app创建新应用程序,包括从源代码构建它,这将创建 DeploymentConfig,然后您可以编辑以从 Secrets 配置中添加环境变量。


推荐阅读