第3章 アプリケーションの作成
3.1. 開発者パースペクティブを使用したアプリケーションの作成
Web コンソールの Developer パースペクティブでは、+Add ビューからアプリケーションおよび関連サービスを作成し、それらを OpenShift Container Platform にデプロイするための以下のオプションが提供されます。
リソースの使用: 開発者コンソールを使い始めるには、これらのリソースを使用します。Options メニュー を使用してヘッダーを非表示にすることができます。
- サンプルを使用したアプリケーションの作成: 既存のコードサンプルを使用して、OpenShift Container Platform でアプリケーションの作成を開始します。
- ガイド付きドキュメントを使用してビルド: ガイド付きドキュメントを参照してアプリケーションを構築し、主なコンセプトや用語に慣れてください。
- 新規開発者機能の確認: Developer パースペクティブの新機能およびリソースを紹介します。
Developer catalog: Developer Catalog で、イメージビルダーに必要なアプリケーション、サービス、またはソースを選択し、プロジェクトに追加します。
- All Services: カタログを参照し、OpenShift Container Platform 全体でサービスを検出します。
- Database: 必要なデータベースサービスを選択し、アプリケーションに追加します。
- Operator Backed: 必要な Operator 管理サービスを選択し、デプロイします。
- Helm Chart: 必要な Helm チャートを選択し、アプリケーションおよびサービスのデプロイメントを単純化します。
Event Source: 特定のシステムからイベントソースを選択し、関心のあるイベントクラスを登録します。
注記RHOAS Operator がインストールされている場合には、マネージドサービスオプションも利用できます。
- Git repository: From Git、From Devfile または From Dockerfile オプションを使用して Git リポジトリーから既存のコードベース、Devfile、または Dockerfile をインポートし、OpenShift Container Platform でアプリケーションをビルドしてデプロイします。
- Container Image: イメージストリームまたはレジストリーからの既存イメージを使用し、これを OpenShift Container Platform にデプロイします。
- Pipelines: Tekton パイプラインを使用して OpenShift Container Platform でソフトウェア配信プロセスの CI/CD パイプラインを作成します。
Serverless: Serverless オプションを検査して、OpenShift Container Platform でステートレスおよびサーバーレスアプリケーションを作成、ビルド、デプロイします。
- Channel: Knative チャネルを作成し、インメモリーの信頼性の高い実装を備えたイベント転送および永続化層を作成します。
- Samples: 利用可能なサンプルアプリケーションを確認して、アプリケーションをすばやく作成、ビルド、デプロイします。
From Local Machine: From Local Machine タイルを確認して、ローカルマシンのファイルをインポートまたはアップロードし、簡単にアプリケーションをビルドしてデプロイします。
- Import YAML: YAML ファイルをアップロードし、アプリケーションをビルドしてデプロイするためのリソースを定義します。
- Upload JAR file: JAR ファイルをアップロードして Java アプリケーションをビルドおよびデプロイします。
Pipelines、 Event Source、および Import Virtual Machines などの特定のオプションは、OpenShift Pipelines Operator、 OpenShift Serverless Operator、および OpenShift Virtualization Operator がインストールされる場合にのみそれぞれ表示されることに注意してください。
3.1.1. 前提条件
Developer パースペクティブを使用してアプリケーションを作成するには、以下を確認してください。
- Web コンソールにログインしている。
- OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切な ロールおよびパーミッション を持つプロジェクトにアクセスできる。
前述の前提条件に加えてサーバーレスアプリケーションを作成するには、以下を確認します。
3.1.2. サンプルアプリケーションの作成
Developer パースペクティブの +Add フローで基本的なサンプルアプリケーションを使用し、アプリケーションをすぐに作成し、ビルドし、デプロイできます。
以下の手順では、サンプルアプリケーションを作成するための Developer パースペクティブの Samples オプションについて説明します。
手順
- +Add ビューで、Samples タイルをクリックし、Samples ページを表示します。
- Samples ページで、利用可能なサンプルアプリケーションの 1 つを選択し、Create Sample Application フォームを表示します。
Create Sample Application Form:
- Name フィールドには、デフォルトでデプロイメント名が表示されます。この名前は必要に応じて変更することができます。
- Builder Image Version では、ビルダーイメージがデフォルトで選択されます。Builder Image Version ドロップダウンリストを使用してイメージバージョンを変更できます。
- Git リポジトリー URL のサンプルは、デフォルトで追加されます。
- Create をクリックしてサンプルアプリケーションを作成します。サンプルアプリケーションのビルドステータスが Topology ビューに表示されます。サンプルアプリケーションの作成後、デプロイメントがアプリケーションに追加されていることを確認できます。
3.1.3. Git のコードベースのインポートおよびアプリケーションの作成
Developer パースペクティブを使用し、GitHub で既存のコードベースを使用して OpenShift Container Platform でアプリケーションを作成し、ビルドし、デプロイすることができます。
以下の手順では、Developer パースペクティブの From Git オプションを使用してアプリケーションを作成します。
手順
- +Add ビューで、Git Repository タイルの From Git をクリックし、Import from git フォームを表示します。
-
Git セクションで、アプリケーションの作成に使用するコードベースの Git リポジトリー URL を入力します。たとえば、このサンプル nodejs アプリケーションの URL
https://github.com/sclorg/nodejs-ex
を入力します。その後、URL は検証されます。 オプション: Show Advanced Git Options をクリックし、以下のような詳細を追加できます。
- Git Reference: アプリケーションのビルドに使用する特定のブランチ、タグ、またはコミットのコードを参照します。
- Context Dir: アプリケーションのビルドに使用するアプリケーションのソースコードのサブディレクトリーを指定します。
- Source Secret: プライベートリポジトリーからソースコードをプルするための認証情報で Secret Name を作成します。
オプション: Git リポジトリーを使用して devfile、Dockerfile、またはビルダーイメージをインポートして、デプロイメントをさらにカスタマイズできるようになりました。
- Git リポジトリーに devfile、Dockerfile、またはビルダーイメージが含まれる場合には、これらは自動的に検出され、それぞれのパスフィールドに設定されます。devfile、Dockerfile、およびビルダーイメージが同じリポジトリーで検出されると、devfile はデフォルトで選択されます。
- ファイルのインポートタイプを編集して、別のストラテジーを選択し、Edit import strategy オプションをクリックします。
- 複数の devfile、Dockerfile、またはビルダーイメージを検出された場合に、特定の devfile、Dockerfile、またはビルダーイメージをインポートするにはコンテキストディレクトリーを起点とした相対パスを指定します。
Git URL の検証後に、推奨されるビルダーイメージが選択されて星マークが付けられます。ビルダーイメージが自動検出されていない場合は、ビルダーイメージを選択します。
https://github.com/sclorg/nodejs-ex
Git URL の場合、Node.js ビルダーイメージがデフォルトで選択されます。- オプション:Builder Image Version ドロップダウンリストを使用してバージョンを指定します。
- オプション:Edit import strategy を使用して、別のストラテジーを選択します。
General セクションで、以下を実行します。
-
Application フィールドに、アプリケーションを分類するために一意の名前 (
myapp
など) を入力します。アプリケーション名が namespace で一意であることを確認します。 Name フィールドで、既存のアプリケーションが存在しない場合に、このアプリケーション用に作成されたリソースが Git リポジトリー URL をベースとして自動的に設定されることを確認します。既存のアプリケーションがある場合には、既存のアプリケーション内でそのコンポーネントをデプロイしたり、新しいアプリケーションを作成したり、またはコンポーネントをいずれにも割り当てない状態にしたりすることができます。
注記リソース名は namespace で一意である必要があります。エラーが出る場合はリソース名を変更します。
-
Application フィールドに、アプリケーションを分類するために一意の名前 (
Resources セクションで、以下を選択します。
- Deployment: 単純な Kubernetes スタイルのアプリケーションを作成します。
- Deployment Config: OpenShift Container Platform スタイルのアプリケーションを作成します。
Serverless Deployment: Knative サービスを作成します。
注記Serverless Deployment オプションは、Serverless Operator がクラスターにインストールされている場合にのみ、Import from git フォームに表示されます。詳細は、OpenShift Serverless のドキュメントを参照してください。
- Pipelines セクションで、 Add Pipeline を選択してから Show Pipeline Visualization をクリックし、アプリケーションのパイプラインを表示します。
- Advanced Options セクションでは、Create a route to the application がデフォルトで選択されるため、公開されている URL を使用してアプリケーションにアクセスできます。アプリケーションをパブリックルートに公開したくない場合は、チェックボックスをクリアできます。
- オプション: 以下の高度なオプションを使用してアプリケーションをさらにカスタマイズできます。
- Routing
Routing のリンクをクリックして、以下のアクションを実行できます。
- ルートのホスト名をカスタマイズします。
- ルーターが監視するパスを指定します。
- ドロップダウンリストから、トラフィックのターゲットポートを選択します。
Secure Route チェックボックスを選択してルートを保護します。必要な TLS 終端タイプを選択し、各ドロップダウンリストから非セキュアなトラフィックについてのポリシーを設定します。
注記サーバーレスアプリケーションの場合、Knative サービスが上記のすべてのルーティングオプションを管理します。ただし、必要に応じて、トラフィックのターゲットポートをカスタマイズできます。ターゲットポートが指定されていない場合、デフォルトポートの
8080
が使用されます。
- ドメインマッピング
Serverless Deployment を作成する場合、作成時に Knative サービスにカスタムドメインマッピングを追加できます。
Advanced options セクションで、Show advanced Routing options をクリックします。
- サービスにマッピングするドメインマッピング CR がすでに存在する場合は、Domain mapping のドロップダウンメニューから選択できます。
-
新規ドメインマッピング CR を作成する場合は、ドメイン名をボックスに入力し、Create オプションを選択します。たとえば、
example.com
と入力すると、Create オプションは Create "example.com" になります。
- ヘルスチェック
Health Checks リンクをクリックして、Readiness、Liveness、および Startup プローブをアプリケーションに追加します。すべてのプローブに事前に設定されたデフォルトデータが実装され、必要に応じてデフォルトデータでプローブを追加したり、必要に応じてこれをカスタマイズしたりできます。
ヘルスプローブをカスタマイズするには、以下を実行します。
- Add Readiness Probe をクリックし、必要に応じてコンテナーが要求を処理する準備ができているかどうかを確認するためにパラメーターを変更し、チェックマークを選択してプローブを追加します。
- Add Liveness Probe をクリックし、必要に応じてコンテナーが実行中かどうかを確認するためにパラメーターを変更し、チェックマークを選択してプローブを追加します。
Add Startup Probe をクリックし、必要に応じてコンテナー内のアプリケーションが起動しているかどうかを確認するためにパラメーターを変更し、チェックマークを選択してプローブを追加します。
それぞれのプローブについて、ドロップダウンリストから要求タイプ (HTTP GET、Container Command、TCP Socket) を指定できます。選択した要求タイプに応じてフォームが変更されます。次に、プローブの成功および失敗のしきい値、コンテナーの起動後の最初のプローブ実行までの秒数、プローブの頻度、タイムアウト値など、他のパラメーターのデフォルト値を変更できます。
- ビルド設定およびデプロイメント
Build Configuration および Deployment リンクをクリックして、それぞれの設定オプションを表示します。オプションの一部はデフォルトで選択されています。必要なトリガーおよび環境変数を追加して、オプションをさらにカスタマイズできます。
サーバーレスアプリケーションの場合、Deployment オプションは表示されません。これは、Knative 設定リソースが
DeploymentConfig
リソースの代わりにデプロイメントの必要な状態を維持するためです。
- スケーリング
Scaling リンクをクリックして、最初にデプロイするアプリケーションの Pod 数またはインスタンス数を定義します。
サーバーレスデプロイメントを作成する場合、以下の設定を行うこともできます。
-
Min Pods は、Knative サービスである時点で実行する必要がある Pod 数の下限を決定します。これは、
minScale
設定としても知られています。 -
Max Pods は、Knative サービスである時点で実行できる Pod 数の上限を決定します。これは、
maxScale
設定としても知られています。 - Concurrency target は、ある時点でアプリケーションの各インスタンスに対して必要な同時リクエストの数を決定します。
- Concurrency limit は、ある時点でアプリケーションの各インスタンスに対して許容される同時リクエストの数の制限を決定します。
- Concurrency utilization は、Knative が追加のトラフィックを処理するために追加の Pod をスケールアップする際に満たす必要のある同時リクエストの制限のパーセンテージを決定します。
-
Autoscale window は、Autoscaler がパニックモードではない場合に、スケーリングの決定を行う際のインプットを提供するためにメトリクスの平均値を計算する期間を定義します。この期間中にリクエストが受信されなかった場合、サービスはゼロにスケーリングされます。Autoscale window のデフォルト期間は
60s
です。これは stable window としても知られています。
-
Min Pods は、Knative サービスである時点で実行する必要がある Pod 数の下限を決定します。これは、
- リソースの制限
- Resource Limit リンクをクリックして、コンテナーが実行時に保証または使用が許可されている CPU および メモリー リソースの量を設定します。
- ラベル
Labels リンクをクリックして、カスタムラベルをアプリケーションに追加します。
- Create をクリックして、アプリケーションを作成し、Topology ビューでビルドのステータスを確認します。
3.1.4. Java アプリケーションのデプロイメントを容易にする JAR ファイルのアップロード
Developer パースペクティブの Topology ビューで JAR ファイルを使用して、Java アプリケーションをデプロイできます。以下のオプションを使用して JAR ファイルをアップロードできます。
- Developer パースペクティブの +Add ビューに移動し、From Local Machine タイルで Upload JAR file をクリックします。JAR ファイルを参照および選択するか、または JAR ファイルをドラッグアンドドロップしてアプリケーションをデプロイします。
- Topology ビューに移動し、Upload JAR file オプションを使用して、JAR ファイルをドラッグアンドドロップしてアプリケーションをデプロイします。
- Topology ビューのコンテキストメニューで Upload JAR file オプションを使用して JAR ファイルをアップロードしてアプリケーションをデプロイします。
以下の手順に従って、Topology ビューで JAR ファイルをアップロードし、Java アプリケーションをデプロイします。
手順
- Topology ビューで、Topology ビューの任意の場所を右クリックし、Add to Project メニューを表示します。
- Add to Project メニューにカーソルを置いてメニューオプションを表示し、Upload JAR ファイルオプションを選択し、 Upload JAR file オプションを選択して Upload JAR file フォームを確認します。または、Topology ビューで JAR ファイルをドラッグアンドドロップすることもできます。
- JAR file フィールドで、ローカルマシンで必要な JAR ファイルを参照し、これをアップロードします。または、JAR ファイルをフィールドにドラッグアンドドロップすることもできます。互換性のないファイルタイプが Topology ビューでドラッグアンドドロップされると、トーストアラートが右側に表示されます。互換性のないファイルタイプがアップロードフォームのフィールドにドロップされると、フィールドエラーが表示されます。
- オプションの Java コマンドをさらに指定して、デプロイされたアプリケーションをカスタマイズできます。ランタイムアイコンおよびビルダーイメージはデフォルトで選択されます。ビルダーイメージが自動検出されていない場合は、ビルダーイメージを選択します。必要に応じて、Builder Image Version のドロップダウンリストを使用してバージョンを変更できます。
- オプションの Application Name フィールドに、リソースラベルリング用にアプリケーションの一意の名前を入力します。
- Name フィールドに、関連付けられたリソースに名前を付けるために一意のコンポーネント名を入力します。
- Resources フィールドで、アプリケーションのリソースタイプを選択します。
- Advanced options で、Create a Route to the Application をクリックし、デプロイされたアプリケーションのパブリック URL を設定します。
Create をクリックしてアプリケーションをデプロイします。ユーザーは JAR ファイルがアップロード中であり、しばらくかかることを通知するトースト通知を確認します。トースト通知には、ビルドログを表示するリンクも含まれます。
注記ユーザーがビルドの実行中にブラウザータブを閉じようとすると、ユーザーに Web アラートはページを実際に出るかどうかについて尋ねます。
JAR ファイルをアップロードし、アプリケーションがデプロイされると、デプロイメントが Topology ビューに表示されます。
3.1.5. Developer Catalog を使用したサービスまたはコンポーネントのアプリケーションへの追加
Developer Catalog を使用して、データベース、ビルダーイメージ、Helm チャートなどの Operator がサポートするサービスに基づいてアプリケーションとサービスをデプロイします。Developer Catalog には、プロジェクトに追加できるアプリケーションコンポーネント、サービス、イベントソース、または Source-to-Image ビルダーのコレクションが含まれます。クラスター管理者は、カタログで利用可能なコンテンツをカスタマイズできます。
手順
- Developer パースペクティブで、+Add に移動して、Developer Catalog タイルから All Services をクリックし、Developer Catalog で利用可能なすべてのサービスを表示します。
- All Services で、サービスの種類またはプロジェクトに追加する必要のあるコンポーネントを選択します。この例では、Databases を選択してすべてのデータベースサービスを一覧表示し、MariaDB をクリックしてサービスの詳細を表示します。
Instantiate Template をクリックして、MariaDB サービスの詳細情報を含む自動的に設定されたテンプレートを表示し、Create をクリックして Topology ビューで MariaDB サービスを作成し、これを表示します。
図3.1 トポロジーの MariaDB
3.1.6. 関連情報
- OpenShift Serverless の Knative ルーティング設定についての詳細は、Routingを参照してください。
- OpenShift Serverless のドメインマッピング設定についての詳細は、Configuring a custom domain for a Knative serviceを参照してください。
- OpenShift Serverless の Knative 自動スケーリング設定についての詳細は、Autoscalingを参照してください。
- プロジェクトに新規ユーザーを追加する方法について、詳しくは プロジェクトの使用 を参照してください。