3.4. フロントエンドアプリケーションのデプロイ
OpenShift Container Platform でアプリケーションをデプロイする最も簡単な方法は、提供されているコンテナーイメージを実行することです。
次の手順では、national-parks-app アプリケーションのフロントエンドコンポーネントである parksmap をデプロイします。この Web アプリケーションは、世界中の国立公園の位置を示すインタラクティブマップを表示します。
前提条件
- OpenShift Container Platform クラスターにアクセスできる。
-
OpenShift CLI (
oc) がインストールされている。
手順
次のコマンドを実行して、
parksmapアプリケーションをデプロイします。oc new-app quay.io/openshiftroadshow/parksmap:latest --name=parksmap -l 'app=national-parks-app,component=parksmap,role=frontend,app.kubernetes.io/part-of=national-parks-app'
$ oc new-app quay.io/openshiftroadshow/parksmap:latest --name=parksmap -l 'app=national-parks-app,component=parksmap,role=frontend,app.kubernetes.io/part-of=national-parks-app'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.1. フロントエンドサービスの公開 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、OpenShift Container Platform で実行されているサービスは外部からアクセスできません。
外部クライアントがアクセスできるようにサービスを公開するには、ルート を作成します。Route オブジェクトは、Kubernetes Ingress オブジェクトに似た OpenShift Container Platform ネットワークリソースです。デフォルトの OpenShift Container Platform ルーター (HAProxy) は、受信リクエストの HTTP ヘッダーを使用して、接続をプロキシー処理する場所を決定します。
オプションとして、ルートに TLS などのセキュリティーを定義できます。
前提条件
-
parksmapフロントエンドアプリケーションをデプロイしている。 -
cluster-adminまたはプロジェクトレベルのadmin特権がある。
手順
次のコマンドを実行して、
parksmapフロントエンドアプリケーションを公開するためのルートを作成します。oc create route edge parksmap --service=parksmap
$ oc create route edge parksmap --service=parksmapCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、アプリケーションルートが正常に作成されたことを確認します。
oc get route parksmap
$ oc get route parksmapCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD parksmap parksmap-user-getting-started.apps.cluster.example.com parksmap 8080-tcp edge None
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD parksmap parksmap-user-getting-started.apps.cluster.example.com parksmap 8080-tcp edge NoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.2. Pod の詳細を表示する リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform は、Pod の Kubernetes の概念を活用しています。これは、1 つのホストにともにデプロイされる 1 つ以上のコンテナーであり、定義、デプロイ、管理できる最小のコンピュート単位です。Pod は、コンテナーに対して、(物理または仮想) マシンインスタンスとほぼ同等のものです。
クラスターの Pod を表示し、それらの Pod およびクラスター全体としての正常性を判別できます。
前提条件
-
parksmapフロントエンドアプリケーションをデプロイしている。
手順
次のコマンドを実行して、現在のプロジェクト内のすべての Pod をリスト表示します。
oc get pods
$ oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE parksmap-5f9579955-6sng8 1/1 Running 0 77s
NAME READY STATUS RESTARTS AGE parksmap-5f9579955-6sng8 1/1 Running 0 77sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Pod の詳細を表示します。
oc describe pod parksmap-5f9579955-6sng8
$ oc describe pod parksmap-5f9579955-6sng8Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Pod のログを表示します。
oc logs parksmap-5f9579955-6sng8
$ oc logs parksmap-5f9579955-6sng8Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
... 2025-03-26 18:03:24.774 INFO 1 --- [ main] o.s.m.s.b.SimpleBrokerMessageHandler : Started. 2025-03-26 18:03:24.798 INFO 1 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) 2025-03-26 18:03:24.801 INFO 1 --- [ main] c.o.evg.roadshow.ParksMapApplication : Started ParksMapApplication in 4.053 seconds (JVM running for 4.46)
... 2025-03-26 18:03:24.774 INFO 1 --- [ main] o.s.m.s.b.SimpleBrokerMessageHandler : Started. 2025-03-26 18:03:24.798 INFO 1 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) 2025-03-26 18:03:24.801 INFO 1 --- [ main] c.o.evg.roadshow.ParksMapApplication : Started ParksMapApplication in 4.053 seconds (JVM running for 4.46)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.3. デプロイメントのスケールアップ リンクのコピーリンクがクリップボードにコピーされました!
Kubernetes では、Deployment オブジェクトはアプリケーションのデプロイメント方法を定義します。ほとんどの場合、アプリケーションをデプロイすると、OpenShift Container Platform によって Pod、Service、ReplicaSet、および Deployment リソースが作成されます。
parksmap イメージをデプロイすると、デプロイメントリソースが作成されます。この例では、1 つの Pod のみがデプロイされます。ユーザーの需要に応えるため、または 1 つの Pod がダウンした場合でもアプリケーションが常に実行されるようにするために、アプリケーションをスケールアップする必要がある場合があります。
次の手順では、parksmap のデプロイメントをスケーリングして 2 つのインスタンスを使用します。
前提条件
-
parksmapフロントエンドアプリケーションをデプロイしている。
手順
次のコマンドを実行して、デプロイメントを 1 つの Pod インスタンスから 2 つの Pod インスタンスにスケーリングします。
oc scale --replicas=2 deployment/parksmap
$ oc scale --replicas=2 deployment/parksmapCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
deployment.apps/parksmap scaled
deployment.apps/parksmap scaledCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、デプロイメントが適切にスケールアップされたことを確認します。
oc get pods
$ oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE parksmap-5f9579955-6sng8 1/1 Running 0 7m39s parksmap-5f9579955-8tgft 1/1 Running 0 24s
NAME READY STATUS RESTARTS AGE parksmap-5f9579955-6sng8 1/1 Running 0 7m39s parksmap-5f9579955-8tgft 1/1 Running 0 24sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 2 つの
parksmapPod がリスト表示されていることを確認します。
デプロイメントを 1 つの Pod インスタンスにスケールダウンするには、--replicas オプションに 1 を渡します。
oc scale --replicas=1 deployment/parksmap
$ oc scale --replicas=1 deployment/parksmap