IKS + Db2 on IBM Cloud で DBアクセスアプリを動かしてみた（1.概要）

#はじめに

これまで、kubernetes の概要を理解するためにオンプレ PC 環境で kubernetes クラスターを作っていました。
それが一通りでき、kubernetes の概要ぐらいは理解できました。
今回から、クラウドの無料サービスを使って、
kubernetes の周辺も含め、簡単なアプリケーションを動かす、ということにチャレンジしてみたいと思います。
kubernetes やコンテナレジストリー、 AP サーバー (WebSphere Liberty) 、
DBサーバー (Db2) 、サンプルアプリケーションの準備、コンテナイメージの作成など、
一通りを実施することにより、 kubernetes だけではなくアプリケーションを動かす環境についての理解を深めたいと思います。
（また、今回は実施しませんが、別途できれば CI/CD についてもやってみたいと考えています）

クラウドを利用すると、以下のようなメリットがあります。

- 正しい環境がプロビジョニングされる
- オンプレ構築に比べて早く環境ができる
- 失敗すれば躊躇なく削除・再作成できる

個人的には、「正しい環境がプロビジョニングされる」というのが良いと思います。
（自分で作った kubernetes 環境に自信が無いらしい。。。）
今回の実施内容は、すべて無料で実施することが可能ですので　興味があればやってみていただければと思います。

実施内容は以下の通りで、　1つの記事で完結するのではなく、シリーズものになります。
リンクが有効なものが公開済み記事です。

1. 概要　（当記事）
2. [IBM Cloud CLI 準備](https://qiita.com/shimauma_Zzzzz/items/99d71965dad142f93e5b)
3. [IBM Cloud kubernetes Service (IKS) の準備](https://qiita.com/shimauma_Zzzzz/items/893ea7ca238ca5e2b1c7)
4. [IBM Cloud Container Registry の準備](https://qiita.com/shimauma_Zzzzz/items/97480242c969ddd0f9cd)
5. [Db2 on IBM Cloud の準備](https://qiita.com/shimauma_Zzzzz/items/9d3234757bb1c70e98c5)
6. [DBアクセスアプリケーションの準備 (java)](https://qiita.com/shimauma_Zzzzz/items/ced44370c6d3d47c8db6)
7. [WebSphere Liberty コンテナの準備](https://qiita.com/shimauma_Zzzzz/items/c586817099cf59abdc29)
8. [IKS へのコンテナのデプロイ](https://qiita.com/shimauma_Zzzzz/items/7d586dd70341bbe6881c)
9. [アクセステスト](https://qiita.com/shimauma_Zzzzz/items/1f6943ba4038aeaa4a5d)
10. [番外編.コンテナイメージのUpdate](https://qiita.com/shimauma_Zzzzz/items/5ba830350c6c976f12b5)

#環境

今回の環境は、オンプレ（と言いつつ自宅）に1台 Linux ( Cent OS 8 ) を用意し
Linux 上の kubectl コマンドを用いて、 IKS を操作します。
また、Windows 上のブラウザから IBM Cloud にアクセスし、 IBM Cloud コンソールや各種ダッシュボードを操作します。

![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310495/7d65e404-dfaf-d5e0-af38-1ff0029d3e29.png)



※図中の水色のオブジェクト（並びにその中）はすべて IBM Cloud のマネージドサービスです。
自分でいちいちインストールしなくてよいのは楽ですね。

自宅の Linux サーバーについてはなくてもコンソール操作は可能です。
Linux サーバーに IBM Cloud CLI を導入するとコマンドで 操作ができるようになるため便利なので利用しています。
（IKS, Db2 on IBM Cloud ともにブラウザコンソールがあり、それだけで操作を完結させることも可能です）
ただし、今回 コンテナイメージをビルドする際に Linux 上の docker 環境を利用するため、
Linux でなくてもよいですが、何らかのコンテナイメージビルド環境が必要です。

ソフトウェア的な環境ですが、2020/08 時点では以下のとおりでした。

|ソフトウェア|バージョン|備考|
|:--|:--|:--|
|kubernetes|1.17.9_1534|別途 1.18.6_1522 にバージョンアップ|
|Db2|11.1|

なお、オンプレの Linux は CentOS 8 ですが、 IBM Cloud CLI の利用だけを考えるのであれば
現時点では Cent OS 7 のほうがすんなりいくかもしれません。（IBM Cloud CLI 準備の中で記載します）

#前提

一連の作業を行うにあたり、いくつか前提があります。

- kubernetes の概要を理解していること
- IBM Cloud の従量課金アカウントを作成していること

これらについてはほとんど触れませんのでご注意ください。
（従量課金アカウントを使いますが、今回の一連の記事の内容はすべて無料で利用可能です）

また、一連の記事に関する注意事項です。

- 動作させてみることを主眼としているため、セキュリティや品質などは考慮していません
- クラウドの利用条件（無料かどうかなど）は変更されることがあります。 2020/08 時点の内容となります

上記以外にも、 WebSphere Liberty の設定や Db2 のテーブル作成、 Java サンプルアプリの作成などが出てきますが
そのあたりは初めてでも実施できるようにしたいと思います。
（なお、 Java サンプルアプリの作成については私自身が初めてです）

#サンプルアプリの概要

最終的に、どのような動作が見られるようにするのかを先に記載しておきます。
今回は Java アプリですが、私自身にアプリケーションを書くスキルが無いので
非常に簡単なものになります。

![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310495/2153a747-f2a7-907f-7099-f5e08e332401.png)

kubernetes 上で稼働する WebSphere Liberty の Pod (コンテナ) 上で Java アプリケーションを稼働させます。
Java アプリケーションは JDBC 経由で Db2 on IBM Cloud にアクセスし
ホスト名とアクセス回数を取得・記録します。

ブラウザ画面は、非常に簡単ですが以下のようになります。

![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310495/8139c0eb-0410-08a7-4443-bd93815704a2.png)

アクセスすると、コンテナのホスト名が記録され、アクセスカウントがインクリメントされます。
kubernetes の機能で Replica 数を増やすと、Replica 数分のホスト名が記録されるようになります。

---
今回はここまでとし、次回は [2. IBM Cloud CLI 準備](https://qiita.com/shimauma_Zzzzz/items/99d71965dad142f93e5b) について実施します。

→：[IKS + Db2 on IBM Cloud で DBアクセスアプリを動かしてみた（2. IBM Cloud CLI 準備）](https://qiita.com/shimauma_Zzzzz/items/99d71965dad142f93e5b)

---