Red Hat Training

A Red Hat training course is available for OpenShift Online

スタートガイド

OpenShift Online 3

OpenShift Online のスタートガイド

Red Hat OpenShift Documentation Team

概要

OpenShift Online 3 を使用して、パブリッククラウド環境でコンテナーベースの Web アプリケーションを迅速にビルドし、起動し、スケーリングします。

第1章 概要

OpenShift Online 3 は Red Hat のアプリケーションホスティングプラットフォームであり、開発者がパブリッククラウド環境でコンテナーベースの Web アプリケーションを迅速にビルドし、起動し、スケーリングできるようにします。

以下のトピックを確認し、アプリケーション開発者 として OpenShift Online 3 の使用を開始しましょう。

第2章 プランの選択

2.1. プランおよび登録の確認

2.1.1. Red Hat OpenShift Online

OpenShift Online Starter と OpenShift Online Pro プランの相違点を確認し、登録プロセスを完了します。

登録時に、有効な 1 回限り使用できるプロモーションクーポンを利用できます。

登録後は、アカウントをカスタマイズします。

2.1.2. Red Hat Fuse Online

Red Hat Fuse Online は、ビジネスユーザーが統合ソリューションを迅速に構築できるようにするためのローコード統合プラットフォームです。

Red Hat Fuse Online は Red Hat OpenShift Online でホストされるため、すぐに稼働することができます。また、OpenShift がサポートされるいずれの場所(Red Hat のマネージドクラウド、パブリッククラウド、またはプライベートクラウド) にもデプロイできます。詳細を確認し、テクノロジープレビューにサインアップしてください

2.2. その他の学習コンテンツ

OpenShift テクノロジーの詳細について、Red Hat OpenShift の Interactive Learning Portal および Kubernetes By Example を参照してください。

2.3. 次のステップ: 基本的なウォークスルー

登録後は、Basic Walkthrough に進み、単純なプロジェクトを稼働させる方法を確認します。

第3章 プランの管理

3.1. OpenShift Online プランの管理

3.1.1. アドオンによるプランのカスタマイズ

アドオンを使用してプランをカスタマイズすることができます。

  1. Active Subscriptions ページで、Manage Subscription リンクをクリックします。

    アクティブなサブスクリプション
  2. Current Plan 見出しで Change をクリックします。
  3. Current Plan ページで、メモリー、ストレージ、終了メモリーおよびサポートオプションを管理します。追加コストのリソースを追加します。

    Manage MemoryManage StorageManage Terminating Memory、または Manage Support をクリックしてそれぞれのワークフローに従います。

    プランの管理

3.1.2. プランのアップグレード

プランを OpenShift Online Starter から OpenShift Online Pro にアップグレードするには、manage.openshift.com にアクセスします。

既存のすべてのオブジェクトのエクスポート方法については、「Creating a Template from Existing Objects」を参照してください。

重要

OpenShift Online Starter ユーザーの場合、利用規約に違反すると、アカウントはサービス契約条件に違反すると、アカウントが終了し、サブスクリプションを作成できなくなります。

3.1.3. クーポンの適用

有効な 1 回限り使用できるプロモーションクーポンを利用できます (該当する場合)。

登録プロセス後も、クーポンを利用できます。

  1. Active Subscriptions ページから、Manage Subscriptions をクリックします。
  2. 次の Subscriptions ページで、 Coupons 見出しの横にある Manage をクリックします。
  3. 次の Subscription Coupons ページで、すでに使用されているクーポンが表示されます (該当する場合)。新規クーポンを適用するには、Apply New Coupon をクリックしてワークフローを完了します。

第4章 基本的なウォークスルー

4.1. 概要

本書では、OpenShift Online で簡単なプロジェクトを稼働させる方法を示します。

以下のセクションでは、OpenShift Online Web コンソールを使用して Welcome ページや現在のヒットカウント (データベースに保存) を提供するサンプル Node.js アプリケーションが含まれるプロジェクトを作成する方法について説明します。これには、2 つの Pod を作成する必要があります。

  • 1 つは Node.js アプリケーションをホストするための Pod です。
  • もう 1 つは MongoDB データベースをホストするための Pod です。

チュートリアルでは、以下があることが前提となります。

  • OpenShift Online アカウント。
  • GitHub アカウント。
  • Git がローカルにインストールされている。

