2.8. S2I デプロイメント
統合された Source-to-Image (S2I) ビルダーは、OpenShift でアプリケーションをデプロイする方法の 1 つです。S2I は、再現可能な Docker 形式のコンテナーイメージをビルドするためのツールです。詳細は、OpenShift の概念 を参照してください。
前提条件
- ROSA クラスター
2.8.1. ログインコマンドの取得 リンクのコピーリンクがクリップボードにコピーされました!
手順
次のコマンドを実行して、コマンドラインインターフェイス (CLI) にログインしていることを確認します。
rosa whoami
rosa whoami
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドラインインターフェイスにログインしている場合は、「新しいプロジェクトの作成」に進んでください。コマンドラインインターフェイスにログインしていない場合は、この手順を続行します。
コマンドラインインターフェイス (CLI) にログインしていない場合は、OpenShift Cluster Manager で、右上の名前の横にあるドロップダウン矢印をクリックし、Copy Login Command を選択します。
- 新しいタブが開きます。ユーザー名とパスワードを入力し、認証方法を選択します。
- Display Token をクリックします。
- "Log in with this token" の下のコマンドをコピーします。
コピーしたコマンドをターミナルで実行して CLI にログインします。
入力の例
oc login --token=RYhFlXXXXXXXXXXXX --server=https://api.osd4-demo.abc1.p1.openshiftapps.com:6443
$ oc login --token=RYhFlXXXXXXXXXXXX --server=https://api.osd4-demo.abc1.p1.openshiftapps.com:6443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Logged into "https://api.myrosacluster.abcd.p1.openshiftapps.com:6443" as "rosa-user" using the token provided. You don't have any projects. You can try to create a new project, by running oc new-project <project name>
Logged into "https://api.myrosacluster.abcd.p1.openshiftapps.com:6443" as "rosa-user" using the token provided. You don't have any projects. You can try to create a new project, by running oc new-project <project name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.8.2. 新しいプロジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
次のコマンドを実行して、CLI から新しいプロジェクトを作成します。
oc new-project ostoy-s2i
$ oc new-project ostoy-s2i
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.8.3. OSToy リポジトリーのフォーク リンクのコピーリンクがクリップボードにコピーされました!
ソースコードの変更に基づいて自動ビルドをトリガーするには、GitHub Webhook を設定する必要があります。この Webhook により、GitHub リポジトリーにコードをプッシュしたときに S2I ビルドをトリガーします。Webhook を設定するには、まず リポジトリー をフォークする必要があります。
このガイドで以下に示す URL の <UserName>
は、自分の GitHub ユーザー名に置き換えてください。
2.8.4. S2i を使用してクラスターに OSToy をデプロイする リンクのコピーリンクがクリップボードにコピーされました!
手順
OpenShift にシークレットを追加します。
この例では、
.env
ファイルをエミュレートします。ファイルは OpenShift 環境内に直接かつ簡単に移動できます。シークレット内でファイル名を変更することも可能です。次のコマンドを実行します。
<UserName>
は、GitHub ユーザー名に置き換えます。oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/secret.yaml
$ oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/secret.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
OpenShift に ConfigMap を追加します。
この例では、HAProxy 設定ファイルをエミュレートします。これは、通常 OpenShift アプリケーションのデフォルト設定をオーバーライドするために使用されます。ファイルの名前は ConfigMap で変更できます。
次のコマンドを実行します。
<UserName>
は、GitHub ユーザー名に置き換えます。oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/configmap.yaml
$ oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/configmap.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
マイクロサービスをデプロイします。
UI アプリケーションからサービスの環境変数を使用できるように、マイクロサービスをデプロイする必要があります。
--context-dir
は、Git リポジトリー内のmicroservice
ディレクトリーで定義されたアプリケーションをビルドします。app
ラベルにより、ユーザーインターフェイス (UI) アプリケーションとマイクロサービスの両方が OpenShift UI で確実にグループ化されます。次のコマンドを実行してマイクロサービスを作成します。
<UserName>
は、GitHub ユーザー名に置き換えます。oc new-app https://github.com/<UserName>/ostoy \ --context-dir=microservice \ --name=ostoy-microservice \ --labels=app=ostoy
$ oc new-app https://github.com/<UserName>/ostoy \ --context-dir=microservice \ --name=ostoy-microservice \ --labels=app=ostoy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
マイクロサービスのステータスを確認します。
次のコマンドを実行して、マイクロサービスが作成され、正しく実行されていることを確認します。
oc status
$ oc status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow マイクロサービスが正常にデプロイされたことが表示されるまで待ちます。Web UI からこれを確認することもできます。
フロントエンド UI をデプロイします。
このアプリケーションは、外部設定を定義するために、いくつかの環境変数に依存しています。
次のコマンドを実行して、シークレットと ConfigMap をアタッチし、PersistentVolume を作成します。
oc new-app https://github.com/<UserName>/ostoy \ --env=MICROSERVICE_NAME=OSTOY_MICROSERVICE
$ oc new-app https://github.com/<UserName>/ostoy \ --env=MICROSERVICE_NAME=OSTOY_MICROSERVICE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のコマンドを実行してデプロイメントを更新します。
oc patch deployment ostoy --type=json -p \ '[{"op": "replace", "path": "/spec/strategy/type", "value": "Recreate"}, {"op": "remove", "path": "/spec/strategy/rollingUpdate"}]'
$ oc patch deployment ostoy --type=json -p \ '[{"op": "replace", "path": "/spec/strategy/type", "value": "Recreate"}, {"op": "remove", "path": "/spec/strategy/rollingUpdate"}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow liveness プローブを設定します。
アプリケーションに問題がある場合に Pod が再起動するように、liveness プローブを作成します。
以下のコマンドを実行します。
oc set probe deployment ostoy --liveness --get-url=http://:8080/health
$ oc set probe deployment ostoy --liveness --get-url=http://:8080/health
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
シークレット、ConfigMap、永続ボリュームをデプロイメントにアタッチします。
次のコマンドを実行してシークレットをアタッチします。
oc set volume deployment ostoy --add \ --secret-name=ostoy-secret \ --mount-path=/var/secret
$ oc set volume deployment ostoy --add \ --secret-name=ostoy-secret \ --mount-path=/var/secret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して ConfigMap をアタッチします。
oc set volume deployment ostoy --add \ --configmap-name=ostoy-config \ -m /var/config
$ oc set volume deployment ostoy --add \ --configmap-name=ostoy-config \ -m /var/config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、永続ボリュームを作成してアタッチします。
oc set volume deployment ostoy --add \ --type=pvc \ --claim-size=1G \ -m /var/demo_files
$ oc set volume deployment ostoy --add \ --type=pvc \ --claim-size=1G \ -m /var/demo_files
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
UI アプリケーションを OpenShift ルートとして公開します。
次のコマンドを実行して、同梱の TLS ワイルドカード証明書を使用する HTTPS アプリケーションとしてアプリケーションをデプロイします。
oc create route edge --service=ostoy --insecure-policy=Redirect
$ oc create route edge --service=ostoy --insecure-policy=Redirect
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次の方法でアプリケーションに移動します。
次のコマンドを実行して、OSToy アプリケーションで Web ブラウザーを開きます。
python -m webbrowser "$(oc get route ostoy -o template --template='https://{{.spec.host}}')"
$ python -m webbrowser "$(oc get route ostoy -o template --template='https://{{.spec.host}}')"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してアプリケーションのルートを取得し、そのルートをコピーしてブラウザーに貼り付けます。
oc get route
$ oc get route
Copy to Clipboard Copied! Toggle word wrap Toggle overflow