DataPower V10 の WebGUI を設定する - OpenShift 編


はじめに

IBM DataPower Gateway V10 には以下のエディションが用意されています。

エディション 提供形態
DataPower Gateway ハードウェア・アプライアンス
DataPower Gateway for Docker Docker イメージ
DataPower Gateway for Linux RPM パッケージ
DataPower Gateway for VMware OVA / OVF ファイル

Docker イメージを除いた提供形態では、IBM Docs に記載の手順 に従うだけで製品機能による設定のみで簡単に WebGUI のユーザー・インターフェースにアクセスすることができました。

しかし、Docker 版に関してはコンテナー製品の特徴としてコンテナーにアクセスするためのエンドポイントを外部公開する設定が追加で必要になります。

DataPower Gateway for Docker は、コンテナー・オーケストレーションのランタイムでは Kubernetes または OpenShift Container Platform (OCP) 上で稼働することができます。

本記事では、OCP 版の WebGUI へのアクセス設定方法について記載します。

Kubernetes 版の設定方法については、こちらの記事が参考になります。

確認環境

以下の IBM DataPower Gateway V10 for Docker OCP 版で動作確認をしています。

コンポーネント バージョン
OpenShift Container Platform 4.6.16
IBM DataPower Gateway 10.0.1.2-ifix2-100-eus

また、Gateway は 3 Pod によるクラスター構成としています。

OCP 版 WebGUI 設定方法

前提

  • OCP Route によるアクセスが可能になっていること (DNS や LB が設定済みでコンテナー・プラットフォームとしての準備ができていること)
  • DataPower Gateway のインストールが完了していること

設定のながれ

  1. DataPower の ConfigMap で Web 管理コンソールを有効化する
  2. OCP の Service オブジェクトを作成する
  3. OCP の Route オブジェクトを作成する
  4. WebGUI への接続確認をおこなう

設定手順

1. DataPower の ConfigMap で Web 管理コンソールを有効化する

1.1. 以下の oc コマンドを実行し、DataPower の ConfigMap の存在確認をします。

oc get cm gateway-default-domain-config
NAME                            DATA   AGE
gateway-default-domain-config   2      205d

1.2. 以下の oc コマンドを実行し、ConfigMap を編集します。ミスした際にリカバリーできるように、oc get cm gateway-default-domain-config -o yaml > gateway-default-domain-config_20210830.yaml などのコマンドで ConfigMap のバックアップを取得しておくことをおすすめします。

oc edit cm gateway-default-domain-config
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
data:
  auto-startup.cfg: |
    top; configure terminal;
    %if% available "include-config"

    include-config "auto-user-cfg"
      config-url "config:///auto-user.cfg"
      auto-execute
      no interface-detection
    exit

    exec "config:///auto-user.cfg"

    %endif%
..

data.auto-startup.cfg のセクションに、以下の定義を追加して ConfigMap を保存します。
port 番号は任意の値を設定できます。明示的に記載しない場合は、デフォルトの 9090 ポートがアクティブになります。

web-mgmt
  admin-state enabled
  port 9090
exit

設定例

# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
data:
  auto-startup.cfg: |
    top; configure terminal;
    %if% available "include-config"

    include-config "auto-user-cfg"
      config-url "config:///auto-user.cfg"
      auto-execute
      no interface-detection
    exit

    exec "config:///auto-user.cfg"

    %endif%

    # Web Management enabled
    web-mgmt
      admin-state enabled
      port 9090
    exit
..

1.3. DataPower の pod を再起動し、ConfigMap の設定を適用します。

oc delete pod gateway-0 gateway-1 gateway-2
# oc get pod -l app.kubernetes.io/instance=apic-gateway
NAME        READY   STATUS    RESTARTS   AGE
gateway-0   1/1     Running   0          12s
gateway-1   1/1     Running   0          5m24s
gateway-2   1/1     Running   0          7m59s

2. OCP の Service オブジェクトを作成する

以下のような Service オブジェクトの yaml を作成し、gateway pod と同じネームスペース上にリソースを適用します。

apiVersion: v1
kind: Service
metadata:
  labels:
    app: gateway-svc-web-mgmt
  name: gateway-0-svc-web-mgmt
  namespace: apic
spec:
  selector:
    statefulset.kubernetes.io/pod-name: gateway-0
  ports:
  - port: 9090
    protocol: TCP
    targetPort: 9090
  type: ClusterIP
oc create -f gateway-0-svc-web-mgmt.yaml