4.2. セットアップ

このセクションでは、GitHub で OpenShift Node.js サンプルアプリケーションを フォーク し、アプリケーションをデプロイおよび編集できるようにローカルマシンにリポジトリーのクローンを作成します。

  1. GitHub で、openshift/nodejs-ex リポジトリーに移動します。ページの右上にある Fork をクリックします。

    プロジェクトのフォーク
  2. 次に、ローカルマシンで以下のコマンドを実行してサンプルアプリケーションのクローンを作成し、新規ディレクトリーに移動します。

    $ git clone https://github.com/<your_github_username>/nodejs-ex
    $ cd nodejs-ex

これで終了です。これで、元の openshift/nodejs-ex サンプルアプリケーションの Git リポジトリーのフォークが作成され、ローカルマシンにコピーが作成されました。

4.3. Web コンソールの使用

Web コンソールのトピックを参照し、そのコンポーネントについて確認してください。

4.4. 新規アプリケーションの作成

このセクションでは、Web コンソールを使用して最初のアプリケーションを OpenShift Online にデプロイします。

  1. OpenShift Online Web コンソールの Welcome ページに移動し、Create Project をクリックして最初のプロジェクトを作成します。

    注記

    OpenShift Online Starter では、現時点で単一プロジェクトのみを作成できます。すでにプロジェクトがある場合は、これを削除してから続行する必要があります。

    既存のプロジェクトを削除するには、Welcome ページのプロジェクト名の横にあるごみ箱アイコンをクリックします。

    プロジェクトの削除
  2. my-project をプロジェクトの一意の名前に置き換えます (例: <your_github_username>-example)。表示名および説明は空白のままにすることができます。

    新規プロジェクト
  3. JavaScript オプションをクリックします。

    カタログの参照
  4. nodejs-mongodb-example Quickstart テンプレートを選択します。

    Quickstart テンプレートの選択
  5. 次の画面で、Git Repository URL パラメーターのユーザー名を GitHub のユーザー名に置き換えます。その他のすべてのパラメーターに指定されるデフォルト値を使用します。

    Git URL の変更
  6. 最後に、ページの下部にスクロールし、Create をクリックしてアプリケーションをデプロイします。

    注記

    Web コンソールの「Overview」ページでは、作成した新規リソースを表示し、ビルドやデプロイメントの進捗を確認できます。MongoDB Pod が作成されている間も、Pod のステータスは保留中と表示されます。次に、MongoDB Pod が起動し、新たに割り当てられた IP アドレスが表示されます。

4.5. 自動化ビルドの設定

このセクションでは、フォークしたリポジトリーにコードの変更をプッシュするたびにアプリケーションの再ビルドを自動トリガーするように GitHub Webhook を設定します。これを実行するには、アプリケーションから Github Webhook URL を Github リポジトリーに追加する必要があります。以下の場所からこの Webhook を取得します。

  • アプリケーションの作成後に表示される Next Steps ページの下部に、Making code changes というセクションが表示されます。ページの下部からペイロード URL をコピーし、提供されている GitHub プロジェクトの Webhook 設定ページへのリンクをたどります。

    Webhook のコピー
  • OpenShift Online Web コンソールで、以下を実行します。

    1. アプリケーションが含まれるプロジェクトに移動します。
    2. Browse タブをクリックし、Builds をクリックしてから Node.js アプリケーションのビルドの名前をクリックします。
    3. Configuration タブで、GitHub webhook URL の横にある copy をクリックし、GitHub webhook をコピーします。

次に、Webhook を Github リポジトリーに追加します。

  1. GitHub で、プロジェクトについて GitHub Webhook 設定の Add webhook をクリックします。ペイロード URL を Payload URL フィールドに貼り付けます。Content type フィールドが、デフォルトの application/x-www-form-urlencoded の代わりに application/json に設定されることを確認します。次に、Add webhook をクリックし、Webhook のプロジェクトへの追加を終了します。

    Webhook の追加
  2. GitHub では OpenShift Online サーバーへの ping を試行し、通信が正常に実行されることを確認します。これが正しく設定されている場合、GitHub の新規 Webhook URL の横に緑色のチェックマークが表示されます。チェックマークの上にマウスをかざして、最終配信のステータスを表示します。

    正常な配信

