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 で、右上の名前の横にあるドロップダウン矢印をクリックし、ログインコマンドのコピー を選択します。
- 新しいタブが開きます。ユーザー名とパスワードを入力し、認証方法を選択します。
- 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 を追加します。
この例では、OpenShift アプリケーションのデフォルト設定を上書きするために通常使用される HAProxy 設定ファイルをエミュレートします。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 リポジトリー内のマイクロサービス
ディレクトリーに定義されたアプリケーションをビルドします。アプリ
ラベルにより、ユーザーインターフェイス (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 Route として公開します。
次のコマンドを実行して、含まれている 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