Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Dockerとk8s, helmをTwelve Factor Appsの観点 からざっくり整理
Search
Recruit Technologies
July 19, 2018
Technology
430
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Dockerとk8s, helmをTwelve Factor Appsの観点 からざっくり整理
2018/07/19 Docker Meetup Tokyo #24での、藤原の講演資料になります
Recruit Technologies
July 19, 2018
More Decks by Recruit Technologies
See All by Recruit Technologies
障害はチャンスだ! 障害を前向きに捉える
rtechkouhou
1
800
Flutter移行の苦労と、乗り越えた先に得られたもの
rtechkouhou
3
12k
ここ数年間のタウンワークiOSアプリのエンジニアのチャレンジ
rtechkouhou
1
1.6k
大規模環境をAWS Transit Gatewayで設計/移行する前に考える3つのポイントと移行への挑戦
rtechkouhou
1
2k
【61期 新人BootCamp】TOC入門
rtechkouhou
3
43k
【RTC新人研修 】 TPS
rtechkouhou
1
42k
Android Boot Camp 2020
rtechkouhou
0
42k
HTML/CSS
rtechkouhou
10
52k
TypeScript Bootcamp 2020
rtechkouhou
9
46k
Other Decks in Technology
See All in Technology
#jawssonic2026 あの時代が悪かった ~動かなかったSageMakerと共に迎えたイベント当日~
ktkn1129
0
150
2026_devsumi_ozono.pdf
o3
3
450
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
290
俺の仕事は AIに奪われないし、たぶんその BIも要らない
hikaruri
0
350
絵ではじめるKubernetesセキュリティ
aoi1
3
310
GoCon2026 - Open Source, Open World
sanposhiho
4
3.5k
コスト最適化の「めんどくさい」を AWS FinOps Agent でチョット楽にする
classmethod_kaz
0
330
Snowflakeのコスト最適化を支えるアーキテクチャ設計
ktatsuya
1
1.5k
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
1
790
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
12k
ASTを使って影響範囲を特定する
nealle
0
180
コーディングエージェントでM5Stack系の開発を少し試した時の話 / M5 Japan Tour 2026 Autumn 東京
you
PRO
0
190
Featured
See All Featured
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
520
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
Chasing Engaging Ingredients in Design
codingconduct
0
310
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
990
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Between Models and Reality
mayunak
4
450
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.2k
Fireside Chat
paigeccino
43
4k
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.