フォークされたリポジトリーにコード変更をプッシュする次回のタイミングで、アプリケーションが自動的に再ビルドされます。

4.6. 実行中のアプリケーションの表示

このセクションでは、Web ブラウザーを使用して実行中のアプリケーションを表示します。

Web コンソールで、プロジェクトの Overview ページを表示し、アプリケーションの Web アドレスを判別します。NODEJS-MONGODB-EXAMPLE サービスの下に表示される Web アドレスをクリックし、新規ブラウザータブでアプリケーションを開きます。

Node.js アプリケーションの実行
注記

プロジェクトに設定したすべてのルートについては、常に Web コンソールで見つけることができます。

  1. Web コンソールで、作成したアプリケーションが含まれるプロジェクトに移動します。
  2. Browse タブをクリックしてから Routes をクリックします。
  3. ホスト名をクリックして、ブラウザーの新規タブでアプリケーションを開きます。

4.7. コード変更のプッシュ

このセクションでは、ローカルコードの変更をアプリケーションにプッシュする方法を説明します。

  1. ローカルマシンで、テキストエディターを使用し、 nodejs-ex/views/index.html ファイルのサンプルアプリケーションのソースを開きます。
  2. コードの変更をアプリケーション内から表示できるようにします。たとえば、219 行目のタイトルを変更します。

    コードの変更
  3. Git に変更をコミットし、変更を GitHub リポジトリーにプッシュします。

    $ git add views/index.html
    $ git commit -m “Updates heading on welcome page”
    $ git push origin master
  4. webhook が正しく設定されている場合には、変更を基に、アプリケーションは即座にリビルドされます。Web ブラウザーを使用してアプリケーションを表示し、変更を確認します。

その後は、コードの更新をプッシュするだけで良く、残りは OpenShift Online が処理します。

4.8. アプリケーションのスケーリング

重要

OpenShift Online Starter ユーザーはアプリケーションをスケーリングできません。OpenShift Online Pro ユーザーのみがこれを行えます。

このセクションでは、アプリケーションが追加のトラフィックボリュームを処理できるように Node.js サービスのインスタンスを追加します。

  1. Web コンソールで、プロジェクトの Overview ページを表示します。NODEJS-MONGODB-EXAMPLE サービスの下にある上矢印をクリックし、Node.js アプリケーションのレプリカを追加します。

    アプリケーションのスケーリング

nodejs-mongodb-example Quickstart は、Pod ごとに 512 MiB のメモリーを使用するように設定されます。OpenShift Online Pro クォータでは、MongoDB データベースに加えて nodejs-mongodb-example Pod の最大 3 つのレプリカを許可します (合計 2 GiB)。

Web コンソールでクォータの使用状況をいつでも確認できます。

  1. Web コンソールで、作成したアプリケーションが含まれるプロジェクトに移動します。
  2. Settings タブをクリックし、Quota compute-resources というセクションにスクロールし、使用状況を表示します。
クォータ

4.9. 次のステップ: 基本を超えた手順 (Beyond the Basics)

次に、OpenShift Online CLI を使用して 基本を超えた手順 (Beyond the Basics) を実行し、個別のイメージを使用して同じアプリケーションを作成します。

第5章 基本を超えた手順 (Beyond the Basics)

5.1. 概要

本書では、まず基本的なウォークスルーのトピックで、近道を使わずに (long way) 同じサンプルプロジェクトを取得する方法を説明しています。

注記

OpenShift バージョン 3 のコアとなる概念に慣れていない場合は、まず新機能について参照する必要があるかもしれません。このバージョンの OpenShift は、バージョン 2 とは大きく異なります。

以下のセクションでは、Welcome ページや現在のヒットカウント (データベースに保存) を提供するサンプル Node.js アプリケーションが含まれるプロジェクトを作成する方法について説明します。これには、2 つの Pod を作成する必要があります。

  • 1 つは Node.js アプリケーションをホストするための Pod です。
  • もう 1 つは MongoDB データベースをホストするための Pod です。

チュートリアルでは、以下があることが前提となります。

  • 無料の OpenShift Online 3 アカウント。
  • 無料の GitHub アカウント。
  • Git がローカルにインストールされている。

