我正在使用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。
任何想法表示赞赏。
谢谢。
答案 0 :(得分:1)
简短的回答:否。至少不是直接。尽管有两种解决方法,但我可以看到您可能会发现可行的。
首先,在带有您的版本标签的providint图像中,在容器上设置一个标签/注释,以指示其版本,然后使用Downward API将数据向下传递到您的容器中
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烘焙的图像