2.4. Topology ビューを使用したアプリケーション構成の表示
Web コンソールの Developer パースペクティブにある Topology ビューは、プロジェクト内のすべてのアプリケーション、それらのビルドステータスおよびアプリケーションに関連するコンポーネントとサービスを視覚的に表示します。
2.4.1. 前提条件
Topology ビューでアプリケーションを表示し、それらと対話するには、以下を確認します。
- Web コンソールにログインしている。
- Developer パースペクティブにいる。
- OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するための適切なプロジェクト内のロールおよびパーミッションがある。
- Developer パースペクティブを使用して OpenShift Container Platform でアプリケーションを作成し、デプロイしている。
2.4.2. アプリケーションのトポロジーの表示
Developer パースペクティブの左側のナビゲーションパネルを使用すると、Topology ビューに移動できます。アプリケーションを作成したら、Topology ビューに自動的に移動します。ここでは、アプリケーション Pod のステータスの確認、パブリック URL でのアプリケーションへの迅速なアクセス、ソースコードへのアクセスとその変更、最終ビルドのステータスの確認ができます。ズームインおよびズームアウトにより、特定のアプリケーションの詳細を表示することができます。
サーバーレスアプリケーションは、Knative シンボルで視覚的に表示されます (
)。
サーバーレスアプリケーションでは、Topology ビューでの読み込みおよび表示にしばらく時間がかかります。サーバーレスアプリケーションを作成すると、これは最初にサービスリソースを作成し、次にリビジョンを作成します。続いてデプロイされて Topology ビューに表示されます。これが唯一のワークロードの場合には、Add ページにリダイレクトされる可能性があります。リビジョンがデプロイされると、サーバーレスアプリケーションは Topology ビューに表示されます。
Pod のステータスまたはフェーズは、異なる色やツールヒントで表示されます。例: Running (
)、Not Ready (
)、Warning(
)、Failed(
)、Pending(
)、Succeeded(
)、Terminating(
)、または Unknown(
)。Pod のステータスについての詳細は、Kubernetes ドキュメント を参照してください。
アプリケーションを作成し、イメージがデプロイされると、ステータスは Pending と表示されます。アプリケーションをビルドすると、Runningと表示されます。
![Application Topology](https://access.redhat.com/webassets/avalon/d/OpenShift_Container_Platform-4.3-Applications-ja-JP/images/7d9608cc5434de0b7d15b82b336ad2a4/odc_application_topology.png)
以下のように、異なるタイプのリソースオブジェクトのインジケーターと共に、アプリケーションリソース名が追加されます。
- DC: DeploymentConfigs
- D: Deployment
- SS: StatefulSet
- DS: Daemonset
2.4.3. アプリケーションおよびコンポーネントとの対話
Web コンソールの Developer パースペクティブの Topology ビューは、アプリケーションおよびコンポーネントと対話するための以下のオプションを提供します。
-
Open URL (
) をクリックして、パブリック URL のルートで公開されるアプリケーションを表示します。
Edit Source code をクリックして、ソースコードにアクセスし、これを変更します。
注記この機能は、From Git、From Catalog、および From Dockerfile オプションを使用してアプリケーションを作成する場合にのみ利用できます。
Eclipse Che Operator がクラスターにインストールされている場合、Che ワークスペース(
)が作成され、ソースコードを編集するためにワークスペースが表示されます。インストールされていない場合は、ソースコードがホストされている Git リポジトリー(
) が表示されます。
-
カーソルを Pod の左下のアイコンの上に置き、最新ビルドおよびそのステータスを確認します。アプリケーションビルドのステータスは、New (
)、Pending ()、Running (
)、Completed (
)、Failed (
)、および Canceled (
)と表示されます。
- 画面右上に一覧表示される Shortcuts メニューを使用して、Topology ビューのコンポーネントを参照します。
- List View アイコンを使用してすべてのアプリケーションの一覧を表示し、Topology View アイコンを使用して Topology ビューに切り替えます。
2.4.4. アプリケーション Pod のスケーリングおよびビルドとルートの確認
Topology ビューは、Overview パネルでデプロイ済みのコンポーネントの詳細を提供します。Overview および Resources タブを使用して、アプリケーション Pod をスケーリングし、ビルドのステータス、サービスおよびルートについて以下のように確認できます。
コンポーネントノードをクリックし、右側の Overview パネルを確認します。Overview タブを使用して、以下を実行します。
- 上下の矢印を使用して Pod をスケーリングし、アプリケーションのインスタンス数の増減を手動で調整します。サーバーレスアプリケーションの場合、Pod は、チャネルのトラフィックに基づいてアイドルおよびスケールアップ時に自動的にゼロにスケーリングされます。
- アプリケーションの ラベル、アノテーション および ステータス を確認します。
Resources タブをクリックして、以下を実行します。
- すべての Pod の一覧を確認し、それらのステータスを表示し、ログにアクセスし、Pod をクリックして Pod の詳細を表示します。
- ビルド、ステータスを確認し、ログにアクセスし、必要に応じて新規ビルドを開始します。
- コンポーネントによって使用されるサービスとルートを確認します。
サーバーレスアプリケーションの場合、Resources タブは、そのコンポーネントに使用されるリビジョン、ルート、および設定に関する情報を提供します。
2.4.5. アプリケーション内での複数コンポーネントのグループ化
Add ページを使用して、複数のコンポーネントまたはサービスをプロジェクトに追加し、Topology ページを使用してアプリケーショングループ内のアプリケーションとリソースをグループ化できます。以下の手順では、MongoDB データベースサービスを Node.js コンポーネントを使用して既存のアプリケーションに追加します。
前提条件
- Developer パースペクティブを使用して、OpenShift Container Platform に Node.js アプリケーションを作成し、デプロイしている。
手順
以下のように MongoDB サービスを作成し、これをプロジェクトにデプロイします。
- Developer パースペクティブで、Add ビューに移動して Database オプションを選択し、Developer Catalogを確認します。ここには、アプリケーションにコンポーネントまたはサービスとして追加できる複数のオプションがあります。
- MongoDB オプションをクリックし、サービスの詳細を確認します。
- Instantiate Template をクリックして、MongoDB サービスの詳細情報を含む自動的に設定されたテンプレートを表示し、Create をクリックしてサービスを作成します。
- 左側のナビゲーションパネルで Topology をクリックし、プロジェクトにデプロイされた MongoDB サービスを表示します。
- MongoDB サービスを既存のアプリケーショングループに追加するには、mongodb Pod を選択して、これをアプリケーションにドラッグします。MongoDB サービスは既存のアプリケーショングループに追加されます。
コンポーネントをドラッグし、これをアプリケーショングループに追加すると、必要なラベルがコンポーネントに自動的に追加されます。MongoDB サービスノードをクリックし、Overview パネルの Labels セクションに追加されたラベル
app.kubernetes.io/part-of=myapp
を確認します。
または、以下のようにコンポーネントをアプリケーションに追加することもできます。
- MongoDB サービスをアプリケーションに追加するには、mongodb Pod をクリックし、右側の Overview パネルを確認します。
- パネルの右上にある Actions ドロップダウンメニューをクリックし、Edit Application Grouping を選択します。
- Edit Application Grouping ダイアログボックスで、Select an Application ドロップダウンリストをクリックし、適切なアプリケーショングループを選択します。
- Save をクリックし、アプリケーショングループに追加された MongoDB サービスを表示します。
アプリケーショングループからコンポーネントを削除するには、コンポーネントを選択し、Shift+ ドラッグでこれをアプリケーショングループからドラッグします。
2.4.6. アプリケーション内および複数のアプリケーション間でのコンポーネントの接続
アプリケーション内で複数のコンポーネントをグループ化することに加え、Topology ビューを使用してコンポーネントを相互に接続することもできます。バインディングコネクターまたはビジュアルコネクターのいずれかを使用してコンポーネントを接続できます。
コンポーネント間のバインディング接続は、ターゲットノードが Operator がサポートするサービスである場合にのみ確立できます。これは、矢印をこのようなターゲットノードにドラッグする際に表示される Create a binding connector ツールチップによって示されます。アプリケーションがバインディングコネクターを使用してサービスに接続されると、ServiceBindingRequest
が作成されます。その後、サービスバインディング Operator コントローラーは中間の Secret
を使用して、必要なバインディングデータを環境変数としてアプリケーション Deployment
に挿入します。要求が正常に行われると、アプリケーションが再デプロイされ、接続されたコンポーネント間の対話が確立されます。
ビジュアルコネクターは、接続先となるコンポーネント間の視覚的な接続のみを表示します。コンポーネント間の対話は確立されません。ターゲットノードが Operator がサポートするサービスではない場合、Create a visual connector ツールチップは矢印をターゲットノードにドラッグすると表示されます。
2.4.6.1. コンポーネント間のビジュアル接続の作成
ビジュアルコネクターを使用してアプリケーションコンポーネントに接続する意図を示すことができます。
この手順では、MongoDB サービスと Node.js アプリケーション間のビジュアル接続の作成例を説明します。
前提条件
- Developer パースペクティブを使用して Node.js アプリケーションを作成し、デプロイしている。
- Developer パースペクティブを使用して MongoDB サービスを作成し、デプロイしている。
手順
カーソルを MongoDB サービスの上に置き、ノードの矢印を確認します。
- 矢印をクリックして Node.js コンポーネントの方にドラッグし、 MongoDB サービスをこれに接続します。
MongoDB サービスをクリックし、Overview パネルを表示します。Annotations セクションで、編集 アイコンをクリックして Key =
app.openshift.io/connects-to
および Value =nodejs-ex
アノテーションがサービスに追加されていることを確認します。他のアプリケーションやコンポーネントを同様に作成し、それらの間の接続を確立することができます。
2.4.6.2. コンポーネント間のバインディング接続の作成
サービスバインディングはテクノロジープレビュー機能としてのみご利用いただけます。テクノロジープレビュー機能は Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。Red Hat は実稼働環境でこれらを使用することを推奨していません。これらの機能は、近々発表予定の製品機能をリリースに先駆けてご提供することにより、お客様は機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。
Red Hat のテクノロジープレビュー機能のサポート範囲についての詳細は、https://access.redhat.com/ja/support/offerings/techpreview/ を参照してください。
現時点で、etcd などのいくつかの特定の Operator や PostgresSQL Database Operator のサービスインスタンスのみがバインド可能です。
Operator がサポートするコンポーネントとのバインディング接続を確立できます。
この手順では、PostgreSQL データベースサービスと Node.js アプリケーション間のバインディング接続の作成例を説明します。PostgreSQL Database Operator がサポートするサービスでバインディング接続を作成するには、まずサポートする OperatorSource
を使用して Red Hat が提供する PostgreSQL データベース Operator を OperatorHub に追加し、Operator をインストールする必要があります。
前提条件
- Developer パースペクティブを使用して Node.js アプリケーションを作成し、デプロイしている。
- OperatorHub から Service Binding Operator をインストールしている。
手順
Red Hat が提供する PostgresSQL Operator を OperatorHub に追加するサポートする
OperatorSource
を作成します。サポートするOperatorSource
は、シークレット、ConfigMap、ステータス、および仕様属性のバインディング情報を公開します。- Add ビューで、YAML オプションをクリックし、 Import YAML 画面を表示します。
以下の YAML ファイルを追加して
OperatorSource
を適用します。apiVersion: operators.coreos.com/v1 kind: OperatorSource metadata: name: db-operators namespace: openshift-marketplace spec: type: appregistry endpoint: https://quay.io/cnr registryNamespace: pmacik
-
Create をクリックして、
OperatorSource
をクラスターに作成します。
Red Hat が提供する PostgreSQL データベース Operator をインストールします。
-
コンソールの Administrator パースペクティブで、Operators
OperatorHub に移動します。 - Database カテゴリーで、PostgreSQL Database Operator を選択して、これをインストールします。
-
コンソールの Administrator パースペクティブで、Operators
アプリケーションのデータベース (DB) インスタンスを作成します。
- Developer パースペクティブに切り替え、適切なプロジェクトにいることを確認します。
- Add ビューで、YAML オプションをクリックし、 Import YAML 画面を表示します。
エディターでサービスインスタンスの YAML を追加し、Create をクリックしてサービスをデプロイします。以下は、サービス YAML のサンプルです。
apiVersion: postgresql.baiju.dev/v1alpha1 kind: Database metadata: name: db-demo namespace: test-project spec: image: docker.io/postgres imageName: postgres dbName: db-demo
DB インスタンスが Topology ビューにデプロイされます。
- Topology ビューで Node.js コンポーネントにマウスを合わせて、ノードの矢印を確認します。
矢印をクリックし、db-demo-postgresql サービスにドラッグし、Node.js アプリケーションとのバインディング接続を確立します。
ServiceBindingRequest
が作成され、Service Binding Operator コントローラーは DB 接続情報を環境変数としてアプリケーションDeployment
に挿入します。要求が正常に行われると、アプリケーションが再デプロイされ、接続が確立されます。
2.4.7. Topology ビューに使用するラベルとアノテーション
Topology ビューは、以下のラベルおよびアノテーションを使用します。
- ノードに表示されるアイコン
-
ノードのアイコンは、最初に
app.openshift.io/runtime
ラベルを使用してからapp.kubernetes.io/name
ラベルを使用して一致するアイコンを検索して定義されます。このマッチングは、事前定義されたアイコンセットを使用して行われます。 - ソースコードエディターまたはソースへのリンク
-
app.openshift.io/vcs-uri
アノテーションは、ソースコードエディターへのリンクを作成するために使用されます。 - ノードコネクター
-
app.openshift.io/connects-to
アノテーションは、ノードに接続するために使用されます。 - アプリケーションのグループ化
-
app.kubernetes.io/part-of=<appname>
ラベルは、アプリケーション、サービス、およびコンポーネントをグループ化するために使用されます。
OpenShift Container Platform アプリケーションで使用する必要のあるラベルとアノテーションの詳細については、「Guidelines for labels and annotations for OpenShift applications」を参照してください。