#この記事で伝えたいこと
・作業手順はレシピとして公開されていますが、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 |
#作業の流れ
- Storage Classを含むICPを導入し、kubectl、bx、bx pr、dockerなどの各種コマンドが正常動作することを確認する。
- 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というファイル名に設定しました)。
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が読み込まれていることがわかります。
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を作成します。