5.2. セットアップ

このセクションでは、GitHub で OpenShift Node.js サンプルアプリケーションを フォーク し、アプリケーションをデプロイおよび編集できるようにローカルマシンにリポジトリーのクローンを作成します。

注記

基本的なウォークスルーのトピックに従って openshift/nodejs-ex リポジトリーをすでにフォークしている場合は、この手順を省略できます。

  1. GitHub で、openshift/nodejs-ex リポジトリーに移動します。ページの右上にある Fork をクリックします。

    プロジェクトのフォーク
  2. 次に、ローカルマシンで以下のコマンドを実行してサンプルアプリケーションのクローンを作成し、新規ディレクトリーに移動します。

    $ git clone https://github.com/<your_github_username>/nodejs-ex
    $ cd nodejs-ex

これで終了です。これで、元の openshift/nodejs-ex サンプルアプリケーションの Git リポジトリーのフォークが作成され、ローカルマシンにコピーが作成されました。

5.3. OpenShift CLI のインストール

このセクションでは、OpenShift CLI をインストールします。OpenShift CLI は、アプリケーションを管理するためのコマンドだけでなく、システムの各コンポーネントと対話する低レベルのツールも公開しています。

  1. まず、OpenShift Online Web コンソールの About ページから OpenShift Online CLI をダウンロードします。

    ページについて

    CLI は、Linux (32 または 64 ビット)、Mac OS X、および Windows で利用できます。CLI をダウンロードしたら、以下の手順に戻ります。

  2. 次に、アーカイブを展開または解凍し、oc バイナリーを PATH 上のディレクトリーに移動します。

    注記

    Linux または Mac OS X の PATH を確認するには、ターミナルを開いて以下を実行します。

    $ echo $PATH

    Windows でこれを確認するには、コマンドプロンプトを開き、以下を実行します。

    C:\> path

    インストール後に、コマンドシェルから oc コマンドを使用できます。

  3. 次に、OpenShift Online Web コンソールの About ページに移動します。

    ページについて
  4. 現在のセッショントークンと共に表示される oc login コマンドをコピーし、CLI から OpenShift Online にログインします。

    $ oc login https://<your_cluster_ID>.openshift.com --token=<your_session_token>

    oc login コマンドは、最初に OpenShift Online CLI を設定するのに最適な方法です。この情報は CLI 設定ファイルに自動的に保存され、その後のコマンドで使用されます。

5.4. ソースコードからの新規アプリケーションの作成

このセクションでは、Web コンソールを使用して最初のアプリケーションを OpenShift Online にデプロイします。

  1. まず、新規プロジェクトを作成します。以下の <project_name><your_github_username>-example などのプロジェクトの一意の名前に置き換えます。

    $ oc new-project <project_name>

    新規プロジェクトの作成後、新規プロジェクトの namespace に自動的に切り替えられます。

    基本的なウォークスルーのトピックに従っている場合、最初のプロジェクトはすでに作成されています。プロジェクト namespace に切り替え、元のサンプルアプリケーションをクリアする必要があります。

    1. 以下のコマンドを使用して、既存のプロジェクトの名前を検索します。

      $ oc get projects
    2. 次に、プロジェクト namespace に切り替えます。

      $ oc project <your_project_name>
    3. 次に、プロジェクトの既存オブジェクトをすべて削除します。

      $ oc delete all --all
    4. 以下のコマンドを使用して、既存の Persistent Volume Claim(永続ボリューム要求、PVC)の名前を検索します。

      $ oc get pvc
    5. 最後に、以下を使用して既存の Persistent Volume Claim(永続ボリューム要求、PVC)を削除します。

      $ oc delete pvc mongodb
  2. 次に、nodejs-ex ソースコードファイルのフォークされたコピーから新規アプリケーションを作成します。

    $ oc new-app https://github.com/<your_github_username>/nodejs-ex --name nodejs-mongodb-example
    注記

    --name オプションは、 oc new-app コマンドで作成されるすべてのリソースに nodejs-mongodb-example の名前を適用します。これにより後に管理が容易になります。

    ツールは、ソースコードを検査し、ソースコードをビルドできる適切なイメージを見つけ、ビルドされる新規アプリケーションイメージのイメージストリームを作成してから、正しいビルド設定デプロイメント設定 およびサービスの定義を作成します。

    oc new-app コマンドは、必要なすべての依存関係が確認された後にビルドを開始し、イメージが利用可能になるとアプリケーションを自動的にデプロイします。

