0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Unified Console を導入してみた

Last updated at Posted at 2020-10-19

別記事で導入したDb2 Warehouse 11.5.4 on OpenShift(以下Db2WH)をWebブラウザのGUIから利用するためのツールである Unified Consoleを同検証環境に導入しました。導入はKnowledge CenterGitHubの記載に基づいて実施しています。

目次

前提要件

コンポーネントの要件

  • 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を導入しています。
構成図5.png
サーバー・リソース
検証環境の各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のみのダウンロードができません。)
helm1.png
ダウンロードしたzipの中身の構造は以下の様になっており、この中からibm-unified-consoleディレクトリを取り出して使用します。

charts-master.zip(92.5MB)の構造
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 ファイルです。

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
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
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に接続するために使用するポート番号です。

  1. oc get servicesを実行する
  2. Pod名が {Unified Console のRelease name}-ibm-unified-console-uiのPodを探す
  3. 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
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を使用します。

WebブラウザにURLを入力して接続します。
UC1.png

接続するとログイン画面が表示されるので、Db2WH導入時に設定したbluadminのパスワードを使用してログインします。
UC2.png

ログインすると以下の様にDb2WHの各種モニタリングやスキーマ・表の確認ができます。
【メニュー】
スクリーンショット 2020-10-19 12.13.59.png

【Db2WHの各種モニタリング】
UC3.png
【スキーマ・表定義の確認】
UC4.png
【表のデータの確認】
UC5.png

以上でUnified Consoleの導入および動作確認は終了です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?