別記事で導入したDb2 Warehouse 11.5.4 on OpenShift(以下Db2WH)をWebブラウザのGUIから利用するためのツールである Unified Consoleを同検証環境に導入しました。導入はKnowledge CenterやGitHubの記載に基づいて実施しています。
目次
前提要件
コンポーネントの要件
- Kubernetesのバージョン:1.11.3以上
- Helmのバージョン Level:X86: ">=2.14 and < 3.0"
- OpenShiftのバージョン:3.11, 4.x
(GitHubには4.3までの記載しかないが、Knowledge Center(Db2WH)では4.xとなっている) - Db2 Warehouse もしくは AESE(Advanced Enterprise Server Edition)が同じクラスターにインストールされており、LDAPサービスが有効化されていること
リソース要件
- CPU:2.3コア(2コアがConsole APIで使用され、残り0.3コアはConsole UIで使用される)
- メモリ:4.5GiB(4GiBがConsole APIで使用され、残り0.5GiBはConsole UIで使用される)
導入環境
各コンポーネントのバージョン
項目 | バージョン |
---|---|
OS(bastion) | RHEL 7.7 |
OS(master/worker) | RHEL 7.7 |
OCP(Client) | 4.5.0-202007240519.p0-b66f2d3 |
OCP(Server) | 4.5.7 |
Kubernetes | v1.17.1+912792b |
Helm | 2.16.9 |
NFS | 4.2 |
Db2 Warehouse | 11.5.4.0 |
論理構成
Db2WHが導入されているプロジェクトにUnified Consoleを導入しています。
サーバー・リソース
検証環境の各Nodeサーバーのスペックです。
項目 | vCPU | メモリ |
---|---|---|
Master node | 4 core | 16GB |
Worker node | 16 core | 64GB |
Bastion | 4 core | 8GB |
Helmチャートの準備
Helmチャートのダウンロード
IBMが提供する各製品のHelm chart一式をダウンロードし、その中からUnified Consoleのchartを取り出して利用します。次のURLからチャートをダウンロードします。
https://github.com/IBM/charts/tree/master/
(GitHubの仕様上プロジェクト単位でしかダウンロードができないため、個別のchartのみのダウンロードができません。)
ダウンロードしたzipの中身の構造は以下の様になっており、この中からibm-unified-console
ディレクトリを取り出して使用します。
charts-master
├── LICENSE
├── ORIGIN
├── README.md
├── #途中省略
└── stable
├── #途中省略
├── ibm-transadv-rhel-dev
├── ibm-unified-console '←今回使用するchartはこれ'
├── ibm-voice-gateway-dev
└── #以下省略
Helmチャートの配置
次にibm-unified-console
ディレクトリをOCP環境(Bastionサーバー)に転送・配置します。
-- 今回は/work/media/ibm_unified_console/に配置した
[root@k3bastion]# tree -L 1 /work/media/ibm_unified_console
/work/media/ibm_unified_console
└── ibm-unified-console
Db2WHの導入に倣ってHelmチャートを配置するディレクトリには他のものは置いていませんが、追加検証したところ他のディレクトリが配置されていても問題は無さそうです。
インストール準備
プロジェクトへの移動
Db2WHを導入しているプロジェクトにカレント・プロジェクトを変更し、Db2WHと同じプロジェクトにUnified Consoleを導入します。
-- カレント・プロジェクトを変更する(今回はdb2-warehouse1に変更)
[root@k3bastion]# oc project db2-warehouse1
設定ファイルの編集
OpenShiftクラスターの外部からUnified Consoleに接続するために、Unified ConsoleのサービスをNodePortにする必要があります。デフォルト状態ではClusterIP(OpenShiftクラスター内部でのみ通信が可能)になっているため、設定ファイルを編集してNodePortにする必要があります。
編集をするのはibm-unified-console/ibm_cloud_pak/pak_extensions
配下のvalues-standalone-console.yaml
ファイルです。
ibm-unified-console
├── #途中省略
├── ibm_cloud_pak
│ ├── manifest.yaml
│ ├── pak_extensions
│ │ ├── common
│ │ ├── deploy_console.sh
│ │ ├── pre-install
│ │ └── values-standalone-console.yaml '←このファイルを編集する'
│ └── #以下省略
└── #以下省略
values-standalone-console.yaml
の編集をします。
[root@k3bastion]# vi values-standalone-console.yaml
# ucui:service:type:ClusterIPをNodePortに変更する
ucui:
#途中省略
service:
httpsPort: 8443
httpsPort2: 443
type: NodePort #←ここがClusterIPになっているためNodePortに変更する
name: ""
# 以下省略
インストール・シェルの修正
2020/10/09
時点、今回使用している検証環境ではGitHubからダウンロードしたインストール・シェルを実行するとエラーが発生してしまい、以下の様に修正して使用する必要があります。
ibm-unified-console
├── #途中省略
├── ibm_cloud_pak
│ ├── manifest.yaml
│ ├── pak_extensions
│ │ ├── common
│ │ ├── deploy_console.sh '←このファイルがインストール・シェル'
│ │ ├── pre-install
│ │ └── values-standalone-console.yaml
│ └── #以下省略
└── #以下省略
deploy_console.sh
を編集します。
[root@k3bastion]# vi deploy_console.sh
# 105行目のif文が原因でエラーとなっているため修正する
### 【修正前】print $7辺りからうまく処理ができていない
105 if [[ "$(helm ls $TLS_OPTION|grep NAMESPACE |awk -F "[\t]" '{print $7}')"X == "NAMESPACEX" ]];then
### 【修正後】以下の様に書き換える
105 if [[ "$(helm ls $TLS_OPTION|grep NAMESPACE |awk -F "[\t]" 'gsub(" ","")'|awk -F "[\t]" '{print $7}')"X == "NAMESPACEX" ]];then
インストールの実行
インストール・シェルの実行
# インストール・シェルの構文
./deploy-console.sh --console-release-name STRING --db-release-name STRING [OTHER ARGUMENTS...]
必須オプション | 説明 |
---|---|
--console-release-name STRING | Helmのリリース名を指定する |
--db-release-name STRING | 既存Db2のHlemのリリース名 |
※上記以外のオプションはGitHubを参照してください。
インストール・シェル実行例
[root@k3bastion]# ./deploy_console.sh --console-release-name db2whuc --db-release-name db2-warehouse1
==> Getting the helm Server version
<== helm Server version is obtained
==> Getting the helm Client version
<== helm Client version is obtained
v2.16.9
v2.16.9
==> Comparing the Server and Client version
<== Versions match
==> Checking the Server and Client version
NAME: db2whuc
LAST DEPLOYED: Thu Oct 8 21:28:35 2020
NAMESPACE: db2-warehosue1
STATUS: DEPLOYED
RESOURCES:
==> v1/Deployment
NAME READY UP-TO-DATE AVAILABLE AGE
db2whuc-ibm-unified-console-api 0/1 1 0 1s
db2whuc-ibm-unified-console-ui 0/1 1 0 1s
==> v1/Pod(related)
NAME READY STATUS RESTARTS AGE
db2whuc-ibm-unified-console-api-66c466676b-s49l4 0/1 ContainerCreating 0 1s
db2whuc-ibm-unified-console-ui-775484687b-r2lgr 0/1 ContainerCreating 0 1s
==> v1/Service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
db2whuc-ibm-unified-console-api ClusterIP 172.30.254.49 <none> 11081/TCP 1s
db2whuc-ibm-unified-console-ui NodePort 172.30.229.29 <none> 8443:30644/TCP,443:30867/TCP 1s
NOTES:
1. Get the application URL by running these commands:
export POD_NAME=$(kubectl get pods --namespace db2-warehosue1 -l "app=db2whuc-ibm-unified-console" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl port-forward $POD_NAME 8080:8443
route.route.openshift.io/db2whuc created
Console url is: https://db2whuc-db2-warehosue1.apps.isvsol.jp-ise.com
上の様な出力が出たらインストールコマンドは正常終了していますが、全てのPod(2つ)が正常に起動するのに少し時間がかかります。(検証環境では10分程度)
Unified Consoleは2つのPod(apiとui)から構成されています。以下の様に両方のPodが正常に起動すると、Unified Consoleが使える状態になります。(まれにPodのSTATUS が Error、Evicted、Init:Error等になっている場合がありますが、同じ役割の別Podが正常に起動していれば問題ありません。)
[root@k3bastion]# oc get pod
NAME READY STATUS RESTARTS AGE
# 途中省略
db2whuc-ibm-unified-console-api-66c466676b-s49l4 1/1 Running 0 28m
db2whuc-ibm-unified-console-ui-775484687b-r2lgr 1/1 Running 0 28m
haproxyの設定
今回の検証環境ではOpenShiftクラスター外部からクラスター内のPodに接続をする際にhaproxyの設定をする必要があります。以下では設定に必要なポート番号の取得と、設定を行います。
※以下の手順はDb2WHのKnowledge Centerの記述を参考にしています。
ポート番号の確認
Unified Consoleサービスが使用しているポート番号を確認します。
以下の手順で確認するYYYYY
がUnified Consoleに接続するために使用するポート番号です。
-
oc get services
を実行する - Pod名が
{Unified Console のRelease name}-ibm-unified-console-ui
のPodを探す -
PORT(S)
部分の、8443:YYYYY/TCP,...
となっているYYYYY
を確認する。(出力サンプルでは30644番)
-- 今回は30644がYYYYYに相当している
[root@k3bastion]# oc get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
# 途中省略
db2whuc-ibm-unified-console-api ClusterIP 172.30.254.49 <none> 11081/TCP 28m
db2whuc-ibm-unified-console-ui NodePort 172.30.229.29 <none> 8443:30644/TCP,443:30867/TCP 28m
haproxy.cfgの編集
Unified Consoleのサービスに紐付くポートによるOpenShiftクラスター外部との通信ができるように、/etc/haproxy/haproxy.cfg
に設定を追加する。
[root@k3bastion]# vi /etc/haproxy/haproxy.cfg
frontend unified-console
bind *:30644
default_backend unified-console-ui
mode tcp
option tcplog
backend unified-console-ui
balance source
mode tcp
server worker1 worker1-PrivateIP:30644 check
server worker2 worker2-PrivateIP:30644 check
server worker3 worker3-PrivateIP:30644 check
#worker1(2,3)-PrivateIPは各ワーカーノードのプライベートIPアドレス
/etc/haproxy/haproxy.cfg
の設定を反映する。
[root@k3bastion]# systemctl reload haproxy
動作確認
Unified Consoleへの接続
IPアドレス(XXX.XXX.XXX.XXX)とポート番号(YYYYY)をWebブラウザのURL欄に入力(https://XXX.XXX.XXX.XXX:YYYYY/
)して、Local PCからUnified Consoleに接続します。
IPアドレスはクラスターに接続可能なサーバーのIPアドレスを使用する必要があり、今回の検証環境ではBastionサーバー(参照:論理構成)のPublic IPアドレスを使用します。
ポート番号は前手順で確認したYYYYYを使用します。
接続するとログイン画面が表示されるので、Db2WH導入時に設定したbluadminのパスワードを使用してログインします。
ログインすると以下の様にDb2WHの各種モニタリングやスキーマ・表の確認ができます。
【メニュー】
【Db2WHの各種モニタリング】
【スキーマ・表定義の確認】
【表のデータの確認】
以上でUnified Consoleの導入および動作確認は終了です。