とりあえず入れてみたけれどやっぱり違う名前で入れなおしたい、ストレージオプションを間違えていてPodが起動しない、などなど、一度導入したミドルウェアをアンインストールしたくなる事だってたまにはあります。
そんな時のための備忘録として、Db2 11.5.4 on Openshift をアンインストールした時の作業記録を残します。
-
Db2 Community Edition 11.5.4.0 インストール時の手順・ログはこちらにまとめています
→ Db2 11.5.4 on OpenShift をデプロイしてみた -
Db2 11.5.4 on OpenShift は、Helm V2 を前提としていることから、このアンインストール手順も Helm V2 を前提に作成しています
参考資料
ここから先、記述する手順は、2020年7月時点のGitHubの手順をベースとしています。
Db2 Community Edition 11.5.4.0
https://github.com/IBM/charts/tree/master/stable/ibm-db2
Db2 on OpenShift アンインストールの流れ
- インストール済みのリリースを削除
- セキュリティ関連の構成オブジェクトの削除
- PVC/PVの削除
Step1. インストール済みのリリースを削除
リリース名を確認する ( → db2u-oltp-0 )
$ helm list
"NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE"
db2u-oltp-0 1 Sun Jul 12 21:33:20 2020 DEPLOYED ibm-db2-3.0.1 11.5.4.0 db2u-oltp0
helm delete コマンドでリリースを削除する
$ helm delete --purge db2u-oltp-0
release "db2u-oltp-0" deleted
削除できたことを確認する
(--namespaceオプションは指定しなくてもOK / この例ではdb2u-oltp0ネームスペース内のリリースを一覧表示)
$ helm list --namespace db2u-oltp0
(空白)
正常に削除できていれば、Pod/Jobなどもすべて削除される
$ oc get all | grep -i db2
No resources found in db2u-oltp0 namespace.
Step2. セキュリティ関連の構成オブジェクトの削除
db2u-install 前に作成した ServiceAccount, Role, Secret 等を削除する。
インストーラ同梱のスクリプトを用いてServiceAccount, Role , Rolebinding , SCCとRoleの紐づけを削除する。
$ cd <Db2u-installer_Extracted_Dir>/ibm_cloud_pak/pak_extensions/post-delete/namespaceAdministration/deleteSecurityNamespacePrereqs.sh
$ ./deleteSecurityNamespacePrereqs.sh
Removing all namespace users from SCC...
serviceaccount "db2u" deleted
role.rbac.authorization.k8s.io "ibm-db2-role" deleted
rolebinding.rbac.authorization.k8s.io "ibm-db2-rolebinding" deleted
securitycontextconstraints.security.openshift.io/db2oltp-scc removed from: ["system:serviceaccount:db2u-oltp0:db2u"]
Secret削除
$ oc delete -n <PROJECT> secret/<RELEASE-NAME>-db2u-ldap-bluadmin secret/<RELEASE-NAME>-db2u-instance
Step3. PVC/PVの削除
OCP版Db2公式のGitHubでは、下記コマンドによる削除方法が紹介される。
# kubectl delete pvc -l release=my-release
もしくは、下記のように個別に手動で削除する
① PVC削除
ここでは、「pvc00-nfsdb2」という名前のPVCを削除する
$ oc delete pvc pvc00-nfsdb2
persistentvolumeclaim "pvc00-nfsdb2" deleted
PVCが削除されたことを確認
oc get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
(該当のPVCが存在しない)
② PV削除
RelaimPolicy = Retain で作成されたPVは、PVCを削除してもPVは残り続けるため、不要であればディスクを占有させないよう明示的に削除する。
「pv00-nfsdb2」という名前のPVを削除する
oc delete pv pv00-nfsdb2
persistentvolume "pv00-nfsdb2" deleted
PVが削除されたことを確認
oc get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
(該当のPVが存在しない)
③ NFSディレクトリのクリーンアップ
正常アンインストールができた場合も、NFSディレクトリーにDb2関連のディレクトリ・ファイルが残ることがある(etcd用のディレクトリ等)
また同じNFSディレクトリを再利用する場合には、手動で削除する。
(以下は、削除の一例)
# ls -la
total 0
drwxr-xr-x. 3 root root 18 Jun 10 01:56 .
drwxr-xr-x. 6 root root 57 Jul 4 02:12 ..
drwxr-xr-x. 5 root root 87 Jun 10 01:56 etcd
# rm -rf ./etcd
# ls -la
total 0
drwxr-xr-x. 2 root root 6 Jul 14 02:55 .
drwxr-xr-x. 6 root root 57 Jul 4 02:12 ..