2.8. S2I デプロイメント
統合された Source-to-Image (S2I) ビルダーは、OpenShift でアプリケーションをデプロイする方法の 1 つです。S2I は、再現可能な Docker 形式のコンテナーイメージをビルドするためのツールです。詳細は、OpenShift Container Platform 一般用語集 を参照してください。このプロセスを開始する前に、Red Hat OpenShift Service on AWS クラスターをデプロイしておく必要があります。
2.8.1. ログインコマンドの取得 リンクのコピーリンクがクリップボードにコピーされました!
手順
次のコマンドを実行して、ROSA コマンドラインインターフェイス (CLI) (
rosa) にログインしていることを確認します。rosa whoamiコマンドラインインターフェイスにログインしている場合は、「新しいプロジェクトの作成」に進んでください。コマンドラインインターフェイスにログインしていない場合は、この手順を続行します。
ROSA 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出力例
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>
2.8.2. 新しいプロジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
次のコマンドを実行して、CLI から新しいプロジェクトを作成します。
$ oc new-project ostoy-s2i
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
OpenShift に ConfigMap を追加します。
この例では、HAProxy 設定ファイルをエミュレートします。これは、通常 OpenShift アプリケーションのデフォルト設定をオーバーライドするために使用されます。ファイルの名前は ConfigMap で変更できます。
次のコマンドを実行します。
<UserName>は、GitHub ユーザー名に置き換えます。$ oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/configmap.yaml
マイクロサービスをデプロイします。
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出力例
--> Creating resources with label app=ostoy ... imagestream.image.openshift.io "ostoy-microservice" created buildconfig.build.openshift.io "ostoy-microservice" created deployment.apps "ostoy-microservice" created service "ostoy-microservice" created --> Success Build scheduled, use 'oc logs -f buildconfig/ostoy-microservice' to track its progress. Application is not exposed. You can expose services to the outside world by executing one or more of the commands below: 'oc expose service/ostoy-microservice' Run 'oc status' to view your app.
マイクロサービスのステータスを確認します。
次のコマンドを実行して、マイクロサービスが作成され、正しく実行されていることを確認します。
$ oc status出力例
In project ostoy-s2i on server https://api.myrosacluster.g14t.p1.openshiftapps.com:6443 svc/ostoy-microservice - 172.30.47.74:8080 dc/ostoy-microservice deploys istag/ostoy-microservice:latest <- bc/ostoy-microservice source builds https://github.com/UserName/ostoy on openshift/nodejs:14-ubi8 deployment #1 deployed 34 seconds ago - 1 podマイクロサービスが正常にデプロイされたことが表示されるまで待ちます。Web UI からこれを確認することもできます。
フロントエンド UI をデプロイします。
このアプリケーションは、外部設定を定義するために、いくつかの環境変数に依存しています。
次のコマンドを実行して、シークレットと ConfigMap をアタッチし、PersistentVolume を作成します。
$ oc new-app https://github.com/<UserName>/ostoy \ --env=MICROSERVICE_NAME=OSTOY_MICROSERVICE出力例
--> Creating resources ... imagestream.image.openshift.io "ostoy" created buildconfig.build.openshift.io "ostoy" created deployment.apps "ostoy" created service "ostoy" created --> Success Build scheduled, use 'oc logs -f buildconfig/ostoy' to track its progress. Application is not exposed. You can expose services to the outside world by executing one or more of the commands below: 'oc expose service/ostoy' Run 'oc status' to view your app.
次のコマンドを実行してデプロイメントを更新します。
$ oc patch deployment ostoy --type=json -p \ '[{"op": "replace", "path": "/spec/strategy/type", "value": "Recreate"}, {"op": "remove", "path": "/spec/strategy/rollingUpdate"}]'liveness プローブを設定します。
アプリケーションに問題がある場合に Pod が再起動するように、liveness プローブを作成します。
以下のコマンドを実行します。
$ oc set probe deployment ostoy --liveness --get-url=http://:8080/health
シークレット、ConfigMap、永続ボリュームをデプロイメントにアタッチします。
次のコマンドを実行してシークレットをアタッチします。
$ oc set volume deployment ostoy --add \ --secret-name=ostoy-secret \ --mount-path=/var/secret次のコマンドを実行して ConfigMap をアタッチします。
$ oc set volume deployment ostoy --add \ --configmap-name=ostoy-config \ -m /var/config次のコマンドを実行して、永続ボリュームを作成してアタッチします。
$ oc set volume deployment ostoy --add \ --type=pvc \ --claim-size=1G \ -m /var/demo_files
UI アプリケーションを OpenShift ルートとして公開します。
次のコマンドを実行して、同梱の TLS ワイルドカード証明書を使用する HTTPS アプリケーションとしてアプリケーションをデプロイします。
$ oc create route edge --service=ostoy --insecure-policy=Redirect
次の方法でアプリケーションに移動します。
次のコマンドを実行して、OSToy アプリケーションで Web ブラウザーを開きます。
$ python -m webbrowser "$(oc get route ostoy -o template --template='https://{{.spec.host}}')"次のコマンドを実行してアプリケーションのルートを取得し、そのルートをコピーしてブラウザーに貼り付けます。
$ oc get route