【问题标题】:Kubernetes/Helm - Obtaining Docker image version from deploymentKubernetes/Helm - 从部署中获取 Docker 镜像版本
【发布时间】:2018-10-15 03:27:34
【问题描述】:

我正在使用 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 并将其设置为 env var。

任何想法表示赞赏。

谢谢。

【问题讨论】:

  • 我不确定我是否非常清楚地了解您的情况,请您详细说明一下需求。我认为在大多数情况下,只需添加副本 > 1 就可以达到目的
  • 我认为您只需将版本号提取到 values.yaml 中并在您想要的位置重新使用它。

标签: docker kubernetes kubernetes-helm


【解决方案1】:

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


首先,除了提供带有您的版本标签的图像之外,在 pod 上设置一个标签/注释来指示它的版本,并使用 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 build 期间轻松地将版本烘焙,例如:

Dockerfile:

FROM ubuntu
ARG VERSION=undefined
ENV VERSION=$VERSION

使用构建命令,如

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

这会给你一个带有你版本值的烘焙环境变量的图像

【讨论】:

  • 好的 - 我想我会沿着路线 1 走
猜你喜欢
  • 2019-02-28
  • 2021-11-29
  • 2019-11-26
  • 2023-03-18
  • 2016-12-29
  • 2019-03-29
  • 2015-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多