IBM Cloud から提供されている 30 日間無料 Kubernetes サービス(IBM Kubernetes Service 、以下 "IKS")環境を使って利用することのできるコンテナイメージを1日に1個ずつ 30 日間連続で紹介してきました。
最終日というかおまけとして、31 日目は実際にこれらのイメージをデプロイしてきたの感想を含めたあとがきを記していきます。
【率直な感想】
改めてこの 30 日間を振り返ります。これだけの環境を作ってきました:
自分はプログラマーなので、プログラマー視点というか開発者視点で客観的にこの表を見てまず思うのは、自分が開発環境として使いそうなデータベースやツール、ミドルウェア類は一通り揃っているという事実です。もちろん自分の PC にこの環境を用意することはできるし、ローカルだけで開発環境が整うのはそれはそれでメリットもあるわけですが、一方で無料のリモート環境にこれだけのツール類を揃えて使うことができるというのは充分すぎるというか、「使う予定はないかもしれないけど、この環境を使うならおまけに R Studio も入れちゃおうかな」とか、「念の為 IaaS 的な環境も」とか、「ちょっと気分転換にゲームを」とか余裕で考えるくらいの環境が用意できる、そんな太っ腹な無料サービスだと改めて感じました。
また単なる開発環境である以上に、コンテナや k8s の運用を勉強するための環境としてもかなり使えると感じています。Day 1 で紹介したようなレプリカセットを変更した上で挙動の変化を確認したり、Day 24 では k8s の管理ダッシュボードを使ってポッドの中でシェルを動かしたり、Day 29 や Day 30 では複数のコンテナを通信させて動く環境を作る、といったことも体験できました。普段データベースは使っているけど、データの解析はしたことがない人でも解析環境まで入手できるようになる、このような、実際に外部から利用可能な形で公開して体験できる形の環境が無料で提供されているという点を改めて素晴らしいと感じています。
【この環境の制約事項について】
もちろん制約事項を感じることもありました。この契約では k8s の Ingress が使えないためサービスは NodePort 公開しかできない(ワーカーノードの IP アドレスでしか公開できない)、そのためコンテナ側に SSL を使った公開方法が考慮されていてもこの環境では使えない、、といった制約を何度か経験することになりました。まあここは開発環境と割り切って使う中ではあまり気にならないとも言えますけど、外部連携時に SSL 接続を前提としているケースがあったり、(IP アドレスではなく)ドメイン名やホスト名を使う前提のサービスと連携するケースがあったりすると、そこで制約を受けることになる点が注意が必要だと思いました。
加えて、今回は 30 日間で紹介するサービスを上述の 30 種類にしていますが、実はこの中に含めたくて諦めたサービスもいくつかあります。それらの多くはこの無料環境でデプロイして使うのは難しい※と判断したものばかりでした。
※自分の誤解に基づくものや、うまく回避する方法を知らなかっただけというものも含まれているかもしれません。ただ今回の企画の時間的な意味も含めた制約の中では「難しい」と諦めざるを得なかった、という意味です。
理由としてもったいなかったのは「デプロイはできたようだが、確認する方法(専用クライアント)がない」というケースでした。超軽量データベースである Apache Derby などはその例で、IKS へのデプロイ自体は成功していたように見えているのですが、動作を確認するにはアプリケーションを作る必要があって、そこまで作業するのが時間制約的に困難だったというケースです。curl やウェブブラウザで動作確認ができず、動作確認用クライアントを作る必要がある、というパターンのは今回は諦めました。
この動作確認用クライアントが存在しない以外の理由が原因となったケースもあります。その1つを紹介すると IBM Db2 コンテナがあります。本環境で IBM Db2 コンテナを使うのが難しそうだと判断した理由は少し特殊な環境設定にありました。
IBM Db2 はデフォルトで 50000 番ポートを使って通信します。ポート番号自体はコンテナ公開時にポートフォワーディングで変更することもできるのですが、IBM Db2 の場合は /etc/services ファイル内にこのポート番号を指定するための設定を加える必要がありました。コンテナで動かす場合は、コンテナイメージ内のこの設定を変更して(かつこの変更が消えないようにして)再起動するか、設定を変更せず 50000 番ポートで公開するか、いずれかの方法が必要となります。
コンテナの紹介ページでは docker コマンドによるデプロイ方法が紹介されていました。docker であれば EXPOSE するポート番号を自由に指定できるのですが、今回は NodePort を使った公開しかできない k8s 環境、という制約があります。また今回は無料の範囲内で(ボリュームを使わずに)紹介するという目的もありました。この制約の中で色々な方法を試したのですが、結局うまく公開することができず、今回は 30 個の中から除外する、という判断をするに至った、という背景を記載しておきます。
ここに記載するのもどうかと思ったのですが、もしかすると詳しい人が引き継いでくれることを期待して、自分が(ちょっと)試してみた限りでは難しそうだと判断して諦めたコンテナイメージのリストを掲載しておきます。本当はこれらを 30 個に加えたかったのだけど、そもそも自分が普段使っているわけではないものもあったりして、設定そのものにあまり詳しくなかったりするものが大半です。もし 30 日無料版 IKS 環境で動かすことができたら教えてください(笑):
Minix イメージについては幻の 31 日目のイメージとして加えさせていただきます(笑)。
上述の IBM Db2 もそうだったのですが、コンテナ内のファイルを編集して再起動、を前提とするようなコンテナイメージや、そもそも動作に必要なスペックが高すぎるものは諦めました。自分の場合はあくまで開発環境という意味での「とりあえず動いて外部から利用できることが重要」という視点で見ていたので、上記 30 個のリストの中にもしかすると使っているうちに別の制約を受けることになる可能性は否定できません。
【最後に】
改めて書きますが、これだけの開発環境が連続して 30 日間無料で使えるというのはやはり魅力です。自分が業務や個人で作っているアプリケーションを作る際の環境と比較しても、ほぼ支障を感じることがありませんし、制約事項で挙げたサービスについても他の方法で無料で入手することができるものばかりと考えると、アプリケーション開発者にとっては無料で勉強も利用もできる環境がかなり広くなったと改めて感慨にふけることができるようになりました。
余談ですが、IBM Cloud にはこの 30 日無料版 k8s クラスタ環境以外にも、無料枠内で(期間制限なしで)使える多くのサービスが用意されています。この k8s 環境を通じて、興味が湧いたらぜひこちらも試していただきたいです。これは私自身の感想ですが、マネージドサービスで使えるデータベースは本当に便利です。
本 k8s 環境をできるだけ多くの人に知ってもらって、使ってみていただければと思っています。
最後に 30 日間の利用環境が残り1時間になった時の記念写真。1か月ありがとうございました。


