第3章 アプリケーションの作成

3.1. 開発者パースペクティブを使用したアプリケーションの作成

Web コンソールの Developer パースペクティブでは、+Add ビューからアプリケーションおよび関連サービスを作成し、それらを OpenShift Container Platform にデプロイするための以下のオプションが提供されます。

  • リソースの使用: 開発者コンソールを使い始めるには、これらのリソースを使用します。Options メニュー kebab を使用してヘッダーを非表示にすることができます。

    • サンプルを使用したアプリケーションの作成: 既存のコードサンプルを使用して、OpenShift Container Platform でアプリケーションの作成を開始します。
    • ガイド付きドキュメントを使用してビルド: ガイド付きドキュメントを参照してアプリケーションを構築し、主なコンセプトや用語に慣れてください。
    • 新規開発者機能の確認: Developer パースペクティブの新機能およびリソースを紹介します。
  • Developer catalog: Developer Catalog で、イメージビルダーに必要なアプリケーション、サービス、またはソースを選択し、プロジェクトに追加します。

    • All Services: カタログを参照し、OpenShift Container Platform 全体でサービスを検出します。
    • Database: 必要なデータベースサービスを選択し、アプリケーションに追加します。
    • Operator Backed: 必要な Operator 管理サービスを選択し、デプロイします。
    • Helm Chart: 必要な Helm チャートを選択し、アプリケーションおよびサービスのデプロイメントを単純化します。
    • Devfile: Devfile レジストリーから devfile を選択して、開発環境を宣言的に定義します。
    • Event Source: 特定のシステムからイベントソースを選択し、関心のあるイベントクラスを登録します。

      注記

      RHOAS Operator がインストールされている場合には、マネージドサービスオプションも利用できます。

  • Git repository: From GitFrom 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: 利用可能なサンプルアプリケーションを確認して、アプリケーションをすばやく作成、ビルド、デプロイします。
  • Quick Starts: アプリケーションを作成、インポート、および実行するためのクイックスタートオプションを調べて、ステップバイステップの手順とタスクを使用します。
  • From Local Machine: From Local Machine タイルを確認して、ローカルマシンのファイルをインポートまたはアップロードし、簡単にアプリケーションをビルドしてデプロイします。

    • Import YAML: YAML ファイルをアップロードし、アプリケーションをビルドしてデプロイするためのリソースを定義します。
    • Upload JAR file: JAR ファイルをアップロードして Java アプリケーションをビルドおよびデプロイします。
  • Share my Project: このオプションを使用して、プロジェクトにユーザーを追加または削除し、アクセシビリティオプションを提供します。
  • Helm Chart リポジトリー: このオプションを使用して、namespace に Helm Chart リポジトリーを追加します。
  • リソースの並べ替え: これらのリソースを使用して、ナビゲーションペインに追加済みのピン留めされたリソースを並べ替えます。ナビゲーションウィンドウでピン留めされたリソースにカーソルを合わせると、その左側にドラッグアンドドロップアイコンが表示されます。ドラッグしたリソースは、それが属するセクションにのみドロップできます。

PipelinesEvent SourceImport Virtual Machines などの特定のオプションは、OpenShift Pipelines OperatorOpenShift Serverless Operator、および OpenShift Virtualization Operator がインストールされる場合にのみそれぞれ表示されることに注意してください。

3.1.1. 前提条件

Developer パースペクティブを使用してアプリケーションを作成するには、以下を確認してください。

前述の前提条件に加えてサーバーレスアプリケーションを作成するには、以下を確認します。

3.1.2. サンプルアプリケーションの作成

Developer パースペクティブの +Add フローでサンプルアプリケーションを使用し、アプリケーションをすぐに作成し、ビルドし、デプロイできます。

前提条件

  • OpenShift Container Platform Web コンソールにログインしており、Developer パースペクティブにいます。

