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

#この記事で伝えたいこと
・作業手順は[レシピ](https://developer.ibm.com/recipes/tutorials/deploy-db2-into-ibm-cloud-private/)として公開されていますが、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を[導入](https://www.ibm.com/support/knowledgecenter/en/SSBS6K_2.1.0.3/installing/install_app_mod.html)し、kubectl、bx、bx pr、dockerなどの各種コマンドが正常動作することを確認する。
2. IBM Db2 Developer-C Helm ChartをつかってDb2のPodをデプロイする。オプションとしてWAS LibertyのPodをデプロイするさいのDockerFileとserver.xmlへの記述。

#[レシピ](https://developer.ibm.com/recipes/tutorials/db2-integration-into-ibm-cloud-private/)の補足
・Db2のPodはPersistent Volumeが前提になっているようです。Helm chartのEnable persistence for this deploymentのtooltipで"a persistent volume is required."と明記されていますし、私の環境では、にチェックを入れないと正常にDb2のPodをdeployできませんでした。
![PVReq.1.png](https://qiita-image-store.s3.amazonaws.com/0/104507/42efdd64-43aa-c257-3f68-7be6edd900bc.png)

・私の環境では、Storage Classを設定しないと、Db2のPodを正常にdeployできませんでした。なお、[マニュアル](https://www.ibm.com/support/knowledgecenter/SSBS6K_2.1.0.3/installing/storage_class_all.html)によると、Storage ClassはICPのInstall時に作成可能となっています。
![PVC.1.png](https://qiita-image-store.s3.amazonaws.com/0/104507/fc7d043c-f30d-aa84-bf10-3773c1f63074.png)

#具体的な作業
1.　ICPのInstallとStorage Classの作成
[ICPのインストール手順](https://www.ibm.com/support/knowledgecenter/SSBS6K_2.1.0.3/installing/install_app_mod.html)に従って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](https://kubernetes.io/docs/concepts/storage/storage-classes/#local)を、そのまま使用します。マニュアルによると、ファイル名に制限はありません(私の環境では、sc.yamlというファイル名に設定しました)。

```text: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が読み込まれていることがわかります。

```text: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は不要です)。

次の[記事](https://qiita.com/yoshiono/items/2de09a9ce3c9770c0c72)では、ICPでIBM Db2 Developer-C Helm Chartを使ってDb2のPodを作成します。