如何找出当前作为容器映像部署在 OpenShift 中的应用程序版本?

How do I find out the application version that is currently deployed in OpenShift as a container image?

我已经在 OpenShift 中成功部署了一个 Spring 引导应用程序作为来自我们私有注册表的容器映像。到目前为止,一切都很好。 Hoever,我希望能够在 OC 中看到部署了哪个“版本”的应用程序,但我无法看到如何找到该信息。 我已将版本添加为容器标签,我可以看到导入图像时正在读取 docker 标签:

oc import-image my-app
imagestream.image.openshift.io/my-app imported

Name:                   my-app
Namespace:              my-playground
Created:                46 hours ago
Labels:                 app=my-app
                        app.kubernetes.io/component=my-app
                        app.kubernetes.io/instance=my-app
                        app.kubernetes.io/name=my-app
                        app.kubernetes.io/part-of=my-app-app
Annotations:            openshift.io/image.dockerRepositoryCheck=2022-02-25T10:52:18Z
...
Image Created:  15 minutes ago
...
Exposes Ports:  28888/tcp
Docker Labels:  label=version-0.0.2-SNAPSHOT
...

但是后来我在控制台 GUI 中进行了尝试,但我看不到有关添加到容器中的 dockers 标签的任何信息。我也可以通过带有 oc describe istag/my-app:latest 的 oc 客户端看到它们,但不能在 GUI 中看到它们。

有什么方法可以在某处添加版本信息,以便我可以在 Openshift 控制台中轻松查看它?是的,命令行很好,但为什么要使用两种工具,一个就足够了?

谢谢!

如果有任何其他地方我可以放置版本信息以便我可以从 GUI 中看到它,我洗耳恭听!

嗯,答案是它在 Web 控制台中不容易看到。控制台中没有任何地方可以看到图像流图像的 Docker 标签,所以... 我所做的是创建这个方便的小脚本来查询描述符,然后查询图像流以显示 docker 标签

#! /bin/bash
DEPLOYMENT_IMAGE_STREAM=`oc describe deployment/ | grep ImageStreamTag | grep -Po "\:[^\"]+"`
echo "Deployment specifies image stream: $DEPLOYMENT_IMAGE_STREAM"
DOCKER_LABEL_VERSION=`oc describe istag/$DEPLOYMENT_IMAGE_STREAM | grep "Docker Labels" | awk '{ print $3 }' | cut -d'=' -f2`
echo "Version specified in the image stream: $DOCKER_LABEL_VERSION"

请注意,这是一个特定于我们案例的粗略脚本,因为我们只需添加一个 Docker 标签并知道在哪里截断行。如果你需要使用它,你可能需要稍微调整一下 awks 和 cut 选项。 如果您使用的是 Deployment Config 而不是简单的 Deployment,则需要在第一行中将 deployment/$1 更改为 dc/$1。 干杯!