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/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 .
这将为您提供一个包含带有您的版本值的环境变量的图像
我正在使用 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/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 .
这将为您提供一个包含带有您的版本值的环境变量的图像