ヒント

Web コンソールのプロジェクトの Overview ページでは、作成されている新規リソースを表示し、ビルドやデプロイメントの進捗を監視できます。Node.js Pod が実行されている間に、ビルドは完了します。

oc status コマンドを使用して新規 nodejs アプリケーションのステータスを確認し、oc get pods で Pod がいつ稼働するかを確認することもできます。

oc get services コマンドは、サービスが実行されている IP アドレスを示します。デプロイ先のデフォルトポートは 8080 です。

5.5. ルートの設定

このセクションでは、Node.js サービスを外部要求に公開するようにルートを設定します。

  1. まず、以下を使用してサービス名 (nodejs-mongodb-example) を検索します。

    $ oc get services
  2. 次に、サービスを外部要求に公開するためのルートを作成します。

    $ oc expose service/nodejs-mongodb-example
  3. これで、以下を使用してサービスの外部ホスト/ポートを確認できます。

    $ oc get routes
  4. 最後に、アプリケーションのルート HOST/PORT をコピーして、これをブラウザーに貼り付けてアプリケーションを表示します。

    Node.js アプリケーションの実行

5.6. データベースのプロビジョニング

このセクションでは、MongoDB サービスをプロジェクトに追加します。

アプリケーションのインデックスページを表示する際に、Request informationNo database configured と表示される場合があります。MongoDB サービスを追加して修正します。

  1. 以下を使用して、OpenShift Online が提供する MongoDB データベースをプロジェクトに追加します。

    $ oc new-app mongodb-persistent \
    -p MONGODB_USER=admin \
    -p MONGODB_PASSWORD=secret \
    -p MONGODB_ADMIN_PASSWORD=super-secret
    注記

    -p フラグは、mongodb-persistent データベーステンプレートで使用されるパラメーター値を設定します。

  2. 次のセクションに移動する前に、MongoDB サービスの名前をメモします。

5.7. 環境変数の設定

このセクションでは、Node.js サービスを新しい MongoDB サービスに接続するように設定します。

  1. MongoDB サービスを使用できるように環境変数 MONGO_URL を Node.js Web サービスに追加し、「Page view count」機能を有効にする必要があります。以下を実行します。

    $ oc set env dc/nodejs-mongodb-example
    MONGO_URL='mongodb://admin:secret@<MongoDB-service-name>:27017/sampledb'
    注記

    同じプロジェクトのサービスには、自動的に解決可能な DNS 名があります。

    以下は例になります。

    $ oc set env dc/nodejs-mongodb-example
    MONGO_URL='mongodb://admin:secret@mongodb-persistent:27017/sampledb'
  2. 次に、oc status を実行して、更新されたデプロイメントが開始されていることを確認します。デプロイメントの完了後に、MongoDB データベースに保存される現在のヒットカウントを表示する Node.js Welcome ページが表示されます。

    注記

    プロジェクト内のすべての Pod に設定された環境変数の一覧を取得するには、以下を実行します。

    $ oc set env pods --all --list

5.8. 自動化ビルドの設定

このセクションでは、フォークしたリポジトリーにコードの変更をプッシュするたびにアプリケーションの再ビルドを自動トリガーするように GitHub Webhook を設定します。

  1. 最初に、以下のコマンドを実行して、ビルド設定に関連付けれた Webhook URL を表示します。

    $ oc describe buildConfig nodejs-mongodb-example
  2. 上記のコマンドで出力される webhook GitHub URL をコピーします。Webhook URL は以下の形式になります。

    http://<openshift_api_host:port>/osapi/v1/namespaces/<namespace>/buildconfigs/frontend/webhooks/<your_secret_key>/github
  3. 次に、GitHub のフォークされたリポジトリーに移動してから以下を実行します。

    1. Settings をクリックします。
    2. Webhooks & Services をクリックします。
    3. Add webhook をクリックします。
    4. Webhook URL を Payload URL フィールドに貼り付け、 Add webhook をクリックして保存します。