手順

  1. +Add ビューで、Samples タイルをクリックし、Samples ページを表示します。
  2. Samples ページで、利用可能なサンプルアプリケーションの 1 つを選択し、Create Sample Application フォームを表示します。
  3. Create Sample Application Form:

    • Name フィールドには、デフォルトでデプロイメント名が表示されます。この名前は必要に応じて変更することができます。
    • Builder Image Version では、ビルダーイメージがデフォルトで選択されます。Builder Image Version ドロップダウンリストを使用してイメージバージョンを変更できます。
    • Git リポジトリー URL のサンプルは、デフォルトで追加されます。
  4. Create をクリックしてサンプルアプリケーションを作成します。サンプルアプリケーションのビルドステータスが Topology ビューに表示されます。サンプルアプリケーションの作成後、デプロイメントがアプリケーションに追加されていることを確認できます。

3.1.3. クイックスタートを使用したアプリケーションの作成

Quick Starts ページでは、OpenShift Container Platform でアプリケーションを作成、インポート、および実行する方法を、段階的な手順とタスクとともに示します。

前提条件

  • OpenShift Container Platform Web コンソールにログインしており、Developer パースペクティブにいます。

手順

  1. +Add ビューで、View all quick starts リンクをクリックして、クイックスタート ページを表示します。
  2. Quick Starts ページで、使用するクイックスタートのタイルをクリックします。
  3. Start をクリックして、クイックスタートを開始します。

3.1.4. Git のコードベースのインポートおよびアプリケーションの作成

Developer パースペクティブを使用し、GitHub で既存のコードベースを使用して OpenShift Container Platform でアプリケーションを作成し、ビルドし、デプロイすることができます。

以下の手順では、Developer パースペクティブの From Git オプションを使用してアプリケーションを作成します。

手順

  1. +Add ビューで、Git Repository タイルの From Git をクリックし、Import from git フォームを表示します。
  2. Git セクションで、アプリケーションの作成に使用するコードベースの Git リポジトリー URL を入力します。たとえば、このサンプル nodejs アプリケーションの URL https://github.com/sclorg/nodejs-ex を入力します。その後、URL は検証されます。
  3. オプション: Show Advanced Git Options をクリックし、以下のような詳細を追加できます。

    • Git Reference: アプリケーションのビルドに使用する特定のブランチ、タグ、またはコミットのコードを参照します。
    • Context Dir: アプリケーションのビルドに使用するアプリケーションのソースコードのサブディレクトリーを指定します。
    • Source Secret: プライベートリポジトリーからソースコードをプルするための認証情報で Secret Name を作成します。
  4. オプション: Git リポジトリーを使用して devfile、Dockerfile、またはビルダーイメージをインポートして、デプロイメントをさらにカスタマイズできるようになりました。

    • Git リポジトリーに devfile、Dockerfile、またはビルダーイメージが含まれる場合には、これらは自動的に検出され、それぞれのパスフィールドに設定されます。devfile、Dockerfile、およびビルダーイメージが同じリポジトリーで検出されると、devfile はデフォルトで選択されます。
    • ファイルのインポートタイプを編集して、別のストラテジーを選択し、Edit import strategy オプションをクリックします。
    • 複数の devfile、Dockerfile、またはビルダーイメージを検出された場合に、特定の devfile、Dockerfile、またはビルダーイメージをインポートするにはコンテキストディレクトリーを起点とした相対パスを指定します。
  5. Git URL の検証後に、推奨されるビルダーイメージが選択されて星マークが付けられます。ビルダーイメージが自動検出されていない場合は、ビルダーイメージを選択します。https://github.com/sclorg/nodejs-ex Git URL の場合、Node.js ビルダーイメージがデフォルトで選択されます。

    1. オプション:Builder Image Version ドロップダウンリストを使用してバージョンを指定します。
    2. オプション:Edit import strategy を使用して、別のストラテジーを選択します。
    3. オプション:Node.js ビルダーイメージの場合、Run command フィールドを使用して、アプリケーションを実行するためにコマンドを上書きします。
  6. General セクションで、以下を実行します。

    1. Application フィールドに、アプリケーションを分類するために一意の名前 (myapp など) を入力します。アプリケーション名が namespace で一意であることを確認します。
    2. Name フィールドで、既存のアプリケーションが存在しない場合に、このアプリケーション用に作成されたリソースが Git リポジトリー URL をベースとして自動的に設定されることを確認します。既存のアプリケーションがある場合には、既存のアプリケーション内でそのコンポーネントをデプロイしたり、新しいアプリケーションを作成したり、またはコンポーネントをいずれにも割り当てない状態にしたりすることができます。

      注記

      リソース名は namespace で一意である必要があります。エラーが出る場合はリソース名を変更します。

  7. Resources セクションで、以下を選択します。

    • Deployment: 単純な Kubernetes スタイルのアプリケーションを作成します。
    • Deployment Config: OpenShift Container Platform スタイルのアプリケーションを作成します。
    • Serverless Deployment: Knative サービスを作成します。

      注記

      Serverless Deployment オプションは、Serverless Operator がクラスターにインストールされている場合にのみ、Import from git フォームに表示されます。詳細は、OpenShift Serverless のドキュメントを参照してください。

  8. Pipelines セクションで、 Add Pipeline を選択してから Show Pipeline Visualization をクリックし、アプリケーションのパイプラインを表示します。デフォルトのパイプラインが選択されますが、アプリケーションで利用可能なパイプラインのリストから必要なパイプラインを選択できます。
  9. オプション: Advanced Options セクションでは、Target port および Create a route to the application がデフォルトで選択されるため、公開されている URL を使用してアプリケーションにアクセスできます。

    アプリケーションがデフォルトのパブリックポート 80 でデータを公開しない場合は、チェックボックスの選択を解除し、公開する必要のあるターゲットポート番号を設定します。

  10. オプション: 以下の高度なオプションを使用してアプリケーションをさらにカスタマイズできます。
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 GETContainer CommandTCP 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 としても知られています。
リソースの制限
Resource Limit リンクをクリックして、コンテナーが実行時に保証または使用が許可されている CPU および メモリー リソースの量を設定します。
ラベル

