【参考】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を設定します。

 

  1. Nginx Ingress Controllerを導入するプロジェクトに移動します。

    Red Hat OpenShift CLIで、Nginx Ingress Controllerを導入するプロジェクトに移動するには以下のコマンドを実行します。

    oc project <Nginx Ingress Controllerを導入するプロジェクト名>

    設定例

    oc project nginx-ingress

  2. ローカルに以下の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
    

  3. NginxIngressリソースを作成するには、以下のコマンドを実行します。

    oc apply -f nginx-ingress-controller.yaml

  4. 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
    

  5. 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を作成します。

  1. HULFT10 for Container Platformを導入したプロジェクトに移動します。

    Red Hat OpenShift CLIで、HULFT10 for Container Platformを導入したプロジェクトに移動するには以下のコマンドを実行します。

    oc project <HULFTを導入するプロジェクトの名前>

    設定例

    oc project hulft-project

  2. ローカルに以下のポートを設定する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
    

  3. 各リソースを作成するには、以下のコマンドを実行します。

    集信ポートを設定するTransportServerのリソースを作成

    oc apply -f hulft-receive-transport-server.yaml

    要求受付ポートを設定するTransportserverのリソースを作成

    oc apply -f hulft-observe-transport-server.yaml

  4. 各リソースで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日現在)

  1. Red Hat OpenShiftを開きます。

  2. Red Hat OpenShiftの表示を開発者に切り替えます。

  3. プロジェクトをクリックし、Nginx Ingress Controllerを作成したプロジェクト名をクリックします。

    プロジェクト名は、「Nginx Ingress Controllerの作成」の手順1.で指定した値を含む<Nginx Ingress Controllerを導入するプロジェクト名>-nginx-ingress-controllerが該当します。

    Nginx Ingress Controllerを作成したプロジェクトの画面が表示されます。

  4. 画面の左側にあるメニューのトポロジーをクリックします。

    作成したNginx Ingress Controllerのアイコンをクリックします。

    アイコンは、「Nginx Ingress Controllerの作成」の手順2.で指定した<Nginx Ingress Controllerの任意の名前>が該当します。

    Nginx Ingress Controllerの詳細内容(Deployment画面)が表示されます。

  5. 詳細内容(Deployment画面)のリソースタブをクリックします。

  6. リソースタブ内のService内のNginx Ingress Controllerの名称をクリックします。

    Nginx Ingress Controllerの名称は、「Nginx Ingress Controllerの作成」の手順2.で指定した値を含む<Nginx Ingress Controllerの任意の名前>-nginx-ingress-controllerが該当します。

    Serviceの詳細内容が表示されます。

  7. Detailsタブ内のService routing>Service address>Locationに表示されている名称が、Nginx Ingress Controllerの名称です。

 

確認したロードバランサ―の名称(Nginx Ingress Controllerの名称)をHULFTではホスト名として使用します。

68バイトを超える場合、68バイト以内に名前解決済みのロードバランサーの名称を使用してください。