これで終了です。フォークされた GitHub リポジトリーにコードの変更をプッシュすると、アプリケーションが自動的に再ビルドされるようになりました。

5.9. コード変更のプッシュ

このセクションでは、ローカルコードの変更をアプリケーションにプッシュする方法を説明します。

  1. ローカルマシンで、テキストエディターを使用し、 nodejs-ex/views/index.html ファイルのサンプルアプリケーションのソースを開きます。
  2. コードの変更をアプリケーション内から表示できるようにします。たとえば、219 行目のタイトルを変更します。

    コードの変更
  3. Git に変更をコミットし、変更を GitHub リポジトリーにプッシュします。

    $ git add nodejs-ex/views/index.html
    $ git commit -m "Updates heading on welcome page"
    $ git push origin master
  4. webhook が正しく設定されている場合には、変更を基に、アプリケーションは即座にリビルドされます。Web コンソールのプロジェクトの Overview ページでは、ビルドやデプロイメントの進捗を確認できます。デプロイメントが完了したら、Web ブラウザーを使用してアプリケーションを表示し、変更を確認します。

その後は、コードの更新をプッシュするだけで良く、残りは OpenShift Online が処理します。

5.10. 失敗通知

各プロジェクトについて、停止または失敗したデプロイメント、停止したビルド、停止または失敗した Persistent Volume Claim(永続ボリューム要求、PVC)を含む、各種の失敗に関するメール通知 を受け取ることを選択できます。

5.11. 次のステップ

以下のセクションでは、OpenShift Online 3 の初期手順を完了した後に実行するいくつかのステップについて説明します。

5.11.1. OpenShift Online の使用に関する考慮事項

5.11.2. 他の Quickstart

OpenShift Online 2 と同様に、OpenShift Online 3 は開発者向けに、すぐにアプリケーション開発を開始していただけるように、適切な実装とチュートリアルと共に、追加設定なしで使用できる言語およびデータベースを提供します。言語サポートは、Quickstart テンプレートを軸として展開され、このテンプレートはビルダーイメージを活用します。

新規アプリケーションの作成についてのトピックを確認し、以下の言語の Quickstart テンプレートを使用してみてください。

言語実装およびチュートリアル

Ruby

Rails

Python

Django

Node.js

Node.js

PHP

CakePHP

Perl

Dancer

Java

Maven

OpenShift Online が提供する他のイメージには以下が含まれます。

さらに、JBoss Middleware では広範囲に及ぶ OpenShift Online テンプレートを利用できます。

特に xPaaS サービスで利用可能な技術は以下のとおりです。

  • JBoss EAP 6 が提供する Java EE 6 Application Server
  • JBoss Fuse および JBoss A-MQ が提供する統合およびメッセージサービス
  • JBoss Data Grid が提供する Data Grid サービス
  • JBoss BRMS が提供する Real Time Decision Service
  • Tomcat 7 および Tomcat 8 が提供する Java Web Server 3.0

上記の各オファリングについては、一連の組み合わせが提供されます。

  • HTTP のみ vs HTTP および HTTPS
  • データベースを必要としない場合や、MongoDB、PostgreSQL または MySQL のいずれかを使用する場合
  • A-MQ との統合 (必要な場合)

5.11.3. rsync の使用

oc rsync を使用してコンテナーのリモートディレクトリーへの/からのローカルファイルのコピーを実行するための手順については、「Copying Files」を参照してください。

5.11.4. 自動スケーリングの設定

メトリクスに基づいてレプリケーションコントローラーまたはデプロイメント設定のスケーリングを自動的に増減する手順については、「Pod Autoscaling」を参照してください。

自動スケーリングについては、OpenShift ブログの記事を参照することもできます。

5.11.5. 『開発者ガイド』の参照情報

追加の情報については、『Developer Guide』を参照してください。たとえば、開発プロセスのプランニングや、新規アプリケーショントピックの作成についてのトピックから参照することができます。

5.11.6. トラブルシューティング

一般的なヒントおよび提案について確認してください。

第6章 OpenShift Online 2 と 3 の比較

6.1. 概要

