Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

st2-docker ことはじめ

1,163 views

Published on

StackStorm勉強会 第4会 発表資料
動画→https://youtu.be/j0dyHxDbBT4

Published in: Software
  • Be the first to comment

st2-docker ことはじめ

  1. 1. INTERNET MULTIFEED CO.Copyright © st2-docker ことはじめ Shu Sugimoto JPNAP / INTERNET MULTIFEED CO. @st2勉強会#4 2018-05-29(Tue)
  2. 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. 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. 4. INTERNET MULTIFEED CO.Copyright © おさらい:StackStormの内部構成要素 4 https://docs.stackstorm.com/reference/ha.html の部分がStackStormのプロセス → 複数のプロセスの集合体が「StackStorm」を成している
  5. 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. 6. INTERNET MULTIFEED CO.Copyright © st2-dockerの使い所 • 適している • ちょっとStackStorm試してみたい • Packの開発環境 • 適していない • StackStorm/st2自体の開発 • cf. st2vagrant • https://github.com/StackStorm/st2vagrant • コンテナ vs VMの差 • コンテナの方が起動までの手数は少なく、べき等性の担保はし やすい • ??? • 商用環境へのデプロイ 6
  7. 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. 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. 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. 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. 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. 12. INTERNET MULTIFEED CO.Copyright © 1ppc mode • 通常モード • upstartで複数プロセスを1コンテナ内で起動 • VMに近い使用感 • デフォルト • 1ppc mode • 1プロセス1コンテナ化したもの • 以前のst2-dockerfilesで実現されていた物に近い • 実験段階/公式未サポート • 1プロセス1コンテナ化されたことで、各コンポーネント (st2api/st2auth/st2actionrunner/etc…)単位でスケールアウト することが可能に 12
  13. 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. 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. 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. 16. INTERNET MULTIFEED CO.Copyright © st2 on k8s まとめ • まだ公式的には実験段階かつ、解決すべき課題はたくさんあるが、 StackStorm on KubernetesはHA化に対する一つの解として期 待大! • すでに一部のユーザーでは実際にKubernetes環境で運用してい るところもある 16
  17. 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
  18. 18. INTERNET MULTIFEED CO.Copyright © 18 Questions?

×