Kubernetes / Helm - получение версии образа Docker из развертывания - PullRequest
0 голосов
/ 15 октября 2018

Я использую 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.

Любые идеи приветствуются.

Спасибо.

1 Ответ

0 голосов
/ 15 октября 2018

Краткий ответ: Нет. По крайней мере, не напрямую.Хотя есть два обходных пути, которые я вижу, вы можете найти жизнеспособные.


Во-первых, кроме изображения 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 со значением вашей версии

...