OpenShift Online 3 は OpenShift バージョン 3 (v3) のアーキテクチャーをベースにしており、OpenShift バージョン 2 (v2) とは非常に異なる製品です。OpenShift v2 と同じ用語が数多く v3 でも使用されており、同じ機能が実行されますが、異なる用語が使用される場合もあり、背景で実行される内容は非常に異なる場合があります。ただし、OpenShift はアプリケーションプラットフォームとして依然として機能します。

このトピックでは、バージョンの違いを詳しく説明し、OpenShift のユーザーの OpenShift v2 から OpenShift v3 への移行を支援します。

6.2. アーキテクチャーの変更

ギア vs コンテナー

ギアは OpenShift v2 のコアコンポーネントです。カーネルの namespace、cGroups および SELinux などのテクノロジーで、スケーラビリティーが高く、セキュアなコンテナーアプリケーションプラットフォームを OpenShift ユーザーに提供します。ギア自体はコンテナーテクノロジーの 1 つの形態です。

OpenShift v3 は、ギアのアイデアを次のレベルに進化させます。これは、v2 コンテナー技術の進化した形として Docker を使用します。このコンテナーアーキテクチャーは OpenShift v3 の中核となります。

Kubernetes

OpenShift v2 のアプリケーションは通常は複数のギアを使用するのに対し、OpenShift v3 のアプリケーションは複数のコンテナーを使用します。OpenShift v2 では、ギアのオーケストレーション、スケジューリングおよび配置は、OpenShift Broker ホストが処理していました。OpenShift v3 では、マスターホストに Kubernetes を統合してコンテナーのオーケストレーションを駆動します。

6.3. アプリケーション

アプリケーションは依然として OpenShift の中心的な要素です。OpenShift v2 では、アプリケーションが単一のユニットで、カートリッジタイプ 1 つに対して 1 つの Web フレームワークで構成されていました。たとえば、アプリケーションに PHP 1 つと MySQL 1 つを含めることはできますが、Ruby 1 つ、PHP 1 つ、および MySQL 2 つを含めることはできませんでした。また、MySQL などのデータベースカートリッジだけで機能させることもできませんでした。

アプリケーションの範囲を制限することで、OpenShift が環境変数を使用してアプリケーション内のすべてのコンポーネントをシームレスにリンクすることができます。たとえば、web フレームワークはすべて OPENSHIFT_MYSQL_DB_HOST および OPENSHIFT_MYSQL_DB_PORT 変数を使用して MySQL に接続する方法を把握します。ただし、この連携はアプリケーション内でのみ機能し、連携するように設計されたカートリッジ内でのみ機能しました。2 つのアプリケーション間で MySQL インスタンスを共有するなど、複数のアプリケーションコンポーネント間のリンクを可能にするものはありませんでした。

他の PaaSes の大半は、Web フレームワークだけに制限され、他の種類のコンポーネントについては外部サービスに依存しますが、OpenShift v3 ではさらに多くのアプリケーショントポロジーや管理が可能です。

OpenShift v3 では、「アプリケーション」という用語を複数のサービスを結び付ける概念として使用しています。プロジェクトでは、任意の数のコンポーネントを組み込み、柔軟にリンクすることができ、オプションで、グループ化または構造化するためにラベルを付けることもできます。この更新されたモデルにより、スタンドアロンの MySQL インスタンスまたは JBoss コンポーネント間で共有されるインスタンスの使用が可能になりました。

柔軟にリンクするとは、任意の 2 つのコンポーネントをリンクできることを意味します。コンポーネントの 1 つが環境変数をエクスポートでき、他方がこれらの環境変数の値を使用できる限り (また環境変数名が変換される可能性があります)、ベースにするイメージを変更せずに 2 つのコンポーネントをリンクすることができます。そのため、両方をフォークし、互換性を持たせるように設定を変更せずに、任意のデータベースおよび Web フレームワークの最適にコンテナー化された実装を直接使用できるようになります。

これは OpenShift 上には何でもビルドできることを意味し、OpenShift の主要な目的と合致しています。OpenShift の主要な目的とは、反復可能なライフサイクルに基づいてアプリケーション全体をビルドするためにコンテナーベースのプラットフォームとして機能することにあります。

6.4. カートリッジ vs イメージ

OpenShift v3 より、イメージ が OpenShift v2 のカートリッジの概念に置き換わりました。

