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

More Related Content

What's hot

1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud
1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud
1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloudNaoto Gohko
 
Ansible2とOpenStackの関係
Ansible2とOpenStackの関係Ansible2とOpenStackの関係
Ansible2とOpenStackの関係Hideki Saito
 
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~Takeshi Kuramochi
 
Ansible meetuptokyo 2015 Dynamic Inventory
Ansible meetuptokyo 2015 Dynamic InventoryAnsible meetuptokyo 2015 Dynamic Inventory
Ansible meetuptokyo 2015 Dynamic InventoryHideki Saito
 
OpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? WayOpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? Wayロフト くん
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化dcubeio
 
OpenStackSDK with Ansible
OpenStackSDK with AnsibleOpenStackSDK with Ansible
OpenStackSDK with AnsibleHideki Saito
 
How to contribute AWX
How to contribute AWXHow to contribute AWX
How to contribute AWXHideki Saito
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2Etsuji Nakai
 
DevStackで始めるCloud FoundryとBOSH
DevStackで始めるCloud FoundryとBOSHDevStackで始めるCloud FoundryとBOSH
DevStackで始めるCloud FoundryとBOSHi_yudai
 
Webアプリケーションによる電源管理システムのご紹介
Webアプリケーションによる電源管理システムのご紹介Webアプリケーションによる電源管理システムのご紹介
Webアプリケーションによる電源管理システムのご紹介npsg
 
OpenStack Osloを使おう - cliff編
OpenStack Osloを使おう - cliff編OpenStack Osloを使おう - cliff編
OpenStack Osloを使おう - cliff編Hideki Saito
 
Terraform Bootcamp - Azure Infrastructure as Code隊
Terraform Bootcamp - Azure Infrastructure as Code隊Terraform Bootcamp - Azure Infrastructure as Code隊
Terraform Bootcamp - Azure Infrastructure as Code隊Toru Makabe
 
Node.jsv0.8からv4.xへのバージョンアップ ~大規模Push通知基盤の運用事例~
Node.jsv0.8からv4.xへのバージョンアップ ~大規模Push通知基盤の運用事例~Node.jsv0.8からv4.xへのバージョンアップ ~大規模Push通知基盤の運用事例~
Node.jsv0.8からv4.xへのバージョンアップ ~大規模Push通知基盤の運用事例~Recruit Technologies
 
Kubernetes をいじって Hardware LoadBalancer で "type LoadBalancer" を実現してみた @Kuberne...
Kubernetes をいじって Hardware LoadBalancer で "type LoadBalancer" を実現してみた @Kuberne...Kubernetes をいじって Hardware LoadBalancer で "type LoadBalancer" を実現してみた @Kuberne...
Kubernetes をいじって Hardware LoadBalancer で "type LoadBalancer" を実現してみた @Kuberne...Masaya Aoyama
 
Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...
Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...
Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...さくらインターネット株式会社
 

What's hot (20)

1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud
1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud
1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud
 
Ansible2とOpenStackの関係
Ansible2とOpenStackの関係Ansible2とOpenStackの関係
Ansible2とOpenStackの関係
 
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
 
Ansible meetuptokyo 2015 Dynamic Inventory
Ansible meetuptokyo 2015 Dynamic InventoryAnsible meetuptokyo 2015 Dynamic Inventory
Ansible meetuptokyo 2015 Dynamic Inventory
 
OpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? WayOpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? Way
 
ProjectAtomic-and-geard
ProjectAtomic-and-geardProjectAtomic-and-geard
ProjectAtomic-and-geard
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
OpenStackSDK with Ansible
OpenStackSDK with AnsibleOpenStackSDK with Ansible
OpenStackSDK with Ansible
 
How to contribute AWX
How to contribute AWXHow to contribute AWX
How to contribute AWX
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
 
DevStackで始めるCloud FoundryとBOSH
DevStackで始めるCloud FoundryとBOSHDevStackで始めるCloud FoundryとBOSH
DevStackで始めるCloud FoundryとBOSH
 
Webアプリケーションによる電源管理システムのご紹介
Webアプリケーションによる電源管理システムのご紹介Webアプリケーションによる電源管理システムのご紹介
Webアプリケーションによる電源管理システムのご紹介
 
OpenStack Osloを使おう - cliff編
OpenStack Osloを使おう - cliff編OpenStack Osloを使おう - cliff編
OpenStack Osloを使おう - cliff編
 
nginx入門
nginx入門nginx入門
nginx入門
 
Terraform Bootcamp - Azure Infrastructure as Code隊
Terraform Bootcamp - Azure Infrastructure as Code隊Terraform Bootcamp - Azure Infrastructure as Code隊
Terraform Bootcamp - Azure Infrastructure as Code隊
 
Node.jsv0.8からv4.xへのバージョンアップ ~大規模Push通知基盤の運用事例~
Node.jsv0.8からv4.xへのバージョンアップ ~大規模Push通知基盤の運用事例~Node.jsv0.8からv4.xへのバージョンアップ ~大規模Push通知基盤の運用事例~
Node.jsv0.8からv4.xへのバージョンアップ ~大規模Push通知基盤の運用事例~
 
