ビルド設定の出力であったイメージを使用するように配備設定をしたい。OpenShift用の配備設定でイメージストリームを使用する方法
私は現在、このような何かを使用しています:
- apiVersion: v1
kind: DeploymentConfig
metadata:
annotations:
openshift.io/generated-by: OpenShiftNewApp
creationTimestamp: null
labels:
app: myapp
name: myapp
spec:
replicas: 1
selector:
app: myapp
deploymentconfig: myapp
strategy:
resources: {}
template:
metadata:
annotations:
openshift.io/container.myapp.image.entrypoint: '["python3"]'
openshift.io/generated-by: OpenShiftNewApp
creationTimestamp: null
labels:
app: myapp
deploymentconfig: myapp
spec:
containers:
- name: myapp
image: 123.123.123.123/myproject/myapp-staging:latest
resources: {}
command:
- scripts/start_server.sh
ports:
- containerPort: 8000
test: false
triggers: []
status: {}
私はハードコード統合ドッキングウィンドウレジストリのIPアドレスを持っていた
。それ以外の場合、Kubernetes/OpenShiftはプルダウンするイメージを見つけることができません。私がいないハードコード統合ドッキングウィンドウレジストリのIPアドレスに好きで、代わりにこのようなものを使用します:
- apiVersion: v1
kind: DeploymentConfig
metadata:
annotations:
openshift.io/generated-by: OpenShiftNewApp
creationTimestamp: null
labels:
app: myapp
name: myapp
spec:
replicas: 1
selector:
app: myapp
deploymentconfig: myapp
strategy:
resources: {}
template:
metadata:
annotations:
openshift.io/container.myapp.image.entrypoint: '["python3"]'
openshift.io/generated-by: OpenShiftNewApp
creationTimestamp: null
labels:
app: myapp
deploymentconfig: myapp
spec:
containers:
- name: myapp
from:
kind: "ImageStreamTag"
name: "myapp-staging:latest"
resources: {}
command:
- scripts/start_server.sh
ports:
- containerPort: 8000
test: false
triggers: []
status: {}
をしかし、これはと文句をKubernetes/OpenShiftが発生します。
The DeploymentConfig "myapp" is invalid.
spec.template.spec.containers[0].image: required value
どのように指定することができますデプロイ設定で使用するイメージとしてのビルド設定の出力?
ありがとうございました!私がトリガーとビルド構成にデプロイ構成をリンクする場合にも、奇妙なことに、
をKubernetes/OpenShiftは、画像のための統合ドッキングウィンドウで見て知っている:
- apiVersion: v1
kind: DeploymentConfig
metadata:
annotations:
openshift.io/generated-by: OpenShiftNewApp
creationTimestamp: null
labels:
app: myapp-staging
name: myapp-staging
spec:
replicas: 1
selector:
app: myapp-staging
deploymentconfig: myapp-staging
strategy:
resources: {}
template:
metadata:
annotations:
openshift.io/container.myapp.image.entrypoint: '["python3"]'
openshift.io/generated-by: OpenShiftNewApp
creationTimestamp: null
labels:
app: myapp-staging
deploymentconfig: myapp-staging
spec:
containers:
- name: myapp-staging
image: myapp-staging:latest
resources: {}
command:
- scripts/start_server.sh
ports:
- containerPort: 8000
test: false
triggers:
- type: "ImageChange"
imageChangeParams:
automatic: true
containerNames:
- myapp-staging
from:
kind: ImageStreamTag
name: myapp-staging:latest
status: {}
しかし、私はしたくありません...
アップデート1(2016年11月21日)をトリガーする自動化:
: トリガーを設定するが、(それゆえ、手動でデプロイをトリガー)トリガー無効を持つ、静止画を見つけることができない展開を左に$ oc describe pod myapp-1-oodr5
Name: myapp-1-oodr5
Namespace: myproject
Security Policy: restricted
Node: node.url/123.123.123.123
Start Time: Mon, 21 Nov 2016 09:20:26 -1000
Labels: app=myapp
deployment=myapp-1
deploymentconfig=myapp
Status: Pending
IP: 123.123.123.123
Controllers: ReplicationController/myapp-1
Containers:
myapp:
Container ID:
Image: myapp-staging:latest
Image ID:
Port: 8000/TCP
Command:
scripts/start_server.sh
State: Waiting
Reason: ImagePullBackOff
Ready: False
Restart Count: 0
Volume Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-goe98 (ro)
Environment Variables:
ALLOWED_HOSTS: myapp-myproject.url
Conditions:
Type Status
Ready False
Volumes:
default-token-goe98:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-goe98
QoS Tier: BestEffort
Events:
FirstSeen LastSeen Count From SubobjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
42s 42s 1 {scheduler } Scheduled Successfully assigned myapp-1-oodr5 to node.url
40s 40s 1 {kubelet node.url} implicitly required container POD Pulled Container image "openshift3/ose-pod:v3.1.1.7" already present on machine
40s 40s 1 {kubelet node.url} implicitly required container POD Created Created with docker id d3318e880e4a
40s 40s 1 {kubelet node.url} implicitly required container POD Started Started with docker id d3318e880e4a
40s 24s 2 {kubelet node.url} spec.containers{myapp} Pulling pulling image "myapp-staging:latest"
38s 23s 2 {kubelet node.url} spec.containers{myapp} Failed Failed to pull image "myapp-staging:latest": Error: image library/myapp-staging:latest not found
35s 15s 2 {kubelet node.url} spec.containers{myapp} Back-off Back-off pulling image "myapp-staging:latest"
更新2(08/23/2017): これは他の人に役立つ場合は、ここで解決策の概要を示します。 true
へのトリガとautomatic
セットで
triggers:
- type: "ImageChange"
imageChangeParams:
automatic: true # this is required to link the build and deployment
containerNames:
- myapp-staging
from:
kind: ImageStreamTag
name: myapp-staging:latest
、展開は内部レジストリにビルドのイメージを使用する必要があります。
ビルドをトリガーしないようにするためのその他のコメントは、内部レジストリからイメージを手動で展開する必要があるという別の要件に関連しています。
automatic
がfalse
に設定される前に、少なくとも1回展開をトリガーする必要があります。これまでのところしばらく、私がいた:true
automatic
を設定
- は、私はかかわらず、(ビルドを開始し、今後の展開をトリガし、手動で
false
- に
automatic
を変更手動で、展開が終了した後 - を展開します古いイメージを古いイメージに展開したかどうかを確認していません)
私は最初にこのmanuを使用しようとしていました非デベロッパーがWebコンソールに入り、デプロイメントを行う方法としてのデプロイ。しかし、この要件は削除されています。そのたびに、ビルドトリガーの導入が毎回うまくいきます。ビルドは異なるブランチでビルドし、イメージに異なるタグを付けることができます。デプロイメントは適切にタグ付けされたイメージを使用するだけです。
希望に役立ちます!
フィードバックいただきありがとうございます。最初は 'oc new-app'を使ってテンプレートを出力しました。私は投稿していないbuild config YAMLを持っています。しかし、それが重要だと思うなら、私はそれを投稿することができます。私は通常、 'oc create -f ...'を実行し、ビルド、イメージストリーム、デプロイメント、サービス、ルートをすべて作成して動作させます。私は別のステージングと本番インスタンスをサポートするためにこの変更を加えようとしています。ステージングインスタンスは正常に動作します。なぜならトリガーが何らかの形でOpenshift/Kubernetesに正しいイメージを検出させるからです。私は生産インスタンスを持っていたくなかった... –
...自動的にトリガー。したがって、トリガーなしで新しい配備設定を行うと、OpenShift/KubernetesはDocker Hubに見えるので、ビルド設定から構築されたイメージを見つけることができなくなります。 –
そして 'python3'は' oc new-app'から作成されたテンプレートから残っていました。 'command'スクリプトは、' entrypoint'でもサーバを正常に動作させるようです。もう一度おねがいします。他の疑わしいことがあれば教えてください! :) –