Labels リンクをクリックして、カスタムラベルをアプリケーションに追加します。

  1. Create をクリックしてアプリケーションを作成し、成功の通知が表示されます。Topology ビューでアプリケーションのビルドステータスを確認できます。

3.1.5. JAR ファイルをアップロードして Java アプリケーションをデプロイする

Web コンソールの Developer パースペクティブで、以下のオプションを使用して JAR ファイルをアップロードできます。

  • Developer パースペクティブの +Add ビューに移動し、From Local Machine タイルで Upload JAR file をクリックします。JAR ファイルを参照および選択するか、JAR ファイルをドラッグしてアプリケーションをデプロイします。
  • Topology ビューに移動し、Upload JAR file オプションを使用するか、JAR ファイルをドラッグしてアプリケーションをデプロイします。
  • Topology ビューのコンテキストメニューで Upload JAR file オプションを使用して JAR ファイルをアップロードしてアプリケーションをデプロイします。

前提条件

  • クラスター管理者が Cluster Samples Operator をインストールしている。
  • OpenShift Container Platform Web コンソールにアクセスでき、Developer パースペクティブを使用している。

手順

  1. Topology ビューで、任意の場所を右クリックして Add to Project メニューを表示します。
  2. Add to Project メニューにカーソルを置いてメニューオプションを表示し、Upload JAR file オプションを選択して Upload JAR file フォームを確認します。または、JAR ファイルを Topology ビューにドラッグできます。
  3. JAR file フィールドで、ローカルマシンで必要な JAR ファイルを参照し、これをアップロードします。または、JAR ファイルを フィールドにドラッグできます。互換性のないタイプのファイルが Topology ビューにドラッグされると、トーストアラートが右側に表示されます。互換性のないファイルタイプがアップロードフォームのフィールドにドロップされると、フィールドエラーが表示されます。
  4. デフォルトで、ランタイムアイコンとビルダーイメージが選択されています。ビルダーイメージが自動検出されていない場合は、ビルダーイメージを選択します。必要に応じて、Builder Image Version のドロップダウンリストを使用してバージョンを変更できます。
  5. オプション: Application Name フィールドに、リソースのラベル付けに使用する一意のアプリケーション名を入力します。
  6. Name フィールドに、関連付けられたリソースに名前を付けるために一意のコンポーネント名を入力します。
  7. Resources フィールドで、アプリケーションのリソースタイプを選択します。
  8. Advanced options メニューで Create a Route to the Application をクリックし、デプロイされたアプリケーションのパブリック URL を設定します。
  9. Create をクリックしてアプリケーションをデプロイします。JAR ファイルがアップロードされたことを通知するトースト通知が表示されます。トースト通知には、ビルドログを表示するリンクも含まれます。
