Как обеспечить, чтобы изображение в конфигурации развертывания извлекалось только из потока изображений?
Я использую OpenShift 4.11. Я настроил ImageStream следующим образом:
kind: ImageStream
apiVersion: image.openshift.io/v1
metadata:
name: my-image
spec:
lookupPolicy:
local: true
tags:
- name: latest
annotations: null
from:
kind: DockerImage
name: 'my.repository.local/my-image:latest'
importPolicy:
scheduled: true
referencePolicy:
type: Source
Я ссылаюсь на это изображение как «my-image:latest» в
kind: DeploymentConfig
apiVersion: apps.openshift.io/v1
metadata:
name: some-app
spec:
strategy:
type: Rolling
...
triggers:
- type: ConfigChange
- type: ImageTrigger
imageChangeParams:
automatic: true
containerNames:
- some-app
from:
kind: ImageStreamTag
name: my-image:latest
replicas: 2
app: some-app
template:
metadata:
labels:
app: some-app
spec:
containers:
- imagePullPolicy: Always
image: my-image:latest
(секрет получения изображения, ограничения ресурсов и т. д. опущены)
Неполное имя изображения является проблематичным. Если я забуду сначала создать поток изображений, OpenShift попытается загрузить изображение из реестра по умолчанию, которым в моем случае является Docker Hub. Docker Hub не только затем получает вызов API, раскрывающий внутреннее имя образа компании, но также существует риск того, что образ действительно существует там, и мы запускаем код, который не собирались выполнять.
Есть ли способ заставить OpenShift либо брать изображение в DeploymentConfig из потока изображений, либо вообще не пытаться его разрешить?
Я не могу отключить доступ к Docker Hub глобально (это нужно другим проектам), но если я могу настроить это для каждого пространства имен, это тоже сработает.
Я попытался установить пустое имя изображения (не разрешено) или указать несуществующее имя изображения из внутреннего реестра, надеясь, что ImageTrigger заменит ссылку, но это происходит только тогда, когда тег обновляется в потоке, а не если он уже существует.