Я создаю сценарий установки, который будет создавать ресурсы из файлов YAML †. Этот скрипт будет делать эквивалент этой команды:
oc new-app registry.access.redhat.com/rhscl/nginx-114-rhel7~http://github.com/username/repo.git
Три файла YAML были созданы следующим образом:
imagestream
для nginx-114-rhel7
- is-nginx.yaml
apiVersion: image.openshift.io/v1
kind: ImageStream
metadata:
labels:
build: build-repo
name: nginx-114-rhel7
namespace: ns
spec:
tags:
- annotations: null
from:
kind: DockerImage
name: registry.access.redhat.com/rhscl/nginx-114-rhel7
name: latest
referencePolicy:
type: Source
imagestream
для
repo
-
is-repo.yaml
apiVersion: v1
kind: ImageStream
metadata:
labels:
application: is-rp
name: is-rp
namespace: ns
buildconfig
для
repo
(вывод будет
imagestream
для
repo
) -
bc-repo.yaml
apiVersion: v1
kind: BuildConfig
metadata:
labels:
build: rp
name: bc-rp
namespace: ns
spec:
output:
to:
kind: ImageStreamTag
name: 'is-rp:latest'
postCommit: {}
resources: {}
runPolicy: Serial
source:
git:
ref: dev_1.0
uri: 'http://github.com/username/repo.git'
type: Git
strategy:
sourceStrategy:
from:
kind: ImageStreamTag
name: 'nginx-114-rhel7:latest'
namespace: flo
type: Source
successfulBuildsHistoryLimit: 5
Когда эти команды выполняются одна за другой,
oc create -f is-nginx.yaml;oc create -f is-repo.yaml;oc create -f bc-repo.yaml;oc start-build bc/bc-rep --wait
Я получаю это сообщение об ошибке,
The ImageStreamTag "nginx-114-rhel7:latest" is invalid: from: Error resolving ImageStreamTag nginx-114-rhel7:latest in namespace ns: unable to find latest tagged image
Но, когда я запускаю команды с sleep
до start-build
, сборка запускается правильно.
oc create -f is-nginx.yaml;oc create -f is-repo.yaml;oc create -f bc-repo.yaml;sleep 5;oc start-build bc/bc-rep
Как мне вызвать start-build
без ввода команды sleep
? oc wait
, кажется, работает только для --for=condition
и --for=delete
. Я не знаю, какое значение будет использоваться для --for=condition
.
† - я не вижу четкого руководства по созданию сценариев установки - с YAML или эквивалентными oc
командами только - для развертывания приложений в OpenShift.