【问题标题】:Openshift oc new-app how to maps secrets of another pod?Openshift oc new-app 如何映射另一个 pod 的秘密?
【发布时间】:2019-12-03 18:04:21
【问题描述】:

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

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

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

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

我在某处看到了类似下面的解决方法,

oc 新应用 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 应用 --filename -

【问题讨论】:

    标签: openshift openshift-origin openshift-client-tools


    【解决方案1】:

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

    请参阅Example #3 here,了解如何使用 Secrets 中的值填充环境变量 - 这就是“解决方法”的作用。

    或者,您仍然可以使用 oc new-app 创建一个新应用程序,包括 building it from source code,它将创建 DeploymentConfig,然后您可以使用 edit 从 Secrets 配置中添加环境变量。

    【讨论】:

    • 好的,假设我使用dc.json 进行部署配置,并且我在dc.json 中添加了一些变量,例如${APP_NAME}。我们如何在oc create -f dc.json 中传递这些变量
    • 我使用了以下方法:用要替换的值定义环境变量(例如export APP_NAME=my-app);通过grep-ing 预处理具有占位符(例如${APP_NAME})的yaml文件(json也可以工作),用于${}之间的分隔符和eval-将其作为环境变量;通过sed 搜索n-replace 具有评估的环境变量值的占位符;将结果传递给oc apply。 (对不起,这可能听起来很神秘)。 helm 等一些解决方案允许类似地使用和替换占位符值等等。
    猜你喜欢
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 2023-03-28
    相关资源
    最近更新 更多