More Related Content
Similar to st2-docker ことはじめ (20)
st2-docker ことはじめ
- 2. INTERNET MULTIFEED CO.Copyright ©
今日の内容
• st2-dockerとは?
• st2-dockerを使って環境を構築した際のTips共有
• StackStorm on Kubernetes
• [参考] 弊社におけるStackStorm利用状況
• 商用環境で利用中
• デプロイはst2-dockerを利用しコンテナで実施
• HAは未
• Mistralメイン
• カスタムパックを開発して利用が主
• 事例 (昨年の勉強会第2回で発表したもの)
• https://www.slideshare.net/shusugimoto1986/ixstackstorm
2
- 3. INTERNET MULTIFEED CO.Copyright ©
st2-docker
• StackStorm “公式” Dockerイメージ
• https://github.com/StackStorm/st2-docker
• 2017年4月、正式リリース
• st2-dockefiles というunofficialなやつがある
• https://github.com/StackStorm/st2-dockerfiles
• こちらは主に「開発用イメージ」
• デプロイして使う用途には適さないので要注意!
• ユーザーとして使うことは殆どない
3
- 4. INTERNET MULTIFEED CO.Copyright ©
おさらい:StackStormの内部構成要素
4
https://docs.stackstorm.com/reference/ha.html
の部分がStackStormのプロセス
→ 複数のプロセスの集合体が「StackStorm」を成している
- 5. INTERNET MULTIFEED CO.Copyright ©
st2-dockerの中身
• ベースイメージはUbuntu 14.04
• upstartで1コンテナ内でマルチプロセスを実現
• !!? → あとで。
• mongodb/rabbitmq/postgres/redis は外部コンテナで用意して
あげる必要がある
• レポジトリ内のdocker-compose.ymlを使うと(ほぼ)コマンド一
発でStackStormが動く環境を構築出来る
5
git clone git@github.com:stackstorm/st2-docker.git
cd st2-docker
make env
docker-compose up –d
Docker-compose exec stackstorm bash
- 6. INTERNET MULTIFEED CO.Copyright ©
st2-dockerの使い所
• 適している
• ちょっとStackStorm試してみたい
• Packの開発環境
• 適していない
• StackStorm/st2自体の開発
• cf. st2vagrant
• https://github.com/StackStorm/st2vagrant
• コンテナ vs VMの差
• コンテナの方が起動までの手数は少なく、べき等性の担保はし
やすい
• ???
• 商用環境へのデプロイ
6
- 7. INTERNET MULTIFEED CO.Copyright ©
“Is st2-docker production ready?”
• “This official image is simple for quick evaluations;
convenient for building automations, yet solid enough for
light-to-medium production use.”
• 商用でも使える、というのが公式見解
• 弊社でもproduction/staging/lab環境全てst2-dockerで運用中
7
- 8. INTERNET MULTIFEED CO.Copyright ©
st2-docker in production: Tips
• レポジトリのdocker-compose.ymlはそのままではほぼ使えない
• 少なくとも商用ではイメージバージョンの固定は必要
• image: stackstorm/stackstorm:latest@sha256:9a02d5d…
• その他、カスタマイズ例
• SSLの証明書のbind mountの追加
• コンテナ再起動ポリシーの追加
• restart: always
• 弊社では別ブランチにローカルの変更を全てcommitし、社
内レポジトリで管理
• バージョンアップは比較的ラク?
• 2.6.0 -> 2.7.2はイメージ入れ替えるだけでおしまい
• Upgrade Notesちゃんと読む
8
- 9. INTERNET MULTIFEED CO.Copyright ©
st2-docker in production: Tips
• /etc/st2/st2.conf 等に対する設定変更は全てentrypoint.dに置
いたシェルスクリプトで実施出来る
• カスタムイメージをビルドするよりは手軽
• シェルスクリプトもgitに入れてしまえば変更管理しやすい
• 弊社でやっていること
• LDAP認証(コミュニティ版)の設定
• Action output streamingの有効化
• crudiniでst2.confを変更している
• st2chatopsの設定ファイルの設置
• catとリダイレクトの組み合わせ
• あまりいろいろやりすぎると起動が遅くなる
• packに必要なlib系パッケージのapt-get installが多い場合はカ
スタムイメージ作成を推奨
9
- 10. INTERNET MULTIFEED CO.Copyright ©
st2-docker in production: Tips
• StackStormを公式Dockerイメージで動かす際のTips
https://qiita.com/shusugmt/items/18b5f4e44c720aae47ae
• st2clientを使ってリモート(st2-docker)のst2を操作する
https://qiita.com/shusugmt/items/0c88cc9cbc474fe4ced5
10
- 11. INTERNET MULTIFEED CO.Copyright ©
“Is st2-docker production ready?” (cont’d)
• “This official image is simple for quick evaluations;
convenient for building automations, yet solid enough for
light-to-medium production use.”
• heavy production use
• 大量のワークフローを処理している
• 高可用性が必要である
• => st2-docker 1ppc mode + Kubernetes
11
- 12. INTERNET MULTIFEED CO.Copyright ©
1ppc mode
• 通常モード
• upstartで複数プロセスを1コンテナ内で起動
• VMに近い使用感
• デフォルト
• 1ppc mode
• 1プロセス1コンテナ化したもの
• 以前のst2-dockerfilesで実現されていた物に近い
• 実験段階/公式未サポート
• 1プロセス1コンテナ化されたことで、各コンポーネント
(st2api/st2auth/st2actionrunner/etc…)単位でスケールアウト
することが可能に
12
- 13. INTERNET MULTIFEED CO.Copyright ©
st2-docker 1ppc trial w/docker-compose
• とりあえず1ppcどんな感じで動くか見てみたい、という方のため
に、すぐ使えるdocker-compose.ymlも用意されている
• https://github.com/StackStorm/st2-
docker/blob/master/runtime/compose-1ppc/
• https://github.com/StackStorm/st2-
docker/blob/master/runtime/compose-1ppc/docker-compose.yml
• ※あくまでも1ppcお試し用。商用利用NG!
• とりあえずスケールアウトさせてみる
13
docker-compose up –d
docker-compose up --scale st2actionrunner=3 –d
docker-compose ps
# 詳細手順はruntime/compose-1ppc/README.md参照
- 14. INTERNET MULTIFEED CO.Copyright ©
st2-docker 1ppc + Kubernetes
• Kubernetes おさらい
• コンテナオーケストレーション
• 冗長化とスケールアウトを容易に実現可能
• (もとは)Google発プロダクト
• st2 on k8s sample manifests
• https://github.com/StackStorm/st2-
docker/blob/master/runtime/kubernetes-1ppc/
• ※まだ実験段階。あくまでサンプル。
• HA構成の課題はKubernetes化しても同じ
• 共有ストレージ
• Sensor partitioning
14
- 15. INTERNET MULTIFEED CO.Copyright ©
st2 on k8s: Tips
• 共有ストレージ問題
• /opt/stackstorm/packs等をどうやって管理するか?
• k8sでRead-Write-Many(RWX)なストレージバックエンドは
サポートがまだ手薄
• GKE/GCPではデフォルトでは方法なし
• 個人的にオススメは「pack/virtualenv等、必要なファイルを
すべて焼き込んだイメージを作る」
• RWXストレージが不要に
• configはConfigMapを使ってマウントする
• サンプル
• https://github.com/shusugmt/st2-docker-pack-
prebuild-example
15
- 16. INTERNET MULTIFEED CO.Copyright ©
st2 on k8s まとめ
• まだ公式的には実験段階かつ、解決すべき課題はたくさんあるが、
StackStorm on KubernetesはHA化に対する一つの解として期
待大!
• すでに一部のユーザーでは実際にKubernetes環境で運用してい
るところもある
16
- 17. INTERNET MULTIFEED CO.Copyright ©
Roadmap / Future plans
• Helm Chart
• https://github.com/StackStorm/st2-docker/pull/126
• Kubernetesへの親和性拡大
• 環境変数でコントロール出来る項目の拡大
• mongo/rabbitmq等の外部システムはURL指定可能に
• ActiveMQの利用ももしかしたら可能→AWS EKSで外部サービ
スのフルマネージド化へ
• ベースイメージの更新
• Python 2.7.6問題
• (おそらく)ターゲットはUbuntu 18.04
• systemd化待ったなし
17