4

我想做的是制作一个 Web 应用程序,在一个视图中列出部署在 Openshift 中的每个应用程序的版本(版本的快速视图)。目前,我看到定位部署在 pod 中的应用程序版本的唯一方法是ARTIFACT_URL环境视图中的参数,这就是我要求该参数的原因,但是如果还有其他方法可以获取 pod 和版本它当前部署的应用程序,只要我可以通过 API 获得它,我也愿意接受该选项。也许我最终还需要一个端点来检索当前 pod 的列表。

我查看了 Openshift API,发现唯一可能对我有帮助的是这个GET但如果参数:id是我认为的,它会随着每次部署而改变,所以我需要不断修改它,而不是实际的。显然,我还需要一个端点来获取 ID 列表或任何让我在请求ARTIFACT_URL

谢谢!

4

3 回答 3

1

有办法做到这一点。请参阅https://docs.openshift.com/enterprise/3.0/dev_guide/environment_variables.html

列出环境变量

列出 pod 或 pod 模板中的环境变量:

$ oc env <object-selection> --list [<common-options>]

此示例列出了 pod p1 的所有环境变量:

$ oc env pod/p1 --list

于 2019-12-07T13:27:21.083 回答
0

作为一种快速解决方法,您还可以考虑:

oc describe pods | grep ARTIFACT_URL

ARTIFACT_URL从所有 pod中获取环境变量的值列表(此处为:)。

可以简单地使用 'oc get pods' 或第二次调用来获得相应的 pod 名称列表oc describe

oc describe pods | grep "Name: "

(请注意过滤掉其他名称所需的 8 个空格:)

于 2019-12-07T13:49:47.833 回答
0

如果您在 Openshift 之外没有持久的应用程序版本控制信息,我建议重新设计构建和部署。

如果需要从正在运行的 pod 中获取应用程序版本(例如,使用oc rshoc env按照其他地方的建议),那么您将遇到严重的可重复性问题。Git 应该用于应用程序版本控制,所有应用程序的构建和部署,即使是在开发和测试环境中也应该是完全自动化的。

在 Openshift 中,您可以使用构建配置中的Webhook 触发器和部署配置中的映像更改触发器来实现完全自动化。

在 Openshift 之外,这可以使用 Jenkins 来免费完成(如果您有可用于保存其设置的持久存储,它甚至可以在容器中运行)。

于 2019-12-07T13:37:56.393 回答