🕌

OpenShiftでHTTPアプリを公開する方法

2025/02/09に公開

0.はじめに

OpenShift Container Platform(以下、OCP)入門者向けに、OpenShiftでHTTPアプリを公開する方法を解説します。

OpenShiftでのアプリケーション公開方法を理解し、適切な手法を選択できるようになります。

では、次の章から具体的な解説を進めます!

1. アプリケーションの外部公開とは?

OpenShiftでは、アプリケーションを外部に公開する方法として以下の2つがあります。

  1. HTTPアプリケーションの公開

    • Route を使用し、クラスター外部からHTTP/HTTPS経由でアクセス可能にする。
  2. 非HTTPアプリケーションの公開

    • NodePort を使用し、特定のノードのポートを開放する。
    • ロードバランサーサービス を使用し、外部ロードバランサーを介してアクセスを提供する。

2. HTTPアプリケーションの公開(Routeを利用)

Route は、OpenShift独自のリソースで、アプリケーションを外部のユーザーがHTTP/HTTPSでアクセスできるようにする仕組みです。

2.1 デモの手順

① デモ用のプロジェクト作成

oc new-project httpdemo

②アプリケーションのデプロイ

oc new-app --name=my-http-app --image=bitnami/nginx

このコマンドは以下のリソースを自動作成します。

  • Deployment
  • Service
  • Pod

③ Podの起動確認

oc get pods -w

実行結果の例

NAME                          READY   STATUS    RESTARTS   AGE
my-http-app-5d8c7c9d9c-nb6zq   1/1     Running   0          30s

④ Routeの作成

oc expose service my-http-app --hostname=my-app.httpdemo.apps-crc.testing

このコマンドにより、以下のリソースが作成されます。

  • Route(外部向けのエンドポイント)

⑤ 作成したRouteの情報を確認

oc get route

実行結果の例

NAME          HOST/PORT                                    PATH   SERVICES       PORT    TERMINATION   WILDCARD
my-http-app   my-app.httpdemo.apps-crc.testing                   my-http-app    8080

⑥Routeの詳細情報を確認

oc describe route my-http-app

実行結果の例

Name:                   my-http-app
Namespace:              httpdemo
Created:                2m ago
Labels:                 app=my-http-app
Requested Host:         my-app.httpdemo.apps-crc.testing
Service:                my-http-app
Target Port:            8080
TLS Termination:        edge

この情報をもとに、ブラウザやcurlでアクセス可能

curl http://my-app.httpdemo.apps-crc.testing

3. 非HTTPアプリケーションの公開

非HTTPアプリケーション(TCP/UDPベース)は、RoutesではなくServiceのNodePortまたはLoadBalancerを使用して外部に公開します。

3.1 NodePortを利用する

  • OpenShiftのServiceでNodePortを使用すると、クラスターの特定ノードのポートを開放してアクセス可能になります。

①Serviceの作成(NodePortタイプ)

oc expose deployment my-http-app --port=8080 --type=NodePort

②Serviceの情報確認

oc get svc

実行結果の例

NAME          TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
my-http-app   NodePort   172.30.250.100   <none>        8080:30080/TCP   3m

クラスター外部からアクセス可能なポートは 30080

curl http://<NODE_IP>:30080

(※ <NODE_IP> にはクラスターのノードIPを指定)


3.2 ロードバランサーサービスを利用する

  • ロードバランサーサービスは、クラウド環境(AWS, GCP, Azure)で外部のロードバランサーを作成し、アプリケーションに接続します。

①Serviceの作成(LoadBalancerタイプ)

oc expose deployment my-http-app --port=8080 --type=LoadBalancer

②Serviceの情報確認

oc get svc

実行結果の例

NAME          TYPE           CLUSTER-IP       EXTERNAL-IP      PORT(S)          AGE
my-http-app   LoadBalancer   172.30.250.100   192.168.1.100    8080:32000/TCP   3m

EXTERNAL-IP に表示されたIPアドレスでアクセス可能

curl http://192.168.1.100:8080

(※ クラウドプロバイダーがロードバランサーを自動作成する)

4. HTTP vs 非HTTPの外部公開方法の比較

公開方法 用途 適用サービスタイプ アクセスURLの例
Route HTTP/HTTPSの外部公開 Route http://my-app.example.com
NodePort ローカル環境でのTCP/UDP公開 NodePort http://<NodeIP>:30080
LoadBalancer クラウド環境でのTCP/UDP公開 LoadBalancer http://192.168.1.100:8080

一般的な選択

  • HTTPアプリケーションRoute
  • 非HTTPアプリケーション(ローカル開発環境)NodePort
  • 非HTTPアプリケーション(クラウド環境)LoadBalancer

5. おわりに

今回はOpenShiftでHTTPアプリを公開する方法について理解を深めるために、以下を学びました。

  • RouteHTTP/HTTPSアプリケーションを公開するための最適な方法。
  • NodePortローカル開発や簡易的な外部アクセス向け
  • LoadBalancerクラウド環境で外部からのアクセスを最適化

OpenShiftのアプリケーション公開方法を理解し、適切な手法を選択しましょう!

1回で覚えるのは難しいと思うので、何度かトライして覚えるで全然大丈夫です。

今後もOpenShiftについて解説していきます。

おわりっ!

参考サイト

Discussion