【参考】Nginx Ingress Controllerの導入
外部のHULFTから、HULFTの独自プロトコルでTCP通信ができるようにするには、通信ポートを変換するロードバランサーが必要です。
ここでは、導入するロードバランサーとして、Nginx Ingress Controllerを導入する手順を説明します。
本手順は導入例です。
導入するロードバランサーは、お客様の運用に合わせて選択してください。
-
ロードバランサーは、HULFT10 for Container Platformの1環境ごとに1台必要です。
-
Nginx Ingress Controllerの場合は、1つのプロジェクトに1台のみ導入できます。(2025年2月15日現在)
本手順は、Nginx Ingress Controllerを、HULFT10 for Container Platformとは別のプロジェクトに導入する例です。
Nginx Ingress Controllerを導入する場合の詳細な手順については、Nginxのヘルプを参照してください。
HULFT10 for Container PlatformおよびHULFT10 for Container Services以外の、OS上で動作するHULFTには、以下の制限があります。
-
詳細ホスト情報の「ホスト名」に設定できる文字列の長さは、68バイト以内
このため、Nginx Ingress Controllerに紐づくロードバランサーで、「ホスト名」を68バイト以内に名前解決するように設定が必要です。
Nginx Ingress Operatorのインストール
Nginx Ingress Controllerを使用するためには、Nginx Ingress Operatorのインストールが必要です。
Nginx Ingress Operatorのインストール手順については、以下のNginx公式ドキュメントを参照してください。
「OLM を使用した OpenShift クラスターへのインストール」(2025年3月1日現在)
Nginx Ingress Operatorをインストールしたら、Nginx Ingress Operatorを起動するために必要なSecurityContextConstraintsリソースを作成する必要があります。
以下のコマンドを実行すると、クラスター上にSecurityContextConstraintsリソースが作成されます。
oc apply -f https://raw.githubusercontent.com/nginxinc/nginx-ingress-helm-operator/main/resources/scc.yaml
このコマンドでは、以下のNginx公式ドキュメントにあるscc.yamlを使用しています。
「nginx-ingress-helm-operator 」(2025年3月1日現在)
Nginx Ingress Controllerの作成
Nginx Ingress Controllerを設定するためのyamlファイルにGlobalConfigurationの設定値があります。
このGlobalConfigurationを設定することによって、外部からの通信を受け付けることができるようになります。
以下の手順でGlobalConfigurationを設定します。
-
Nginx Ingress Controllerを導入するプロジェクトに移動します。
Red Hat OpenShift CLIで、Nginx Ingress Controllerを導入するプロジェクトに移動するには以下のコマンドを実行します。
oc project <Nginx Ingress Controllerを導入するプロジェクト名>
設定例
oc project nginx-ingress
-
ローカルに以下のNginx Ingress Controllerのマニフェストファイルを作成します。
nginx-ingress-controller.yaml
apiVersion: charts.nginx.org/v1alpha1 kind: NginxIngress metadata: name: <Nginx Ingress Controllerの任意の名前> namespace: <Nginx Ingress Controllerを導入するプロジェクト> spec: controller: globalConfiguration: create: true spec: listeners: - name: <集信ポート用のlistenerの任意の名前> port: 30000 protocol: TCP - name: <要求受付ポート用のlistenerの任意の名前> port: 31000 protocol: TCP service: customPorts: - name: <集信ポート用のserviceの任意の名前> port: 30000 protocol: TCP - name: <要求受付ポート用のserviceの任意の名前> port: 31000 protocol: TCP ingressClass: create: true name: <IngressClassの任意の名前> setAsDefaultIngress: false
設定例
apiVersion: charts.nginx.org/v1alpha1 kind: NginxIngress metadata: name: nginxingress-sample namespace: nginx-ingress spec: controller: globalConfiguration: create: true spec: listeners: - name: hulft-receive-listener-port port: 30000 protocol: TCP - name: hulft-observe-listener-port port: 31000 protocol: TCP service: customPorts: - name: hulft-receive-service port: 30000 protocol: TCP - name: hulft-observe-service port: 31000 protocol: TCP ingressClass: create: true name: ingressclass-sample setAsDefaultIngress: false
-
NginxIngressリソースを作成するには、以下のコマンドを実行します。
oc apply -f nginx-ingress-controller.yaml
-
NginxIngressリソースでGlobalConfigurationが作成されたことを確認するには、以下のコマンドを実行します。
oc get GlobalConfiguration <作成したNginx Ingress Controllerの名前>-nginx-ingress-controller
設定例
oc get GlobalConfiguration nginxingress-sample-nginx-ingress-controller
NginxIngressリソースが作成されていると、以下が表示されます。
NAME AGE nginxingress-sample-nginx-ingress-controller 32s
-
Nginx Ingress Controllerが作成されたことを確認するには、以下のコマンドを実行します。
oc get NginxIngress <作成したNginx Ingress Controllerの名前>
設定例
oc get NginxIngress nginxingress-sample
Nginx Ingress Controllerが作成されていると、以下が表示されます。
NAME AGE nginxingress-sample 79s
TransportServerの作成
以下の手順で、TCP接続された場合の振り分け方法を設定するTransportServerを作成します。
-
HULFT10 for Container Platformを導入したプロジェクトに移動します。
Red Hat OpenShift CLIで、HULFT10 for Container Platformを導入したプロジェクトに移動するには以下のコマンドを実行します。
oc project <HULFTを導入するプロジェクトの名前>
設定例
oc project hulft-project
-
ローカルに以下のポートを設定するTransportServerのマニフェストファイルを作成します。
集信ポートを設定するTransportServerのマニフェストファイル
hulft-receive-transport-server.yaml
apiVersion: k8s.nginx.org/v1 kind: TransportServer metadata: name: <集信ポートを設定するTransportServerの任意の名前> namespace: <HULFTを導入するプロジェクト> spec: action: pass: <集信ポート用のupstreamの任意の名前> listener: name: <globalConfigurationに設定した集信ポート用のlistenerの名前> protocol: TCP upstreams: - name: <集信ポート用のupstreamの任意の名前> port: 30000 service: hulft-<Hulftリソースに指定したspec.resourceIdentifier>-transfer
設定例
apiVersion: k8s.nginx.org/v1 kind: TransportServer metadata: name: hulft-receive-transport-server-sample namespace: hulft-project spec: action: pass: hulft-receive-upstream listener: name: hulft-receive-listener-port protocol: TCP upstreams: - name: hulft-receive-upstream port: 30000 service: hulft-abc-transfer
要求受付ポートを設定するTransportserverのマニフェストファイル
hulft-observe-transport-server.yaml
apiVersion: k8s.nginx.org/v1 kind: TransportServer metadata: name: <要求受付ポートを設定するTransportserverの任意の名前> namespace: <HULFTを導入するプロジェクト> spec: action: pass: <要求受付ポート用のupstreamの任意の名前> listener: name: <globalConfigurationに設定した要求受付ポート用のlistenerの名前> protocol: TCP upstreams: - name: <要求受付ポート用のupstreamの任意の名前> port: 31000 service: hulft-<Hulftリソースに指定したspec.resourceIdentifier>-transfer
設定例
apiVersion: k8s.nginx.org/v1 kind: TransportServer metadata: name: hulft-observe-transport-server-sample namespace: hulft-project spec: action: pass: hulft-observe-upstream listener: name: hulft-observe-listener-port protocol: TCP upstreams: - name: hulft-observe-upstream port: 31000 service: hulft-abc-transfer
-
各リソースを作成するには、以下のコマンドを実行します。
集信ポートを設定するTransportServerのリソースを作成
oc apply -f hulft-receive-transport-server.yaml
要求受付ポートを設定するTransportserverのリソースを作成
oc apply -f hulft-observe-transport-server.yaml
-
各リソースでTransportServerが作成されたことを確認するには、以下のコマンドを実行します。
集信ポートを設定するTransportServerの確認
oc get TransportServer <集信ポートを設定するTransportserverの名前>
設定例
oc get TransportServer hulft-receive-transport-server-sample
TransportServerが作成されていると、以下が表示されます。
NAME STATE REASON AGE hulft-receive-transport-server-sample Valid AddedOrUpdated 24h
要求受付ポートを設定するTransportServerの確認
oc get TransportServer <要求受付ポートを設定するTransportserverの名前>
設定例
oc get TransportServer hulft-observe-transport-server-sample
TransportServerが作成されていると、以下が表示されます。
NAME STATE REASON AGE hulft-observe-transport-server-sample Valid AddedOrUpdated 24h
以上で、Nginx Ingress Controllerを導入できました。
ロードバランサ―の名称(Nginx Ingress Controllerの名称)の確認
HULFTの独自プロトコルでTCP通信をする場合、相手側HULFTの詳細ホスト情報に、ロードバランサーの名称(Nginx Ingress Controllerの名称)を登録する必要があります。
ロードバランサ―の名称(Nginx Ingress Controllerの名称)は、OpenShiftコンソール画面にて以下の手順で確認ができます。(2025年2月15日現在)
-
Red Hat OpenShiftを開きます。
-
Red Hat OpenShiftの表示を開発者に切り替えます。
-
プロジェクトをクリックし、Nginx Ingress Controllerを作成したプロジェクト名をクリックします。
プロジェクト名は、「Nginx Ingress Controllerの作成」の手順1.で指定した値を含む<Nginx Ingress Controllerを導入するプロジェクト名>-nginx-ingress-controllerが該当します。
Nginx Ingress Controllerを作成したプロジェクトの画面が表示されます。
-
画面の左側にあるメニューのトポロジーをクリックします。
作成したNginx Ingress Controllerのアイコンをクリックします。
アイコンは、「Nginx Ingress Controllerの作成」の手順2.で指定した<Nginx Ingress Controllerの任意の名前>が該当します。
Nginx Ingress Controllerの詳細内容(Deployment画面)が表示されます。
-
詳細内容(Deployment画面)のリソースタブをクリックします。
-
リソースタブ内のService内のNginx Ingress Controllerの名称をクリックします。
Nginx Ingress Controllerの名称は、「Nginx Ingress Controllerの作成」の手順2.で指定した値を含む<Nginx Ingress Controllerの任意の名前>-nginx-ingress-controllerが該当します。
Serviceの詳細内容が表示されます。
-
Detailsタブ内のService routing>Service address>Locationに表示されている名称が、Nginx Ingress Controllerの名称です。
確認したロードバランサ―の名称(Nginx Ingress Controllerの名称)をHULFTではホスト名として使用します。
68バイトを超える場合、68バイト以内に名前解決済みのロードバランサーの名称を使用してください。