注記

ビルドの実行中にブラウザータブを閉じようとすると、Web アラートが表示されます。

JAR ファイルのアップロードとアプリケーションのデプロイメントが完了すると、Topology ビューにアプリケーションが表示されます。

3.1.6. Devfile レジストリーを使用した devfile へのアクセス

Developer パースペクティブの +Add フローで devfile を使用して、アプリケーションを作成できます。+Add フローは、devfile コミュニティーレジストリー との完全なインテグレーションを提供します。devfile は、ゼロから設定せずに開発環境を記述できる移植可能な YAML ファイルです。Devfile レジストリー を使用すると、事前に設定された devfile を使用してアプリケーションを作成できます。

手順

  1. Developer Perspective+AddDeveloper CatalogAll Services に移動します。Developer Catalog で利用可能なすべてのサービスの一覧が表示されます。
  2. All Services セクションで Devfiles を選択し、特定の言語またはフレームワークをサポートする devfile を参照します。あるいは、キーワードフィルターを使用して、名前、タグ、または説明を使用して特定の devfile を検索できます。
  3. アプリケーションの作成に使用する devfile をクリックします。devfile タイルに、devfile の名前、説明、プロバイダー、および ドキュメントなど、devfile の詳細が表示されます。
  4. Create をクリックしてアプリケーションを作成し、Topology ビューでアプリケーションを表示します。

3.1.7. Developer Catalog を使用したサービスまたはコンポーネントのアプリケーションへの追加

Developer Catalog を使用して、データベース、ビルダーイメージ、Helm チャートなどの Operator がサポートするサービスに基づいてアプリケーションとサービスをデプロイします。Developer Catalog には、プロジェクトに追加できるアプリケーションコンポーネント、サービス、イベントソース、または Source-to-Image ビルダーのコレクションが含まれます。クラスター管理者は、カタログで利用可能なコンテンツをカスタマイズできます。

手順

  1. Developer パースペクティブで、+Add に移動して、Developer Catalog タイルから All Services をクリックし、Developer Catalog で利用可能なすべてのサービスを表示します。
  2. All Services で、サービスの種類またはプロジェクトに追加する必要のあるコンポーネントを選択します。この例では、Databases を選択してすべてのデータベースサービスを一覧表示し、MariaDB をクリックしてサービスの詳細を表示します。
  3. Instantiate Template をクリックして、MariaDB サービスの詳細情報を含む自動的に設定されたテンプレートを表示し、Create をクリックして Topology ビューで MariaDB サービスを作成し、これを表示します。

    図3.1 トポロジーの MariaDB

    odc devcatalog toplogy

3.1.8. 関連情報

  • OpenShift Serverless の Knative ルーティング設定についての詳細は、Routingを参照してください。
  • OpenShift Serverless のドメインマッピング設定についての詳細は、Configuring a custom domain for a Knative serviceを参照してください。
  • OpenShift Serverless の Knative 自動スケーリング設定についての詳細は、Autoscalingを参照してください。
  • プロジェクトに新規ユーザーを追加する方法の詳細は、プロジェクトの使用 を参照してください。
  • Helm チャートリポジトリーの作成の詳細は Helm Chart リポジトリーの作成 を参照してください。