Kubernetes/Helm - 从部署中获取 Docker 映像版本

Kubernetes/Helm - Obtaining Docker image version from deployment

我正在使用 Kubernetes+Helm - 并想询问是否可以获得规范容器中指定的 Docker 版本。例如,我有以下部署:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
        - name: test
          image: myrepo.com/animage:0.0.3
          imagePullPolicy: Always
          command: ["/bin/sh","-c"]
          args: [“work”]
          envFrom:
          - configMapRef:
              name: test

然后我有另一个部署,我想在其中获得 Docker 版本号 0.0.3 并将其设置为环境变量。

任何想法表示赞赏。

谢谢。

简答:不。至少不是直接的。虽然有两种解决方法,但我认为您可能会觉得可行。


首先,除了带有版本标签的 providint 图像之外,在 pod 上设置一个 label/annotation 来指示它的版本,并使用 Downward API 将该数据传递到您的容器

https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/

https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/


其次,如果您确实拥有构建该映像的过程,则可以在 docker 构建过程中使用类似 :

的方式轻松烘焙版本

Docker 文件:

FROM ubuntu
ARG VERSION=undefined
ENV VERSION=$VERSION

使用像

这样的构建命令

docker build --build-arg VERSION=0.0.3 -t myrepo.com/animage:0.0.3 .

这将为您提供一个包含带有您的版本值的环境变量的图像