Kubernetes / Helm-通过部署获取Docker映像版本

时间:2018-10-15 03:27:34

标签: docker kubernetes kubernetes-helm

我正在使用Kubernetes + Helm-并想问问是否有可能获得spec容器中指定的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并将其设置为env var。

任何想法表示赞赏。

谢谢。

1 个答案:

答案 0 :(得分:1)

简短的回答:否。至少不是直接。尽管有两种解决方法,但我可以看到您可能会发现可行的。


首先,在带有您的版本标签的providint图像中,在容器上设置一个标签/注释,以指示其版本,然后使用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构建期间烘烤版本:

Dockerfile:

FROM ubuntu
ARG VERSION=undefined
ENV VERSION=$VERSION

使用

之类的构建命令

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

这将为您提供带有您的版本值的env var烘焙的图像