18.11. チュートリアル: S2I デプロイメント


OpenShift でアプリケーションをデプロイする方法はいくつかあります。このチュートリアルでは、統合された Source-to-Image (S2I) ビルダーの使用について説明します。OpenShift の概念 セクションで述べたように、S2I は再現可能な Docker 形式のコンテナーイメージをビルドするためのツールです。

18.11.1. 前提条件

このチュートリアルを使用する前に、次の要件を満たしている必要があります。

  1. ROSA クラスターの作成を完了します。
  2. ログインコマンドを取得します。

    1. CLI 経由でログインしていない場合は、OpenShift Cluster Manager で、右上の名前の横にあるドロップダウン矢印をクリックし、Copy Login Command を選択します。

      CLI ログイン
    2. 新しいタブが開きます。ユーザー名とパスワードを入力し、認証方法を選択します。
    3. Display Token をクリックします。
    4. "Log in with this token" の下のコマンドをコピーします。
    5. コピーしたコマンドをターミナルで実行して、コマンドラインインターフェイス (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>

  3. 次のコマンドを実行して、CLI から新しいプロジェクトを作成します。

    $ oc new-project ostoy-s2i

18.11.2. OSToy リポジトリーのフォーク

次のセクションでは、ソースコードの変更に基づいて自動ビルドをトリガーする方法を主に取り上げます。GitHub リポジトリーにコードをプッシュしたときに S2I ビルドをトリガーするには、GitHub Webhook を設定する必要があります。Webhook を設定するには、まずリポジトリーをフォークする 必要があります。

注記

このガイドで以下に示す URL の <UserName> は、自分の GitHub ユーザー名に置き換えてください。

18.11.3. S2i を使用してクラスターに OSToy をデプロイする

  1. OpenShift にシークレットを追加する

    この例では、.env ファイルをエミュレートし、これを OpenShift 環境に直接移動する簡単な方法を示します。Secret 内でファイルの名前を変更することもできます。CLI で次のコマンドを入力します。<UserName> は、GitHub ユーザー名に置き換えてください。

    $ oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/secret.yaml
  2. OpenShift に ConfigMap を追加する

    この例では、HAProxy 設定ファイルをエミュレートします。これは、通常 OpenShift アプリケーションのデフォルト設定をオーバーライドするために使用されます。ConfigMap でファイルの名前を変更することもできます。

    CLI で次のコマンドを入力します。<UserName> は、GitHub ユーザー名に置き換えてください。

    $ oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/configmap.yaml
  3. マイクロサービスをデプロイする

    UI アプリケーションから SERVICE 環境変数を使用できるように、まずマイクロサービスをデプロイする必要があります。--context-dir は、ここでは git リポジトリー内の microservice ディレクトリーで定義されたアプリケーションのみをビルドするために使用します。app ラベルを使用すると、UI アプリケーションとマイクロサービスの両方が OpenShift UI で確実にグループ化されます。CLI で次のコマンドを実行してマイクロサービスを作成します。<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.

  4. マイクロサービスのステータスを確認する

    次のステップに進む前に、次のコマンドを実行して、マイクロサービスが作成され、正しく実行されていることを確認する必要があります。

    $ 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 からこれを確認することもできます。

  5. フロントエンド UI をデプロイする

    このアプリケーションは、いくつかの環境変数に依存して外部設定を定義するように設計されています。後で、以前に作成した Secret と ConfigMap をアタッチし、PersistentVolume を作成します。CLI に次のように入力します。

    $ 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.

  6. デプロイメントを更新する

    永続ボリュームを使用した一貫性のあるデプロイメントを実現するために、(デフォルトの RollingUpdate ではなく) "Recreate" デプロイメントストラテジーを使用するようにデプロイメントを更新します。これが必要な理由は、PV が EBS を基盤としており、RWO 方式のみをサポートしているためです。既存の Pod をすべて強制終了せずにデプロイメントを更新すると、PV が既存の Pod にバインドされたままであるため、新しい Pod をスケジュールして PV の PVC を作成できない可能性があります。EFS を使用する場合は、これを変更する必要はありません。

    $ oc patch deployment ostoy --type=json -p \
        '[{"op": "replace", "path": "/spec/strategy/type", "value": "Recreate"}, {"op": "remove", "path": "/spec/strategy/rollingUpdate"}]'
  7. liveness プローブを設定する

    アプリケーション内に異常が発生した場合に Pod が確実に再起動するように、デプロイメントに Liveness Probe を作成します。CLI に次のように入力します。

    $ oc set probe deployment ostoy --liveness --get-url=http://:8080/health
  8. Secret、ConfigMap、PersistentVolume をデプロイメントにアタッチする

    次のコマンドを実行して、Secret、ConfigMap、および PersistentVolume をアタッチします。

    1. Secret のアタッチ

      $ oc set volume deployment ostoy --add \
          --secret-name=ostoy-secret \
          --mount-path=/var/secret
    2. ConfigMap のアタッチ

      $ oc set volume deployment ostoy --add \
          --configmap-name=ostoy-config \
          -m /var/config
    3. PersistentVolume の作成およびアタッチ

      $ oc set volume deployment ostoy --add \
          --type=pvc \
          --claim-size=1G \
          -m /var/demo_files
  9. UI アプリケーションを OpenShift ルートとして公開する

    次のコマンドを実行して、同梱の TLS ワイルドカード証明書を使用する HTTPS アプリケーションとしてこれをデプロイします。

    $ oc create route edge --service=ostoy --insecure-policy=Redirect
  10. 次の方法でアプリケーションを参照する

    • 次のコマンドを実行すると、OSToy アプリケーションが Web ブラウザーで開きます。

      $ python -m webbrowser "$(oc get route ostoy -o template --template='https://{{.spec.host}}')"
    • 次のコマンドを実行すると、アプリケーションのルートを取得し、そのルートをコピーしてブラウザーに貼り付けることができます。

      $ oc get route
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.