Db2 on CP4D 4.6.2 導入と構成 - 4.Db2サービス導入後の作業

## Db2 on Cloud Pak for Data 4.6.2 導入と構成
シリーズ"Db2 on CP4D 4.6.2 導入と構成"は　2023年02月の経験をベースに　次のようなCloud Pak for Data (以下CP4D)4.6.2環境へ　Db2を導入デプロイする手順をご紹介します。　
- Managed OpenShift cluster (ROKS) on IBM Cloud (VPC/"Gen2")
- OpenShift Container Platform (OCP) 4.10 , OpenShift Data Foundation (ODF) 4.10
- Cloud Pak for Data (CP4D) 4.6.2 

本シリーズの目次は[こちら](https://qiita.com/mi-shimo/items/be803376088b482e2954)です。
ここでは　Db2サービス導入後の作業としてライセンスの更新や妥当性検査ができるようにします。

## 4.Db2サービス導入後の作業
(オプション)[Db2ライセンスを更新しましょう。](https://qiita.com/mi-shimo/items/bdd0e4a9c9c260894fa1#%E6%89%8B%E9%A0%86---db2%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E3%82%92%E6%9B%B4%E6%96%B0%E3%81%97%E3%81%BE%E3%81%97%E3%82%87%E3%81%86)
(オプション)[Deploy中、CPU、メモリー、ノードなどのクラスター・リソースが妥当かどうか検査できるようにしましょう。](https://qiita.com/mi-shimo/items/bdd0e4a9c9c260894fa1#%E6%89%8B%E9%A0%86---deploy%E4%B8%ADcpu%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%BC%E3%83%8E%E3%83%BC%E3%83%89%E3%81%AA%E3%81%A9%E3%81%AE%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%8C%E5%A6%A5%E5%BD%93%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E6%A4%9C%E6%9F%BB%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%81%BE%E3%81%97%E3%82%87%E3%81%86)


### 手順 - Db2ライセンスを更新しましょう。
Db2サービス導入後はDb2 Community Edition ライセンスが登録されています。上位ライセンスに更新する手順をご紹介します。

作業は踏み台マシンでおこないます。
ここではライセンスキーファイル`db2adv_vpc.lic`を使用してAdvanced へ更新した手順をご紹介します。

(1) ライセンスを base64で暗号化します。
参考文書でのコマンドは次の通りです。
```
base64 license.lic > /tmp/encode.lic
license=$(cat /tmp/encode.lic)
```
オプションなしの`base64`では　私の環境では改行が含まれてしまい　この先の作業で失敗しました。
このため　次のように`--wrap=0`オプションをつけて実行しました。
```
base64 --wrap=0 db2adv_vpc.lic > /tmp/encode.lic 
license=$(cat /tmp/encode.lic )
echo $license
```
次が実行した結果です。
```
# base64 --wrap=0 db2adv_vpc.lic > /tmp/encode.lic 
# license=$(cat /tmp/encode.lic )
# echo $license
W0xpY2Vuc2VDZXJ0aWZpY2F0ZV0KQ2hlY2tTdW09NzYw(省略)
#
```

(2) (1)で作成した$licenseを使用して secretを生成するYAMLファイル作成します。
実行コマンド
```
secretKeyName=db2adv-vpc-lic    # 適宜名前を割り当て 後続でそれを使用する。
secretName=db2adv-vpc-lic       # 適宜名前を割り当て 後続でそれを使用する。

cat <<EOF > /tmp/db2_licence.yaml    #生成するYAMLファイル : /tmp/db2_licence.yaml
apiVersion: v1
data:
  ${secretKeyName}: ${license}
kind: Secret
metadata:
  name: ${secretName}
  namespace: ${PROJECT_CPD_INSTANCE}
type: Opaque
EOF
```

実行結果 次のような/tmp/db2_licence.yaml が生成されます。
```
# cat  /tmp/db2_licence.yaml
apiVersion: v1
data:
  db2adv-vpc-lic: W0xpY2Vuc2VDZXJ0aWZpY2F0ZV0KQ2hlY2tTdW09NzYw(省略)
kind: Secret
metadata:
  name: db2adv-vpc-lic
  namespace: zen
type: Opaque
#
```

(3) (2)で作成した YAML ファイルを適用して secretを生成します。
```
# oc apply -f /tmp/db2_licence.yaml
secret/db2adv-vpc-lic created
#
```
(4) Db2oltpservice のライセンスを (3)で作成したsecretでパッチします。
実行コマンド
```
licenseType=Advanced     # licenseType 適用するライセンス  : Advanced あるいは Standard.  ここでは Advancedを指定している。
oc patch Db2oltpservice db2oltp-cr --type merge -p "{\"spec\":{\"license\":{\"license\":\"$licenseType\",\"licenseValue\":{\"valueFrom\":{\"secretKeyRef\":{\"key\":\"$secretKeyName\",\"name\":\"$secretName\"}}}}}}"
```
実行結果 
```
# licenseType=Advanced
# oc patch Db2oltpservice db2oltp-cr --type merge -p "{\"spec\":{\"license\":{\"license\":\"$licenseType\",\"licenseValue\":{\"valueFrom\":{\"secretKeyRef\":{\"key\":\"$secretKeyName\",\"name\":\"$secretName\"}}}}}}"
db2oltpservice.databases.cpd.ibm.com/db2oltp-cr patched
#
```
(5) Db2 サービスが Completed になるのをまちましょう。
5分ぐらい待つと 実行結果が InProgeress から 次のようにCompleted に変わります。
```
# oc get Db2oltpService db2oltp-cr -o jsonpath='{.status.db2oltpStatus} {"\n"}'
Completed
#
```


### 手順 - Deploy中、CPU、メモリー、ノードなどのクラスター・リソースが妥当かどうか検査できるようにしましょう。
この後Cloud Pak for Data 上にDb2をdeployするとき、CPU、メモリー、ノードなどのクラスター・リソースが妥当かどうか検査できるようにしましょう。
この手順が未実施の場合、Db2サービスdeploy画面で次のメッセージが現れます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/30a809a2-a889-996c-80bc-e885cfb87ced.png)

作業は踏み台マシンでおこないます。
```
# oc adm policy add-cluster-role-to-user system:controller:persistent-volume-binder system:serviceaccount:${PROJECT_CPD_INSTANCE}:zen-databases-sa
clusterrole.rbac.authorization.k8s.io/system:controller:persistent-volume-binder added: "system:serviceaccount:zen:zen-databases-sa"
#
```


#### 参考文書
- [Upgrading the license before deploying Db2](https://www.ibm.com/docs/en/cloud-paks/cp-data/4.6.x?topic=setup-upgrading-license-before-deploying-db2)
- [Privileges for resolving available CPU and memory in the cluster](https://www.ibm.com/docs/en/cloud-paks/cp-data/4.6.x?topic=console-privileges-resolving-available-cpu-memory-in-cluster)
- [シリーズ"Db2 on CP4D 4.6.2 導入と構成"目次](https://qiita.com/mi-shimo/items/be803376088b482e2954)