Теги изображений Docker являются изменяемыми, так как image:latest
и image:1.0
могут указывать на image@sha256:.....
, но когда выпущена версия 1.1
, image:latest
, хранящаяся в реестре, может указывать на изображение сдругой ша дайджест.Вытягивание изображения с определенным тегом теперь не означает, что идентичное изображение будет извлечено в следующий раз.
Если определение ресурса YAMl Kubernetes относится к изображению по тегу (не по дайджесту), есть ли средствоопределение того, к какому дайджесту будет каждое изображение будет фактически разрешено, до того, как определение ресурса будет развернуто?Поддерживается ли эта функция с использованием kustomize или kubectl
?
В сценарии использования требуется определить, что на самом деле было развернуто в одной среде, прежде чем развертывать в другой (я хотел бы получить хешопределения разрешенного ресурса и может затем использовать это, чтобы понять, относится ли image:1.0
, который должен быть развернут к PROD, к тому же image:1.0
, который был развернут к UAT).
Существуют ли какие-либо инструменты, которые можно использовать дляподдерживать эту функцию?
Например, при условии следующего YAML, есть ли способ заменить все изображения их разрешенными дайджестами?
apiVersion: v1
kind: Pod
metadata:
name: example
spec:
containers:
- name: image1
image: image1:1.1
command:
- /bin/sh -c some command
- name: image2
image: image2:2.2
command:
- /bin/sh -c some other command
Чтобы получить что-то вроде этого:
apiVersion: v1
kind: Pod
metadata:
name: example
spec:
containers:
- name: image1
image: image1@sha:....
command:
- /bin/sh -c some command
- name: image2
image: image2@sha:....
command:
- /bin/sh -c some other command
Я хотел бы иметь возможность сделать что-то вроде pipe yaml (которое может прийти от cat
, kustomize
или kubectl ... --dry-run
) через инструмент и затем перейти к kubectl apply -f
:
cat mydeployment.yaml | some-tool | kubectl apply -f -
РЕДАКТИРОВАТЬ:
Основанием для этого является необходимость иметь возможность доказать аудиторам / регулирующим органам, что то, что собирается развернуть в одном env (PROD), составляет точно что было успехомполностью развернут в другой env (UAT).Я хотел бы использовать обычные теги в шаблоне развертывания и во время развертывания в UAT сделать снимок шаблона с замененными тегами на дайджесты разрешенных изображений.Этот снимок будет тем, что развернуто (через kubectl
или подобное).При развертывании в PROD будет использоваться тот же моментальный снимок.