openshift4.3でBuild時に「Output image could not be resolved.」

# はじめに

なんとかOpenShift3.11の頃のようにYAML/JSONでProjectを一括で作成できないものか試行錯誤する日々ですが
いっこうに光が見えてきません(笑)
いろいろWebコンソールを徘徊してて、それっぽいメニュー「**Create Build Config**」なるものを見つけたので試しにやってみます。

- CODEREADY CONTAINERS 1.7(OpenShift 4.3.1)

# AdministratorのメニューからBuild Configを作成する

## Create Build Configする

Webコンソールの**Administrator**のメニューを見てみると色々と並んでますね。
その中の**Builds>Build Configs**をクリックすると「**Create Build Config**」なるボタンが出現します。

![2020-03-22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/1f08aec8-dba6-32c6-f9a0-ea65eefcb085.png)

するとSampleのYAMLが出てきます！

![2020-03-22 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/8173984e-7032-e707-3843-217538874ce6.png)

なんだ簡単ですね。これを編集すればよいだけかな(^^♪
と思い、右側の「Samples」メニューから「`Source-to-image (s2i) build`」を*Try it*してみます。

![2020-03-22 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/5b10471a-6040-ab35-6d44-db2f390a7b6e.png)

*Try it*で現れたサンプルYAMLがこちら。apiVersion以外はほぼ見慣れた感じですね。
例では
- `openshift`namespace上の`ruby:2.4`をベースに
- [https://github.com/openshift/ruby-ex.git](https://github.com/openshift/ruby-ex.git)のソースをビルドし
- ImageStreamに`s2i-build:latest`として登録する
となってますね。

```yaml:source-to-image(s2i)build
apiVersion: build.openshift.io/v1
kind: BuildConfig
metadata:
  name: s2i-build
  namespace: test
spec:
  output:
    to:
      kind: ImageStreamTag
      name: 's2i-build:latest'
  source:
    git:
      ref: master
      uri: 'https://github.com/openshift/ruby-ex.git'
    type: Git
  strategy:
    type: Source
    sourceStrategy:
      from:
        kind: ImageStreamTag
        name: 'ruby:2.4'
        namespace: openshift
      env: []
  triggers:
    - type: ImageChange
      imageChange: {}
    - type: ConfigChange
apiVersion: build.openshift.io/v1
kind: BuildConfig
metadata:
  name: s2i-build
  namespace: test
spec:
  output:
    to:
      kind: ImageStreamTag
      name: 's2i-build:latest'
  source:
    git:
      ref: master
      uri: 'https://github.com/openshift/ruby-ex.git'
    type: Git
  strategy:
    type: Source
    sourceStrategy:
      from:
        kind: ImageStreamTag
        name: 'ruby:2.4'
        namespace: openshift
      env: []
  triggers:
    - type: ImageChange
      imageChange: {}
    - type: ConfigChange
```

このシリーズのやりたいこと、phpでlaravelのためには書き換えればよいのですが
まぁまずはそのまま試していましょう！

## Sampleのs2i buildを試してみる

そのまま[**Create**]ボタンを押せばビルドが走るはず…

![2020-03-22 (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/ba753fce-e5f5-a8e7-e9db-08a35c30aa3c.png)

Buildの詳細は**Builds>Builds**から確認します。
みると`s2i-build-1`が*New*となっているので、クリックして内容を確認します。

![2020-03-22 (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/6bec695f-442b-c04e-3e9f-7abbacd9efc7.png)

Logs画面を見ても一向にログが吐き出されないのでOvewviewを確認すると
ん。「**Output image could not be resolved.**」だって…。

![2020-03-22 (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/44c4b18f-4691-9c58-34e9-7e886660468a.png)

ここでネットの海を徘徊したら1番目にヒットした記事に
`oc create imagestream <imagestream name from build config>`しなさいとの記事が

[Red Hat OpenShift: cannot build/deploy node app because “Output image could not be resolved”](https://stackoverflow.com/questions/50916010/red-hat-openshift-cannot-build-deploy-node-app-because-output-image-could-not)

はい？そのためのOutputじゃないのかな…と思いつつ試しにやってみることに。
ただし、Webコンソールから


## ImageStreamを登録する

**Builds>Image Streams**をクリックすると「**Create Image Stream**」ボタンがあったので押してみるとサンプルが出力されます。
![2020-03-22 (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/420003ab-791c-cde5-58cd-aa95cc46d212.png)

![2020-03-22 (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/d499b102-b683-31eb-fa85-b16133ba43c0.png)

```yaml
apiVersion: image.openshift.io/v1
kind: ImageStream
metadata:
  name: example
  namespace: test
```

今回出力したいイメージは`s2i-build:latest`なので`name`を`s2i-build`にしました。

```yaml
apiVersion: image.openshift.io/v1
kind: ImageStream
metadata:
  name: s2i-build
  namespace: test
```

![2020-03-22 (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/e9c63cf3-cac7-099d-d8eb-5131f776ffb8.png)
![2020-03-22 (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/5add999b-4a1d-3006-7c68-b091a4cce358.png)

これでImage Streamの器が用意できたイメージかな!?

## Sampleのs2i buildnの様子を見てみる

もう一度**Builds>Builds**に戻るとあら不思議、ステータスが*Running*となっています。

![2020-03-22 (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/739ec594-b517-dd4a-08aa-d27b1bdbbcf8.png)

先ほど出なかったLogsを確認すると

![2020-03-22 (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/a8061a9f-c9dc-4a70-ac71-88854f3ccb91.png)

動いていますね。
Buildが完了したらImage Streamを確認してみましょう。

## Image Streams の確認

**Builds>Image Streams**から`s2i-build`をクリックしてHistoryを確認すると
`s2i-build:latest`が出来上がってますね。

![2020-03-22 (13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/6bdf27db-3f3a-b0d5-342f-eca0ec95ff7a.png)


# ここまで

なんだかAPIが細切れになって全体像がなかなか理解できませんね…。
徘徊の日々は当分続きそうです(笑)