Ansible npstudy-shtsuchi
Ansible npstudy-shtsuchiAnsible npstudy-shtsuchi
Ansible npstudy-shtsuchi
 
Kubernetes をいじって Hardware LoadBalancer で "type LoadBalancer" を実現してみた @Kuberne...
Kubernetes をいじって Hardware LoadBalancer で "type LoadBalancer" を実現してみた @Kuberne...Kubernetes をいじって Hardware LoadBalancer で "type LoadBalancer" を実現してみた @Kuberne...
Kubernetes をいじって Hardware LoadBalancer で "type LoadBalancer" を実現してみた @Kuberne...
 
Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...
Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...
Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...
 
Cloud Foundry varz
Cloud Foundry varzCloud Foundry varz
Cloud Foundry varz
 

Similar to st2-docker ことはじめ

BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドAkihiro Suda
 
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月VirtualTech Japan Inc.
 
Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container ClusterオーケストレーションKubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container ClusterオーケストレーションTakashi Kanai
 
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版VirtualTech Japan Inc.
 
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Preferred Networks
 
20150101勉強会 dokku alt
20150101勉強会 dokku alt20150101勉強会 dokku alt
20150101勉強会 dokku altShugo Numano
 
今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門Toru Miyahara
 
WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築Saito5656
 
20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会samemoon
 
Introduction of skippbox
Introduction of skippboxIntroduction of skippbox
Introduction of skippboxGo Chiba
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)NTT DATA Technology & Innovation
 
ヤギにサーバーを管理してもらう話
ヤギにサーバーを管理してもらう話ヤギにサーバーを管理してもらう話
ヤギにサーバーを管理してもらう話Masaki Kobayashi
 
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINARVirtualTech Japan Inc.
 
今さら聞けない人のためのDocker超入門 - KOF
今さら聞けない人のためのDocker超入門 - KOF今さら聞けない人のためのDocker超入門 - KOF
今さら聞けない人のためのDocker超入門 - KOFVirtualTech Japan Inc.
 
Traffic Management with Istio
Traffic Management with IstioTraffic Management with Istio
Traffic Management with Istioロフト くん
 
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例maebashi
 
Docker & Kubernetes基礎
Docker & Kubernetes基礎Docker & Kubernetes基礎
Docker & Kubernetes基礎Daisuke Hiraoka
 
Introduction to Magnum (JP)
Introduction to Magnum (JP)Introduction to Magnum (JP)
Introduction to Magnum (JP)Motohiro OTSUKA
 
PTLのお仕事とリリースパイプラインの裏側
PTLのお仕事とリリースパイプラインの裏側PTLのお仕事とリリースパイプラインの裏側
PTLのお仕事とリリースパイプラインの裏側masahito12
 

Similar to st2-docker ことはじめ (20)

BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
 
Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container ClusterオーケストレーションKubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
 
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
今さら聞けない人のためのDocker超入門 CentOS 7.2対応版
 
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
 
20150101勉強会 dokku alt
20150101勉強会 dokku alt20150101勉強会 dokku alt
20150101勉強会 dokku alt
 
今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門
 
WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築
 
20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会20130803 OSC@Kyoto CloudStackユーザー会
20130803 OSC@Kyoto CloudStackユーザー会
 
Introduction of skippbox
Introduction of skippboxIntroduction of skippbox
Introduction of skippbox
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
 
ヤギにサーバーを管理してもらう話
ヤギにサーバーを管理してもらう話ヤギにサーバーを管理してもらう話
ヤギにサーバーを管理してもらう話
 
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR
 
今さら聞けない人のためのDocker超入門 - KOF
今さら聞けない人のためのDocker超入門 - KOF今さら聞けない人のためのDocker超入門 - KOF
今さら聞けない人のためのDocker超入門 - KOF
 
Traffic Management with Istio
Traffic Management with IstioTraffic Management with Istio
Traffic Management with Istio
 
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例
 
Docker & Kubernetes基礎
Docker & Kubernetes基礎Docker & Kubernetes基礎
Docker & Kubernetes基礎
 
Introduction to Magnum (JP)
Introduction to Magnum (JP)Introduction to Magnum (JP)
Introduction to Magnum (JP)
 
PTLのお仕事とリリースパイプラインの裏側
PTLのお仕事とリリースパイプラインの裏側PTLのお仕事とリリースパイプラインの裏側
PTLのお仕事とリリースパイプラインの裏側
 
今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門今さら聞けない人のためのDocker超入門
今さら聞けない人のためのDocker超入門
 

st2-docker ことはじめ

  • 1. INTERNET MULTIFEED CO.Copyright © st2-docker ことはじめ Shu Sugimoto JPNAP / INTERNET MULTIFEED CO. @st2勉強会#4 2018-05-29(Tue)
  • 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