Openshift-用于获取pod的ARTIFACT_URL参数或其已部署应用程序版本的API

时间:2019-11-28 12:31:45

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

我要做的是制作一个Web应用程序,该应用程序在一个视图中列出我们Openshift中部署的每个应用程序的版本(版本的快速视图)。目前,我看到的定位在pod中部署的应用程序版本的唯一方法是在环境视图中使用ARTIFACT_URL参数,这就是为什么我要求该参数的原因,但是是否还有另一种方法来获取该参数。 pod和已部署的当前应用程序的版本,只要可以通过API获取,我也可以选择该选项。也许最终我还需要一个可以检索当前容器列表的端点。

我研究了Openshift API,发现唯一可以帮助我的是GET,但是如果我认为参数:id随每次部署而变化,所以我需要不断对其进行修改,这是不切实际的。显然,我还需要一个端点来获取ID列表或在我请求ARTIFACT_URL

时可以识别出广告连播的其他内容

谢谢!

3 个答案:

答案 0 :(得分:0)

有一种方法可以做到这一点。参见https://docs.openshift.com/enterprise/3.0/dev_guide/environment_variables.html

列出环境变量

要列出Pod或Pod模板中的环境变量,请执行以下操作:

  

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

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

  

$ oc env pod/p1 --list

答案 1 :(得分:0)

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

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

在Openshift中,您可以使用Build Config中的Webhook Triggers和Deployment Config中的Image Change Triggers来实现完全自动化。

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

答案 2 :(得分:0)

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

.element { padding: 1.5rem; border: 1px darkgray solid; } .one { background: rgb(121, 172, 74); } .two { background: rgb(71, 73, 190); } .three { background-color: rgb(148, 71, 71); } .four { background: rgb(151, 39, 142); } #container.col { display: grid; grid-template-columns: repeat(auto-fill, minmax(45vh, 1fr)); margin-top: 20px; }

从所有窗格中获取环境变量的值列表(此处为oc describe pods | grep ARTIFACT_URL)。

只需使用'oc get pods'或第二次调用ARTIFACT_URL,即可获得相应的pod名称列表:

oc describe

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