以上のステップを、DataPower pod 3 台分繰り返し作成、適用します。

  • metadata.name は、Service オブジェクトの一意の名前を付けます。例えば、以下のようにします。

    • gateway-0 pod : gateway-0-svc-web-mgmt
    • gateway-1 pod : gateway-1-svc-web-mgmt
    • gateway-2 pod : gateway-2-svc-web-mgmt
  • metadata.namespace は、DataPower pod が稼働しているネームスペースを設定します。

  • spec.selector は、作成した Service オブジェクトに紐付く DataPower Pod 名を設定します。

  • spec.ports.port は、OCP クラスター外部に公開するポートを指定します。

  • spec.ports.targetPort は、手順1. で設定した DataPower pod がリッスンしているポートを指定します。

以下のようなコマンドを実行し、作成した Service オブジェクトの確認をします。
-l は、Service オブジェクト作成時にラベリングした名前を指定して検索範囲を絞っています。

oc get svc -l app=gateway-svc-web-mgmt
NAME                     TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
gateway-0-svc-web-mgmt   ClusterIP   172.30.94.29   <none>        9090/TCP   16m
gateway-1-svc-web-mgmt   ClusterIP   172.30.49.164   <none>        9090/TCP   16m
gateway-2-svc-web-mgmt   ClusterIP   172.30.233.209   <none>        9090/TCP   16m

3. OCP の Route オブジェクトを作成する

以下のような Route オブジェクトの yaml を作成し、gateway pod と同じネームスペース上にリソースを適用します。

apiVersion: route.openshift.io/v1
kind: Route
metadata:
  labels:
    app: gateway-route-web-mgmt
  name: gateway-0-web-mgmt
  namespace: apic
spec:
  host: gateway-0.apps.example.com
  port:
    targetPort: 9090
  tls:
    insecureEdgeTerminationPolicy: None
    termination: passthrough
  to:
    kind: Service
    name: gateway-0-svc-web-mgmt
oc create -f gateway-0-web-mgmt.yaml

以上のステップを、DataPower pod 3 台分繰り返し作成、適用します。

  • metadata.name は、Route オブジェクトの一意の名前を付けます。例えば、以下のようにします。

    • gateway-0 pod : gateway-0-web-mgmt
    • gateway-1 pod : gateway-1-web-mgmt
    • gateway-2 pod : gateway-2-web-mgmt
  • metadata.namespace は、DataPower pod が稼働しているネームスペースを設定します。

  • spec.host は、OCP Route で名前解決可能な (本記事では *.apps.example.com のワイルドカードドメインを使用) 一意のホスト FQDN を設定します。

  • spec.port.targetPort は、手順1. で設定した DataPower pod がリッスンしているポートを指定します。

  • spec.tls は、ここでは例のとおり指定しています。より詳しくは OCP の Secured Routes を参照ください。

  • spec.to は、kind: Service , name: 手順2.で作成した Service オブジェクト名 を指定します。

以下のようなコマンドを実行し、作成した Route オブジェクトの確認をします。
-l は、Route オブジェクト作成時にラベリングした名前を指定して検索範囲を絞っています。

oc get svc -l app=gateway-route-web-mgmt
NAME                      HOST/PORT                    PATH   SERVICES                 PORT   TERMINATION          WILDCARD
gateway-0-web-mgmt        gateway-0.apps.example.com          gateway-0-svc-web-mgmt   9090   passthrough/None     None
gateway-1-web-mgmt        gateway-1.apps.example.com          gateway-1-svc-web-mgmt   9090   passthrough/None     None
gateway-2-web-mgmt        gateway-2.apps.example.com          gateway-2-svc-web-mgmt   9090   passthrough/None     None

4. WebGUI への接続確認をおこなう

Web ブラウザを開き、アドレスバーに https://ホストFQDN:targetPort/login.xml を入力します。

https://gateway-0.example.com:9090/login.xml

WebGUI にアクセスができるようになりました。

おわりに

DataPower コンテナーの OCP 版における、WebGUI のアクセス設定手順について記載しました。
ハードウェア・アプライアンス版や VMware 版とは違い、コンテナー・プラットフォームは複数リソースの設定や作成が必要なことがわかりました。

参照

DataPower Gateways - Deliverables
DataPower Gateways - Accessing the GUI
Enabling the WebUI in DataPower in Kubernetes for APIConnect 2018
How to expose IBM DataPower Gateway Web interface in API Connect 2018 and v10?
Red Hat OpenShift - Secured Routes