OpenShift v2 のカートリッジはアプリケーションのビルドにおける中心的な要素です。各カートリッジは、必要なライブラリー、ソースコード、ビルドメカニズム、接続ロジック、ルーティングロジックを事前定義済みの環境と共に提供し、アプリケーションの各種コンポーネントを実行していました。

ただし、カートリッジには欠点がありました。開発者のコンテンツとカートリッジのコンテンツの違いが明確でないことや、ユーザーにはアプリケーションの各ギアにあるホームディレクトリーの所有権がないことなどの不利な点がありました。また、カートリッジな大規模なバイナリーに最適なディストリビューションのメカニズムではありませんでした。カートリッジ内から外部の依存関係を使用することもできましたが、これをあえて実行することはカプセル化の利点が活かすことにはなりませんでした。

パッケージ化の観点では、イメージはカーリッジよりも多くのタスクを実行し、より優れたカプセル化機能や柔軟性を提供します。ただし、カートリッジには、イメージに含まれないビルド、デプロイ、ルーティングのロジックが含まれています。OpenShift v3 では、これらの追加ニーズは Source-to-Image (S2I) および テンプレートの設定で対応しています。

依存関係

OpenShift v2 では、カートリッジの依存関係は、カートリッジマニフェストの Configure-Order または Requires で定義されていました。OpenShift v3 では、Pod が自らを事前に定義された状態にする宣言型のモデルを使用します。インストール時間の順序付けではなく、適用される明示的な依存関係がランタイム時に実行されます。

たとえば、開始前に別のサービスを利用可能な状態にしておく必要がある場合があります。このような依存関係チェックは、2 つのコンポーネントの作成時のみではなく常に適用できます。そのため、依存関係チェックをランタイムにプッシュすることで、システムを長期にわたって正常な状態に保つことができます。

コレクション

OpenShift v2 のカートリッジはギア内に共同で配置されますが、OpenShift v3 のイメージは、 コンテナーと 1 対 1 でマッピングされます。 コンテナーは、共同配置のメカニズムとして Pod を使用します。

ソースコード

OpenShift v2 では、アプリケーションには 1 つ以上の Web フレームワークと 1 つの git リポジトリー必要でした。OpenShift v3 では、ソースからビルドするイメージを選択でき、そのソースは OpenShift 外にある場合もあります。ソースはイメージから切断されているので、イメージとソースの選択は異なる操作となります (ソースの設定はオプションです)。

Build

OpenShift v2 では、ビルドはアプリケーションギアで行われていました。つまり、リソースの制約によりスケーリングできないアプリケーションの場合にはダウンタイムが発生していました。v3 では、ビルドは別個のコンテナーで実行されます。また OpenShift v2 のビルド結果では、rsync を使用してギアを同期していました。v3 では、ビルドの結果はイミュータブルなイメージとして最初にコミットされ、内部レジストリーに公開されます。その後、そのイメージはクラスター内の任意のノードで起動したり、将来の日付でロールバックしたりするために利用できます。

ルーティング

OpenShift v2 では、アプリケーションに拡張性を持たせるか、およびアプリケーションのルーティング層が高可用性 (HA) を確保するために有効にされるかどうかについて直接選択する必要がありました。OpenShift v3 では、単純にアプリケーションコンポーネントを 2 つ以上のレプリカにスケールアップすることで、 ルートを HA 対応のファーストクラスのオブジェクトとして使用することができます。アプリケーションを再作成したり、DNS エントリーを変更したりする必要はありません。

ルート自体はイメージから切断されています。以前のバージョンでは、カートリッジによりデフォルトのルートセットが定義され、アプリケーションにエイリアスを追加できました。OpenShift v3 では、テンプレートを使用してイメージに任意の数のルートを設定できます。これらのルートを使用すると、システムルートとユーザーエイリアスを区別することなく、公開するスキーム、ホスト、パスを任意に変更できます。

6.5. ブローカー vs マスター

OpenShift v3 のマスターは、OpenShift v2 のブローカーホストと似ています。ただし、通常は etcd が各マスターホストにインストールされるので、OpenShift v2 のブローカーが使用する MongoDB および ActiveMQ の階層は不要になりました。

6.6. ドメイン vs プロジェクト

プロジェクトは基本的には v2 のドメインに相当します。

法律上の通知

Copyright © 2020 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.