ICPでIBM Db2 Developer-C Helm ChartのDb2を使ってみる その1


この記事で伝えたいこと

・作業手順はレシピとして公開されていますが、ICP 2.1.0.3での留意事項、作業前提の補足があったほうが良いだろうと思ったので、整理してみました。
・とりあえず、ICP上でPersistent Volumeの環境を作ってみようと考えている人向けです。

作業環境について

・Lenovo Thinkpad T430(SSD 256GB x 2, 16GB Mem, Core i7-3740QM) x 2台でWin10 64bit、VMWare WorkStation 14 pro. ubuntu 16.04 TLS
※i5-3320M(2コア)からi7-3740QM(4コア)に換装。90wのACアダプタが必要。
・インターネットにアクセスできるWifiルーターに有線接続(インターネットアクセスは必須ではありませんが、Helm Chartの取得、更新等々、様々な課題が発生します)
・IBM Cloud Private Enterprise Edition 2.1.0.3
・Boot/MasterとProxy、VAとWorkerをそれぞれのt430に設定
・下表は各VMへのリソース割り当ての例(IPアドレスは固定、ブリッジ接続)

ICP Node Core Mem HDD ホスト名 IPアドレス
Boot/Master 4個 11GB 160GB bootmaster1 192.168.11.130
Proxy 4個 4GB 160GB proxy1 192.168.11.131
VA 4個 9.2GB 160GB va1 192.168.11.132
Worker 4個 4.9GB 160GB worker1 192.168.11.133

作業の流れ

  1. Storage Classを含むICPを導入し、kubectl、bx、bx pr、dockerなどの各種コマンドが正常動作することを確認する。
  2. IBM Db2 Developer-C Helm ChartをつかってDb2のPodをデプロイする。オプションとしてWAS LibertyのPodをデプロイするさいのDockerFileとserver.xmlへの記述。

レシピの補足

・Db2のPodはPersistent Volumeが前提になっているようです。Helm chartのEnable persistence for this deploymentのtooltipで"a persistent volume is required."と明記されていますし、私の環境では、にチェックを入れないと正常にDb2のPodをdeployできませんでした。

・私の環境では、Storage Classを設定しないと、Db2のPodを正常にdeployできませんでした。なお、マニュアルによると、Storage ClassはICPのInstall時に作成可能となっています。

具体的な作業

1. ICPのInstallとStorage Classの作成
ICPのインストール手順に従ってICPをInstallし、各種コマンドを設定します。その際、Step 3、又はStep 4の作業中に、/opt/ibm-cp-app-mod-2.1.0.3/cluster/misc/storage_classに以下のファイルを作成します。とりあえず、ICP上でPVを含むPodを動かすことを目的にしていることと、ブロックストレージを利用できないHW構成なので、記述内容はKubernetesのマニュアルのLocalを、そのまま使用します。マニュアルによると、ファイル名に制限はありません(私の環境では、sc.yamlというファイル名に設定しました)。

sc.yaml
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

Storage Classの作成については、Step 5で生成されるinstallのlogから確認することで、sc.yamlが読み込まれていることがわかります。

install.log(抜粋)
TASK [storage : scan storage class yaml files] *********************************
changed: [localhost] => (item=/installer/cluster/misc/storage_class/sc.yaml)

TASK [storage : get storage class file facts] **********************************
ok: [localhost] => (item={'_ansible_parsed': True, 'stderr_lines': [], '_ansible_item_result': True, u'end': u'2018-07-13 10:27:55.484712', '_ansible_no_log': False, u'stdout': u'/installer/cluster/misc/storage_class/sc.yaml :0', u'cmd': u"echo /installer/cluster/misc/storage_class/sc.yaml :`grep 'kind:' /installer/cluster/misc/storage_class/sc.yaml | grep -v StorageClass | wc -l`", u'rc': 0, 'item': u'/installer/cluster/misc/storage_class/sc.yaml', u'delta': u'0:00:00.392345', u'stderr': u'', u'changed': True, u'invocation': {u'module_args': {u'creates': None, u'executable': None, u'_uses_shell': True, u'_raw_params': u"echo /installer/cluster/misc/storage_class/sc.yaml :`grep 'kind:' /installer/cluster/misc/storage_class/sc.yaml | grep -v StorageClass | wc -l`", u'removes': None, u'warn': True, u'chdir': None, u'stdin': None}}, 'stdout_lines': [u'/installer/cluster/misc/storage_class/sc.yaml :0'], u'start': u'2018-07-13 10:27:55.092367', '_ansible_ignore_errors': None, 'failed': False})

マニュアルのAccess your clusterの作業を完了させ、kubectl、bx、bx pr、dockerといった各種コマンドが正常動作することを確認します。ちなみに、導入環境が64bit linux環境の場合はcurl -k -O https://192.168.11.130:8443/api/cli/icp-linux-amd64で、必要なインストールイメージを入手可能です(FTPは不要です)。

次の記事では、ICPでIBM Db2 Developer-C Helm Chartを使ってDb2のPodを作成します。