Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Dockerとk8s, helmをTwelve Factor Appsの観点 からざっくり整理
Search
Recruit Technologies
July 19, 2018
Technology
3
410
Dockerとk8s, helmをTwelve Factor Appsの観点 からざっくり整理
2018/07/19 Docker Meetup Tokyo #24での、藤原の講演資料になります
Recruit Technologies
July 19, 2018
Tweet
Share
More Decks by Recruit Technologies
See All by Recruit Technologies
障害はチャンスだ! 障害を前向きに捉える
rtechkouhou
1
700
Flutter移行の苦労と、乗り越えた先に得られたもの
rtechkouhou
3
12k
ここ数年間のタウンワークiOSアプリのエンジニアのチャレンジ
rtechkouhou
1
1.5k
大規模環境をAWS Transit Gatewayで設計/移行する前に考える3つのポイントと移行への挑戦
rtechkouhou
1
1.9k
【61期 新人BootCamp】TOC入門
rtechkouhou
3
42k
【RTC新人研修 】 TPS
rtechkouhou
1
41k
Android Boot Camp 2020
rtechkouhou
0
41k
HTML/CSS
rtechkouhou
10
51k
TypeScript Bootcamp 2020
rtechkouhou
9
46k
Other Decks in Technology
See All in Technology
IPA&AWSダブル全冠が明かす、人生を変えた勉強法のすべて
iwamot
PRO
2
150
Should Our Project Join the CNCF? (Japanese Recap)
whywaita
PRO
0
340
SaaS型なのに自由度の高い本格CMSでサイト構築と運用のコスパ&タイパUP! MovableType.net の便利機能とユーザー事例のご紹介
masakah
0
110
タイミーのデータモデリング事例と今後のチャレンジ
ttccddtoki
6
2.4k
Yahoo!しごとカタログ 新しい境地を創るエンジニア募集!
lycorptech_jp
PRO
0
110
無意味な開発生産性の議論から抜け出すための予兆検知とお金とAI
i35_267
4
13k
使いたいMCPサーバーはWeb APIをラップして自分で作る #QiitaBash
bengo4com
0
1.9k
AWS認定を取る中で感じたこと
siromi
1
190
AI専用のリンターを作る #yumemi_patch
bengo4com
5
4.3k
ビズリーチが挑む メトリクスを活用した技術的負債の解消 / dev-productivity-con2025
visional_engineering_and_design
3
7.7k
MUITにおける開発プロセスモダナイズの取り組みと開発生産性可視化の取り組みについて / Modernize the Development Process and Visualize Development Productivity at MUIT
muit
1
17k
Operating Operator
shhnjk
1
590
Featured
See All Featured
Embracing the Ebb and Flow
colly
86
4.7k
4 Signs Your Business is Dying
shpigford
184
22k
Done Done
chrislema
184
16k
KATA
mclloyd
30
14k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
510
GitHub's CSS Performance
jonrohan
1031
460k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Being A Developer After 40
akosma
90
590k
Visualization
eitanlees
146
16k
Code Review Best Practice
trishagee
69
18k
Faster Mobile Websites
deanohume
307
31k
Automating Front-end Workflow
addyosmani
1370
200k
Transcript
Dockerとk8s, helm をTwelve Factor Appsの観点 からざっくり整理 (Docker Meetup Tokyo #24LT資料)
1 (C) Recruit TechnologiesCo.,Ltd. All rights reserved.
最初に 2 (C) Recruit Technologies Co.,Ltd. All rights reserved.
最初に 3 (C) Recruit Technologies Co.,Ltd. All rights reserved.
最初に 4 (C) Recruit Technologies Co.,Ltd. All rights reserved. ではないです。(ごめんなさい)
注意事項 5 (C) Recruit Technologies Co.,Ltd. All rights reserved. 本発表の内容は個⼈の⾒解であり、
所属組織としての⾒解を表すものではありません。
⾃⼰紹介 藤原 涼⾺ 株式会社リクルートテクノロジーズ ITE本部 SRE部 ISEG 経歴 2011-2015ユーザ系SIer にてR&D
2016/1〜 リクルートテクノロジーズに⼊社 主な活動(社内外含む) • コンテナを中⼼とした先進アーキテクチャの事業への装着 • Rancher JPコアメンバー • 寄稿(@IT 先⾏事例に学ぶKubernetes 企業活⽤の現実) 趣味 勉強会で⾊々喋る ⼦供と遊ぶ 6 (C) Recruit Technologies Co.,Ltd. All rights reserved.
本LTの意図 をみていて、ふとTwelve-Factor appの原則とDocker, Kubernetes, Helmの関係を復習も兼ねて整理したくなっ たのでトライしてみました。 7 (C) Recruit Technologies
Co.,Ltd. All rights reserved. https://12factor.net/ ຊMSAຊEffective DevopsͳͲབྷΊͯཧ͍ͨ͠
(前提の確認)Twelve-Factor appについて (1/2) • Heroku上でSaaSアプリケーションを作るためのプラク ティスをまとめたもの。 • Heroku⾃体がコンテナとの関係も深い 8 (C)
Recruit Technologies Co.,Ltd. All rights reserved.
(前提の確認)Twelve-Factor appについて (2/2) 1. コードベース 2. 依存関係 3. 設定 4.
バックエンドサービス 5. ビルド・リリース・実⾏ 6. プロセス 9 (C) Recruit Technologies Co.,Ltd. All rights reserved. 7. ポートバインディング 8. 並⾏性 9. 廃棄容易性 10.開発/本番⼀致 11.ログ 12.管理プロセス
1. コードベース 同じコードベース(リポジトリ)を起源とする 10 (C) Recruit Technologies Co.,Ltd. All rights
reserved. Docker Kubernetes Helm それぞれのツールがコードで 主に管理する範囲を整理 狭 広 ୯Ұͷ ίϯςφ ෳίϯςφ ؒͷؔ νϟʔτ (k8s্Ͱఆٛ͞Εͨ ෳΞϓϦέʔγϣϯͷؔ)
2. 依存関係 依存関係を明⽰的に宣⾔し分離する 11 (C) Recruit Technologies Co.,Ltd. All rights
reserved. Docker Kubernetes Helm それぞれのツールの中で宣⾔する依存関係を整理 コンテナイメージ間 リソース定義間 チャート間 Dockerfile • FROM句 • マルチステージビルド Deployment ReplicaSet Pod (コンテナ & コンテナイメージ) Service 親チャート ⼦チャート ) ) ) & ) ( ) ) requirements.yaml charts/
3. 環境 設定を環境変数に格納する 12 (C) Recruit Technologies Co.,Ltd. All rights
reserved. Docker Kubernetes Helm それぞれのツールの中で宣⾔される依存関係を整理 1. Dockerfile • ENV 2. docke run -e 1. ConfigMap 2. Secrets 1. values.yaml
4. バックエンドサービス バックエンドサービスをアタッチされたリソースとして扱う 13 (C) Recruit Technologies Co.,Ltd. All rights
reserved. 環境変数を使ってバックエンドサービスは切り替えする (またはDNSをうまく活⽤、認証情報は後述)
5. ビルド・リリース・実⾏ ビルド、リリース、実⾏の3つのステージを厳密に分離する 14 (C) Recruit Technologies Co.,Ltd. All rights
reserved. Docker (docker) Kubernetes (kubectl) Helm (helm) ビルド リリース 実⾏ Helm͋Γ Helmͳ͠ kubectl apply –f … kubectl create –f … docker build helm package? helm install helm upgrade ຌྫ
6. プロセス よくあるDockerのベストプラクティスを守る 1. 1 コンテナ = 1プロセス 2. ステートレス
& シェアードナッシング* 15 (C) Recruit Technologies Co.,Ltd. All rights reserved. *ͨͩ͠ɺ2ʹ͍ͭͯࠓޙͷঢ়گʹΑͬͯগͮͭ͠มΘΔ͔
7.ポートバインディング ポートバインディングを通してサービスを公開する 16 (C) Recruit Technologies Co.,Ltd. All rights reserved.
Docker Kubernetes Helm Dockerfileͷ EXPOSE۟ (ͲͷϙʔτͰListenͯ͠Δ͔) ServiceϦιʔε (ϙʔτόΠϯσΟϯάΛఆٛ) k8sϦιʔεͷ ςϯϓϨʔςΟϯάΛհͯ͠ ϙʔτόΠϯσΟϯάΛ੍ޚ
8. 並⾏性 プロセスモデルによってスケールアウトする 17 (C) Recruit Technologies Co.,Ltd. All rights
reserved. Docker Kubernetes Helm Deploymentsɺ Replicasetͷ ϨϓϦΧมߋʹ Α੍ͬͯޚ k8sͱಉ͡ͷΛ helm upgrade + values.yaml(ͳͲ) ʹΑ੍ͬͯޚ ରԠ͢Δ ػೳͳ͠ (swarmは⼀旦スコープ外)
9.廃棄容易性 コンテナ前提なので割愛 SIGTERMのハンドリングについて注意 18 (C) Recruit Technologies Co.,Ltd. All rights
reserved.
10. 開発・本番⼀致 開発、ステージング、本番環境をできるだけ⼀致させた状 態を保つ 19 (C) Recruit Technologies Co.,Ltd. All
rights reserved. Docker Kubernetes Helm (環境間で)何の差異を無くすか、 何の差異をカバーしてくれるかを整理 コンテナ イメージ 差異を無くして くれるもの コンテナ構成 カバーするもの 環境変数・機密情報など (with ConfigMap, Secrets) 凡例 + α
11. ログ STDOUT/STDERRに出⼒して集約 • オンプレ • ELKスタックなどを活⽤ • パブリッククラウド •
AWS … CloudWatch Logs, Elasticsearch • GCP … StackDriver Logs 20 (C) Recruit Technologies Co.,Ltd. All rights reserved. 本番運⽤だと必須
12. 管理プロセス 管理タスクを1回限りのプロセスとして実⾏する (例えば、RoRにおける rake db:migrate など) 21 (C) Recruit
Technologies Co.,Ltd. All rights reserved. Docker Kubernetes Helm Job, CronJob の利⽤ docker run --rm … ない
まとめ(1/3) Twelve Factor Appの考え⽅ × Docker, k8s, Helm で個々のツールの役割や関係を整理しました。 22
(C) Recruit Technologies Co.,Ltd. All rights reserved.
まとめ (2/3) • 開発の中で出てきた要件をどのツールに担わせるべきか、 といった判断に役⽴てることができそうです • そもそもこれ全部必要なんだっけ?ということも改めて 整理できそうです • ツールセットの隙間(抜け漏れ)を⾒つけられることがあ
るので良いかもしれません • とはいえ単⼀の考え⽅のみだと不⾜は明らかなので複数の観点か らの確認は必要です 23 (C) Recruit Technologies Co.,Ltd. All rights reserved. *ݸਓతʹTwelve Factor Apps ϓϩμΫγϣϯϨσΟϚΠΫϩαʔϏε͕ ཧʹΦεεϝͰ͢ɻ
まとめ(3/3) • “こんな感じで整理して理解してるよ”という⽅、懇親会 にて是⾮ディスカッションさせてください! 24 (C) Recruit Technologies Co.,Ltd. All
rights reserved.