IBM Cloud (Watson API)を無期限で無料で利用できるライトアカウントの使い方

# はじめに

IBM Cloud にこの2017/11/1より「ライトアカウント」が登場しました。これまでも無料で30日間利用できるトライアルアカウントがあったのですが今回トライアルが廃止され「ライトアカウント」になります。
ライトアカウントについてはこちらを参考にしてください。

* https://www.ibm.com/cloud-computing/jp/ja/bluemix/lite-account/
* https://console.bluemix.net/docs/pricing/index.html#accounts

特に気になるのは以下の2つの制約事項ですね

* After 10 days of no development activity, your apps go to **sleep**. You can start working on new apps without having to worry about hitting memory quota limits.
* After 30 days of no development activity, your service instances with Lite plans are **deleted**. This way, you don't have to manage deleting inactive instances before you create new ones.

# ライトアカウント

注意点で上げられているように、「開発アクティビティ」が30日以内に必要であると書かれています。この「開発アクティビティ」がないと利用できなくなると明記されています。
然しながら先日報道発表でも有りましたが「商用」で利用することについては特に制約はありませんのでうまく活用すれば初期のコストを0で始めることも出来るかもしれません。

* アカウント管理については5名までだが普通に機能が利用できる
* ランタイムは、監視・ログ・CI(継続的インテグレーション）の機能が利用可能（特に制限はなし）
* **gitlab**サービスが利用可能（プライベートリポジトリ可能）


# 申込み

必要なものは「メールアドレス」あとは入力として「氏名と電話番号」です。

<img width="1440" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/11540/3427dd72-9e52-4d53-995a-ba80bfc11419.png">

「Create Free Account」をクリックします。

<img width="1416" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/11540/8afcbe2c-39fc-5b99-3948-11b9bd401e9f.png">

メールアドレスは以前にIBMidとして作成しているものは利用できません。新しいメールアドレスを用意して入力します。（ちな、hoge+hoge@gmaill 形式のエリアスは利用できなかったです）登録をクリックするとメールが送られてきます。

<img width="894" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/11540/263dec72-aa0d-0eed-83bf-bb74ca5d0526.png">

上記はメールのキャプチャです。メールに記載されている「Confirm Account」をクリックします。
これで登録は完了です。

# ライトプランの使い勝手

## 

## アカウント
* アカウント名は「姓名」が付いたアカウント名となる（これはこれまで同様）
* アカウントへの他のIBMidユーザの招待可能（have 5 invites to shareとのことで５名まで）
    * これは複数人で同じ環境さわれるということなので嬉しいですね。
    * きちんと開発として利用できそうです
* サービスID（これはサービスを利用するアカウントを個人ではなくIDだけを払い出せる仕組み）も問題なく払い出せます。
* APIキーの発行も可能
* アカウントの管理についてはライトアカウントであっても普通の有料プラン同等のことが可能の模様
* 重要だと思うのですが「Billing」の項目から「アカウントの削除」が可能の模様です。<img width="1270" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/11540/b4ac4cce-de2c-a3cc-4bc5-3a86e148c449.png">
* アカウントは「アップグレード」でPay as you goに変更可能。その際に現在であれば $200がクレジットされる模様。


## リージョン

* リージョン何れかのリージョンでというように聞いていましたが最初から「米国南部」に設定されています。
* 他のリージョンに変更しようとするとアップグレードへ促すダイアログが表示され変更できません。<img width="737" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/11540/98501019-0cbd-b0b6-b4ca-f94146e4a857.png">
* 現時点では米国南部固定の模様です。

## 組織（Organization）
* 追加で作成できません。
* 初期の組織は「登録されたメールアドレス名」で作られています


## スペース
* 作成可能です。
* スペースが複数持つことが出来れば複数の環境がわかりやすく利用できるのでこれは助かりますね

# カタログ

* ライト**プラン**がある（利用可能な）サービスのみが表示 <img width="1436" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/11540/3314e666-0cc9-4532-0056-3eec441f92a6.png">
* 分かりやすい反面、有料プランに促すために全部出ててもいいんじゃないの？という気もする。

## サービス
* 選択可能なサービスについては、有料プラン（サービス）が表示されている。<img width="927" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/11540/033777e3-1d0d-56dc-b1db-17a89013a05e.png">
* 選択すると「オーダ」ボタンが「アップグレード」のボタンに変化してオーダは出来ない



# ランタイム（Cloud Foundryアプリケーション）
* オーダ時にサイズが選択出来るようになっています。 <img width="933" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/11540/83324db3-46ce-7a35-c740-249c2e24a2b1.png">
* 相変わらずサンプルコードはダウンロード出来ません。(https://qiita.com/tokida/items/26221c543fd141c1e924) <img width="763" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/11540/0d7ed573-dc3c-5437-86e2-8bbeeb924887.png"> 
* ランタイムは複数起動可能（公式には256MBの制約）
    * <img width="1316" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/11540/64dc770f-568e-fd05-eb07-d1e853e90f93.png">
    * まぁこういうことも有りますよね
* ランタイムには、「Monitoring」の設定を仕掛けておきます
    * Notification への連携機能も「有効化」できます。
    * <img width="751" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/11540/b8ab7e48-3e3a-ee3f-2f8b-e23bd2cbc333.png">
* Logの表示についても Kibana　の画面（Log Analytics）で実行可能
* アクセスログなども普通に確認できます
    * <img width="1429" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/11540/44655473-e970-e2b4-6239-5e1d673ed0c4.png">
* 継続的インテグレーション（CI連携）も利用可能（ただしライトアカウントで招待できるのは5名まで）
    * <img width="570" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/11540/b9bd582b-3709-6633-0b43-3fa49b23864d.png">
    * つまり **gitlabも無料** で使える。プライベートリポジトリ作りたい放題
    * <img width="1399" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/11540/6a20869d-9f81-8606-5f94-446631331888.png">
* パイプラインも有料版と同様に利用可能（これは便利に使えそう）
    * <img width="708" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/11540/ee3c3c88-89dc-5601-3d7e-b06e9f42bf62.png">


# コンテナアプリケーション（kubernetes)

## Cluster
~~2017/11/01時点では利用できない模様。ただしこちらはライトアカウントで利用可能となっていたのでそのうちに動くと思われる。~~

2017/12/01
> 久しぶりに確認した所、Cluserの作成画面が動いていた。

<img width="1143" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/11540/361f83df-af27-2b0b-8832-e12a81da8020.png">

* Lite Planで作成した所、Germanyで動いている
* マニュアル上の Getting startではbxの接続先リージョンが シドニーになっているが実際には、デプロイされたリージョンに接続する必要がある。

```
bx api https://api.eu-de.bluemix.net
bx login
bx cs clusters
bx cs cluster-config mycluster
export KUBECONFIG=/Users/hideaki/.bluemix/plugins/container-service/clusters/mycluster/kube-config-par01-mycluster.yml
kubectl get node
kubectl proxy &
```

## Repository
* IBM Cloudのコンテナサービスでは、Dockerイメージを保管するためのRepositoryサービスが提供されている。
* ブラウザ側からはエラーで表示されないがCliでは動く
* RepositoryのRegionは、KubernetesのNodeが動いているRegionで用意する必要がある。したがって今回の場合には **eu-de** に指定する

~~~
bx cr image-list
イメージをリストしています...

リポジトリー                                          名前空間   タグ     ダイジェスト   作成            サイズ   脆弱性の状況
registry.eu-de.bluemix.net/bmxlight/node-red-docker   bmxlight   latest   9260ed2c3202   10 months ago   280 MB   脆弱

OK
~~~

### 脆弱性チェック

自動的にコンテナイメージはスキャンされる。今回のケースでは20ほどのエラーが内在していた。

~~~
bx cr va registry.eu-de.bluemix.net/bmxlight/node-red-docker
「registry.eu-de.bluemix.net/bmxlight/node-red-docker」の脆弱性を確認中...

イメージ「registry.eu-de.bluemix.net/bmxlight/node-red-docker」の最終スキャン時刻は Fri Dec  1 10:57:05 JST 2017 です。
スキャン結果は、イメージを 注意 してデプロイする必要があることを示しています。

パッケージ    要約                                                                        URL
imagemagick   This update fixes several vulnerabilities in imagemagick: Various memory    https://lists.debian.org/debian-security-announce/2017/msg00303.html
              handling problems and cases of missing or incomplete input sanitising
              may result in denial of service, memory disclosure or the execution of
              arbitrary code if malformed image files are processed.
(略)
~~~

## Node-REDを起動してみる on Kuberntes

今回はシンプルにNode-REDを起動してみます。
詳しくは記載しないので流れを書いていきます。まずローカルのDockerに `nodered/node-red-docker` イメージが有るとして進めます。



1. プライベートリポジトリにコンテナイメージを転送
    * `docker tag nodered/node-red-docker registry.eu-de.bluemix.net/bmxlight/node-red-docker:latest`
    * `docker push registry.eu-de.bluemix.net/bmxlight/node-red-docker:latest`
2. PODを起動
    * `kubectl run node-red-deployment --image=registry.eu-de.bluemix.net/bmdlight/node-red-docker:latest`
3. サービスの作成
    * `kubectl expose deployment/node-red-deployment --type=NodePort --port=1880 --name=node-red-service --target-port=1880`

動作の確認

~~~
$ kubectl describe service node-red-service
Name:			node-red-service
Namespace:		default
Labels:			run=node-red-deployment
Annotations:		<none>
Selector:		run=node-red-deployment
Type:			NodePort
IP:			172.21.69.94
Port:			<unset>	1880/TCP
NodePort:		<unset>	31957/TCP
Endpoints:		<none>
Session Affinity:	None
Events:			<none>
~~~

このコンテナがどこで動いているかを確認します。

~~~
bx cs workers mycluster
OK
ID                                                 Public IP      Private IP       Machine Type   State    Status   Version
kube-par01-pa4ef8a32815924046bc5ae9c158aa27c3-w1   169.51.20.xx   10.126.126.209   free           normal   Ready    1.7.4_1504
~~~

NodePortとして開放されているのが `31957/tcp` となるので確認をしてみます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/11540/b53103ff-fd7e-c595-ba8a-d77df378580d.png)

* 図はキャプチャしたタイミングが違うのでポートが違いますが。。

<img width="1438" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/11540/84dceb94-ed43-89e1-bb39-47043f201d14.png">

* 起動時のKubernetesの状況


# FaaS (IBM Cloud Function / 旧OpenWhisk ) 

* 昨今注目を浴びているFunction as a Service（またはサーバレスやNoOps)を実現してくれるサービスです。こちらも利用可能です。
* 特に明記されていないが **「無料枠」が利用できる** 模様（ライトプランでは無い／多分）
* 左上のメニューから「Functions」を選択します。この昨日は「アップグレード」とういうのがないのでいきなり使えます。
* 有償アカウントでの価格表は以下の通り<img width="548" alt="スクリーンショット 2017-11-02 10.29.13.png" src="https://qiita-image-store.s3.amazonaws.com/0/11540/f73a2aa6-a421-e048-8c3a-63e9d3452d7e.png">
* 特に制限が無いみたいなので実用的に使えてしまいます。

## 補足
* 1ヶ月前に作成して放置してあったActionは消されることなくそのまま利用できる




# ボイラープレート

* <img width="1143" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/11540/419fda7e-e7a1-9c67-5c90-7acbc948ae4a.png">
* 非常に数が少ないのと、人気がある「NodeRED Starter」が存在していない。「IoTP」ボイラープレートに同梱されているので必要な人はこちらから利用するかまたはNodejsランタイムに対して導入をしてみてください。




# サービス状況

> 利用して追加して行きたいと思います

# まとめ

> なにか確認してほしいことなどあればコメント下さい。

* 2017/12/01) 確かに一定期間 `cf/bx` を発行していないと、CFアプリケーションは削除されクリーンな状態になっていた。


# 履歴
* 2017/12/01 Kubernetsの部分を追記