我想做的是制作一个Web应用程序,在一个视图中列出Openshift中部署的每个应用程序的版本(版本的快速视图(。目前,我看到找到部署在 pod 中的应用程序版本的唯一方法是环境视图中的ARTIFACT_URL
参数,这就是我要求该参数的原因,但如果有另一种方法可以获取 pod 及其当前应用程序的版本部署,只要我可以通过 API 获取它,我也对该选项持开放态度。也许我最终还需要一个检索当前 pod 列表的端点。
我已经研究了 Openshift API,我发现唯一可能对我有帮助的是这个 GET,但如果参数:id
是我想的,它会随着每次部署而变化,所以我需要不断修改它,这是不切实际的。显然,我还需要一个端点来获取 ID 列表或任何让我在请求ARTIFACT_URL
时识别 pod 的内容
谢谢!
有一种方法可以做到这一点。见 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
如果您在 Openshift 之外没有持久的应用程序版本控制信息,我建议重新设计构建和部署。
如果需要从正在运行的 pod 中获取应用程序版本(例如,按照其他地方的建议使用oc rsh
或oc env
(,那么您会遇到严重的可重现性问题。Git 应用于应用版本控制,所有应用生成和部署(即使在开发和测试环境中(也应完全自动化。
在 Openshift 中,您可以使用构建配置中的 Webhook 触发器和部署配置中的映像更改触发器实现完全自动化。
在 Openshift 之外,这可以使用 Jenkins 免费完成(如果你有可用的持久存储来保留其设置,它甚至可以在容器中运行(。
作为快速解决方法,您还可以考虑:
oc describe pods | grep ARTIFACT_URL
从所有 Pod 中获取环境变量的值列表(此处:ARTIFACT_URL
(。
相应的 pod 名称列表可以简单地使用 'oc get pods' 或第二次调用oc describe
来获取:
oc describe pods | grep "Name: "
(请注意过滤掉其他名称所需的 8 个空格:(