Docker/K8S実践コンテナ開発入門@10日目
Swarmによる実践的なアプリケーション構築の章を行っていきます。
最近ではSwarmが廃止されてKubernetesを利用することが一般的のようですが、
「一応古い技術であったとしても抑えておいた方が良い。」
というポリシーの元やってみます。
※本書の中でも「オーケストレーションシステムは多数存在しており、執筆時現在ではKubernetesがデファクトの地位を確立しています。」
と注釈されています。
Webアプリケーションの構成について
この章で対応することはToDoアプリの扱えるように構成するようです。
RESTful APIを利用できそうなのでちょっとワクワク
※第3章で利用したSwarm環境を利用します。
実行コマンド
■Swarmクラスタが実行されているか確認
docker container exec -it manager docker node ls
■Overlayネットワークを構築
docker container exec -it manager \
docker network create --driver=overlay --attachable todoapp
本章でまとめられている手順は大きく以下の通りです。
- データストアとなるMaster/Slave構成のMySQL Serviceの構築
- MySQLとデータのやり取りをするためのAPI実装
- webアプリケーションとAPI間にリバースプロキシとなるNginxを通じてアクセスできるように設定
- APIを利用してサーバサイドレンダリングをするWebアプリケーションを実装
- フロント側にリバースプロキシ(Nginx)を置く
上記1に関しては、次のgitクローン処理でほぼ設定済みのものが引っ張って来れます。
MySQLServiceの構築
gitクローンによってtododb処理用の設定済みmysqlを持って来れます。
■MySQLのgitをクローン
git clone https://github.com/gihyodocker/tododb
MySQLの構成で気になった点としては以下の通りです。
「MySQLの構成では、replicasを増加させること(スケールアウト)で対応するとあります。
また、その際にMaster/Slave共に一時停止、ダウンタイムは許容します。」
アプリによると思いますが、昨今だとあまりダウンタイムは許容しないことが多いように思うのでそちらの設定も覚えておいた方が良いのでしょうね。
認証情報など諸々確認する章が続きますがコマンド実行系はないので読み進めるのみとします。※gitクローンで取得した各ファイルについての説明が記載されているのでよく理解しておくことが重要です。
レプリケーションの設定
■コマンド
docker image build -t ch04/tododb:latest .
実行中に赤字でログが出力されているのでびっくりしました。
別にエラーとかではないと思うのですが、なんでやろ?
■imageタグ付与
docker image tag ch04/tododb:latest localhost:5000/ch04/tododb:latest
■push
docker image push localhost:5000/ch04/tododb:latest
Swarm上でMaster/Slaveサービスを実行する
stack/todo-mysql.ymlを作成します。こちらは資料通りに従って作成してください。
その後Swarmによるデプロイを試します。
docker container exec -it manager docker stack deploy -c /stack/todo-mysql.yml todo_mysql
open /stack/todo-mysql.yml: no such file or directory
ここでエラーが発生
managerコンテナにymlファイルがないのが原因でしょうか。
それとも参照しているmanagerコンテナのディレクトリが誤っているのでしょうか。
前章で作成したディレクトリの下にあるstackディレクトリ配下に配置すればうまくいくかもしれません。明日以降はそこから検証しなおします。