IBM Cloud から提供されている 30 日間無料 Kubernetes サービス(IBM Kubernetes Service 、以下 "IKS")環境を使って利用することのできるコンテナイメージを1日に1個ずつ 30 日間連続で紹介していきます。
環境のセットアップや制約事項については Day0 のこちらの記事を参照してください。
終盤を迎えた本日 Day 25 からはアプリケーション系コンテナとその GUI ツールを中心に紹介してます。本日 Day 25 は本シリーズ3回目(最後です)の登場となる自作の FX イメージをデプロイする例を紹介します。
【イメージの概要】
FX(Foreign eXchange) 、つまり「外国為替」の情報を REST API でリアルタイムに取得できるアプリケーションです。「1米ドル=102円10銭」というアレを米ドル:日本円の組み合わせだけでなく、このアプリケーションでは20種類のペアで取得します。FX は基本的に 24 時間世界中で稼働しており、リアルタイムにその情報を取得できる点が解析データとしても有用です。
Day 1 に、やはり自作ツールとして紹介した hostname と同様のシンプルなツールですが、リアルタイムな情報を取得できる(取得した情報をデータベースに入れておけば後から活用できる)という点で幅広い応用ができるアプリケーションです。
【イメージのデプロイ】
まずはこちらのファイルを自分の PC にダウンロードしてください:
https://raw.githubusercontent.com/dotnsf/yamls_for_iks/main/fx.yaml
今回の FX も特にパラメータ指定不要で、そのままデプロイすることができます。以下のコマンドを実行する前に Day 0 の内容を参照して ibmcloud CLI ツールで IBM Cloud にログインし、クラスタに接続するまでを済ませておいてください。
そして以下のコマンドを実行します:
以下のコマンドで FX 関連の Deployment, Service, Pod, Replicaset が1つずつ生成されたことと、サービスが 30080 番ポートで公開されていることを確認します:
この後に実際にサービスを利用するため、以下のコマンドでワーカーノードのパブリック IP アドレスを確認します(以下の例であれば 161.51.204.190):
つまりこの時点で(上述の結果であれば)アプリケーションは http://169.51.204.190:30080/ で稼働している、ということになります。ウェブブラウザを使って、アプリケーションの URL(上述の方法で確認した URL)にアクセスしてみます:
フォーマットを整えるとこのような結果でした。リアルタイムな外国為替情報を GET リクエストのたびに取得できる、なかなか便利な API サーバーです:
【YAML ファイルの解説】
YAML ファイルはこちらを使っています:
Deployment 1つと、Service 1つのシンプルな YAML ファイルです。一応解説を加えておきます。アプリケーションそのものは 8080 番ポートで動作するように作られているため、NodePort 30080 番を指定して、外部からは 30080 番ポートでアクセスできるようにしています(NodePort として指定可能な番号の範囲は 30000 ~ 32767 です、指定しない場合は空いている番号がランダムに割り振られます)。また ReplicaSet は1つだけで作りました。
デプロイしたコンテナイメージを削除する場合はデプロイ時に使った YAML ファイルを再度使って、以下のコマンドを実行します。不要であれば削除しておきましょう:
【紹介したイメージ】
https://hub.docker.com/r/dotnsf/fx
【紹介記録】
環境のセットアップや制約事項については Day0 のこちらの記事を参照してください。
終盤を迎えた本日 Day 25 からはアプリケーション系コンテナとその GUI ツールを中心に紹介してます。本日 Day 25 は本シリーズ3回目(最後です)の登場となる自作の FX イメージをデプロイする例を紹介します。
【イメージの概要】
FX(Foreign eXchange) 、つまり「外国為替」の情報を REST API でリアルタイムに取得できるアプリケーションです。「1米ドル=102円10銭」というアレを米ドル:日本円の組み合わせだけでなく、このアプリケーションでは20種類のペアで取得します。FX は基本的に 24 時間世界中で稼働しており、リアルタイムにその情報を取得できる点が解析データとしても有用です。
Day 1 に、やはり自作ツールとして紹介した hostname と同様のシンプルなツールですが、リアルタイムな情報を取得できる(取得した情報をデータベースに入れておけば後から活用できる)という点で幅広い応用ができるアプリケーションです。
【イメージのデプロイ】
まずはこちらのファイルを自分の PC にダウンロードしてください:
https://raw.githubusercontent.com/dotnsf/yamls_for_iks/main/fx.yaml
今回の FX も特にパラメータ指定不要で、そのままデプロイすることができます。以下のコマンドを実行する前に Day 0 の内容を参照して ibmcloud CLI ツールで IBM Cloud にログインし、クラスタに接続するまでを済ませておいてください。
そして以下のコマンドを実行します:
$ kubectl apply -f fx.yaml
以下のコマンドで FX 関連の Deployment, Service, Pod, Replicaset が1つずつ生成されたことと、サービスが 30080 番ポートで公開されていることを確認します:
$ kubectl get all NAME READY STATUS RESTARTS AGE pod/fx-8c9f89476-7m9jh 1/1 Running 0 39s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/fx NodePort 172.21.194.141 <none> 8080:30080/TCP 39s service/kubernetes ClusterIP 172.21.0.1 <none> 443/TCP 27d NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/fx 1/1 1 1 40s NAME DESIRED CURRENT READY AGE replicaset.apps/fx-8c9f89476 1 1 1 40s
この後に実際にサービスを利用するため、以下のコマンドでワーカーノードのパブリック IP アドレスを確認します(以下の例であれば 161.51.204.190):
$ ibmcloud ks worker ls --cluster=mycluster-free
OK
ID パブリック IP プライベート IP フレーバー 状態 状況 ゾーン バージョン
kube-c3biujbf074rs3rl76t0-myclusterfr-default-000000df 169.51.204.190 10.144.185.144 free normal Ready mil01 1.20.7_1543*
つまりこの時点で(上述の結果であれば)アプリケーションは http://169.51.204.190:30080/ で稼働している、ということになります。ウェブブラウザを使って、アプリケーションの URL(上述の方法で確認した URL)にアクセスしてみます:
フォーマットを整えるとこのような結果でした。リアルタイムな外国為替情報を GET リクエストのたびに取得できる、なかなか便利な API サーバーです:
{ "status":true, "result":{ "datetime":"2021-07-24 06:34:08+0", "rate":{ "USDJPY":110.55, "EURJPY":130.109, "EURUSD":1.17691, "AUDJPY":81.398, "GBPJPY":151.969, "NZDJPY":77.134, "CADJPY":87.962, "CHFJPY":120.19, "HKDJPY":14.219, "GBPUSD":1.37465, "USDCHF":0.91965, "ZARJPY":7.438, "AUDUSD":0.73629, "NZDUSD":0.6977, "EURAUD":1.59832, "TRYJPY":12.91, "CNHJPY":17.068, "NOKJPY":12.456, "SEKJPY":12.704, "MXNJPY":5.511 } } }
【YAML ファイルの解説】
YAML ファイルはこちらを使っています:
apiVersion: v1 kind: Service metadata: name: fx spec: selector: app: fx ports: - port: 8080 protocol: TCP targetPort: 8080 nodePort: 30080 type: NodePort --- apiVersion: apps/v1 kind: Deployment metadata: name: fx spec: replicas: 1 selector: matchLabels: app: fx template: metadata: labels: app: fx spec: containers: - name: fx image: dotnsf/fx ports: - containerPort: 8080
Deployment 1つと、Service 1つのシンプルな YAML ファイルです。一応解説を加えておきます。アプリケーションそのものは 8080 番ポートで動作するように作られているため、NodePort 30080 番を指定して、外部からは 30080 番ポートでアクセスできるようにしています(NodePort として指定可能な番号の範囲は 30000 ~ 32767 です、指定しない場合は空いている番号がランダムに割り振られます)。また ReplicaSet は1つだけで作りました。
デプロイしたコンテナイメージを削除する場合はデプロイ時に使った YAML ファイルを再度使って、以下のコマンドを実行します。不要であれば削除しておきましょう:
$ kubectl delete -f fx.yaml
【紹介したイメージ】
https://hub.docker.com/r/dotnsf/fx
【紹介記録】
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 |