最終日というかおまけとして、31 日目は実際にこれらのイメージをデプロイしてきたの感想を含めたあとがきを記していきます。
【率直な感想】
改めてこの 30 日間を振り返ります。これだけの環境を作ってきました:
Day | カテゴリー | デプロイ内容 |
---|---|---|
0 | 準備 | 準備作業 |
1 | ウェブサーバー | hostname |
2 | Apache HTTP | |
3 | Nginx | |
4 | Tomcat | |
5 | Websphere Liberty | |
6 | データベース | MySQL |
7 | phpMyAdmin | |
8 | PostgreSQL | |
9 | pgAdmin4 | |
10 | MongoDB | |
11 | Mongo-Express | |
12 | Redis | |
13 | RedisCommander | |
14 | ElasticSearch | |
15 | Kibana | |
16 | CouchDB | |
17 | CouchBase | |
18 | HATOYA | |
19 | プログラミング | Node-RED |
20 | Scratch | |
21 | Eclipse Orion | |
22 | Swagger Editor | |
23 | R Studio | |
24 | Jenkins | |
25 | アプリケーション | FX |
26 | 2048 | |
27 | DOS Box | |
28 | VNC Server(Lubuntu) | |
29 | Drupal | |
30 | WordPress |
自分はプログラマーなので、プログラマー視点というか開発者視点で客観的にこの表を見てまず思うのは、自分が開発環境として使いそうなデータベースやツール、ミドルウェア類は一通り揃っているという事実です。もちろん自分の PC にこの環境を用意することはできるし、ローカルだけで開発環境が整うのはそれはそれでメリットもあるわけですが、一方で無料のリモート環境にこれだけのツール類を揃えて使うことができるというのは充分すぎるというか、「使う予定はないかもしれないけど、この環境を使うならおまけに R Studio も入れちゃおうかな」とか、「念の為 IaaS 的な環境も」とか、「ちょっと気分転換にゲームを」とか余裕で考えるくらいの環境が用意できる、そんな太っ腹な無料サービスだと改めて感じました。
また単なる開発環境である以上に、コンテナや k8s の運用を勉強するための環境としてもかなり使えると感じています。Day 1 で紹介したようなレプリカセットを変更した上で挙動の変化を確認したり、Day 24 では k8s の管理ダッシュボードを使ってポッドの中でシェルを動かしたり、Day 29 や Day 30 では複数のコンテナを通信させて動く環境を作る、といったことも体験できました。普段データベースは使っているけど、データの解析はしたことがない人でも解析環境まで入手できるようになる、このような、実際に外部から利用可能な形で公開して体験できる形の環境が無料で提供されているという点を改めて素晴らしいと感じています。
【この環境の制約事項について】
もちろん制約事項を感じることもありました。この契約では k8s の Ingress が使えないためサービスは NodePort 公開しかできない(ワーカーノードの IP アドレスでしか公開できない)、そのためコンテナ側に SSL を使った公開方法が考慮されていてもこの環境では使えない、、といった制約を何度か経験することになりました。まあここは開発環境と割り切って使う中ではあまり気にならないとも言えますけど、外部連携時に SSL 接続を前提としているケースがあったり、(IP アドレスではなく)ドメイン名やホスト名を使う前提のサービスと連携するケースがあったりすると、そこで制約を受けることになる点が注意が必要だと思いました。
加えて、今回は 30 日間で紹介するサービスを上述の 30 種類にしていますが、実はこの中に含めたくて諦めたサービスもいくつかあります。それらの多くはこの無料環境でデプロイして使うのは難しい※と判断したものばかりでした。
※自分の誤解に基づくものや、うまく回避する方法を知らなかっただけというものも含まれているかもしれません。ただ今回の企画の時間的な意味も含めた制約の中では「難しい」と諦めざるを得なかった、という意味です。
理由としてもったいなかったのは「デプロイはできたようだが、確認する方法(専用クライアント)がない」というケースでした。超軽量データベースである Apache Derby などはその例で、IKS へのデプロイ自体は成功していたように見えているのですが、動作を確認するにはアプリケーションを作る必要があって、そこまで作業するのが時間制約的に困難だったというケースです。curl やウェブブラウザで動作確認ができず、動作確認用クライアントを作る必要がある、というパターンのは今回は諦めました。
この動作確認用クライアントが存在しない以外の理由が原因となったケースもあります。その1つを紹介すると IBM Db2 コンテナがあります。本環境で IBM Db2 コンテナを使うのが難しそうだと判断した理由は少し特殊な環境設定にありました。
IBM Db2 はデフォルトで 50000 番ポートを使って通信します。ポート番号自体はコンテナ公開時にポートフォワーディングで変更することもできるのですが、IBM Db2 の場合は /etc/services ファイル内にこのポート番号を指定するための設定を加える必要がありました。コンテナで動かす場合は、コンテナイメージ内のこの設定を変更して(かつこの変更が消えないようにして)再起動するか、設定を変更せず 50000 番ポートで公開するか、いずれかの方法が必要となります。
コンテナの紹介ページでは docker コマンドによるデプロイ方法が紹介されていました。docker であれば EXPOSE するポート番号を自由に指定できるのですが、今回は NodePort を使った公開しかできない k8s 環境、という制約があります。また今回は無料の範囲内で(ボリュームを使わずに)紹介するという目的もありました。この制約の中で色々な方法を試したのですが、結局うまく公開することができず、今回は 30 個の中から除外する、という判断をするに至った、という背景を記載しておきます。
ここに記載するのもどうかと思ったのですが、もしかすると詳しい人が引き継いでくれることを期待して、自分が(ちょっと)試してみた限りでは難しそうだと判断して諦めたコンテナイメージのリストを掲載しておきます。本当はこれらを 30 個に加えたかったのだけど、そもそも自分が普段使っているわけではないものもあったりして、設定そのものにあまり詳しくなかったりするものが大半です。もし 30 日無料版 IKS 環境で動かすことができたら教えてください(笑):
コンテナイメージ | あきらめた理由 |
---|---|
Cassandra | デプロイはできたが、稼働中にポッドが Pending 状態になる |
CockroachDB | デプロイ時に CrashLoopBackOff エラー |
Apache Derby | デプロイはできているっぽいが、動作確認ができていない |
GitLab | デプロイはできたが、稼働中にポッドが Pending 状態になる(HTTPS 必須で HTTP 接続不可?) |
IBM Db2 | 50000 番ポートでのサービス公開が NodePort の範囲外だった |
MediaWiki | デプロイはできたが、稼働中に大量の deprecated メッセージ |
Memcached | デプロイはできたように見えたが、接続時にエラー |
Minix | デプロイはできたが、Minix のシェルにログインできない・・・と思っていたが、後から方法がわかりました(k8s のポッドにコンソールログインしてから "# ssh localhost")。これを 30 個に含めてもよかったかも。 |
Mosquitto | デプロイはできているっぽいが、動作確認ができていない |
phpMoAdmin | デプロイはできているっぽいが、MongoDB に接続できない(docker 環境でしか動かないコンテナイメージ?) |
Container Registry | デプロイはできているっぽいが、動作確認ができていない(HTTPS 必須で HTTP 接続不可?) |
SAMBA | デプロイはできたように見えたが、接続時にエラー |
Ubuntu | デプロイ時に CrashLoopBackOff エラー |
Minix イメージについては幻の 31 日目のイメージとして加えさせていただきます(笑)。
上述の IBM Db2 もそうだったのですが、コンテナ内のファイルを編集して再起動、を前提とするようなコンテナイメージや、そもそも動作に必要なスペックが高すぎるものは諦めました。自分の場合はあくまで開発環境という意味での「とりあえず動いて外部から利用できることが重要」という視点で見ていたので、上記 30 個のリストの中にもしかすると使っているうちに別の制約を受けることになる可能性は否定できません。
【最後に】
改めて書きますが、これだけの開発環境が連続して 30 日間無料で使えるというのはやはり魅力です。自分が業務や個人で作っているアプリケーションを作る際の環境と比較しても、ほぼ支障を感じることがありませんし、制約事項で挙げたサービスについても他の方法で無料で入手することができるものばかりと考えると、アプリケーション開発者にとっては無料で勉強も利用もできる環境がかなり広くなったと改めて感慨にふけることができるようになりました。
余談ですが、IBM Cloud にはこの 30 日無料版 k8s クラスタ環境以外にも、無料枠内で(期間制限なしで)使える多くのサービスが用意されています。この k8s 環境を通じて、興味が湧いたらぜひこちらも試していただきたいです。これは私自身の感想ですが、マネージドサービスで使えるデータベースは本当に便利です。
本 k8s 環境をできるだけ多くの人に知ってもらって、使ってみていただければと思っています。
最後に 30 日間の利用環境が残り1時間になった時の記念写真。1か月ありがとうございました。

