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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
760
Flutter移行の苦労と、乗り越えた先に得られたもの
rtechkouhou
3
12k
ここ数年間のタウンワークiOSアプリのエンジニアのチャレンジ
rtechkouhou
1
1.6k
大規模環境をAWS Transit Gatewayで設計/移行する前に考える3つのポイントと移行への挑戦
rtechkouhou
1
2k
【61期 新人BootCamp】TOC入門
rtechkouhou
3
42k
【RTC新人研修 】 TPS
rtechkouhou
1
41k
Android Boot Camp 2020
rtechkouhou
0
41k
HTML/CSS
rtechkouhou
10
52k
TypeScript Bootcamp 2020
rtechkouhou
9
46k
Other Decks in Technology
See All in Technology
(Test) ai-meetup slide creation
oikon48
3
430
DevOpsエージェントで実現する!! AWS Well-Architected(W-A) を実現するシステム設計 / 20260307 Masaki Okuda
shift_evolve
PRO
3
940
JAWSDAYS2026_A-6_現場SEが語る 回せるセキュリティ運用~設計で可視化、AIで加速する「楽に回る」運用設計のコツ~
shoki_hata
0
3k
AWS CDK「読めるけど書けない」を脱却するファーストステップ
smt7174
3
160
visionOS 開発向けの MCP / Skills をつくり続けることで XR の探究と学習を最大化
karad
1
470
決済サービスを支えるElastic Cloud - Elastic Cloudの導入と推進、決済サービスのObservability
suzukij
2
660
ソフトバンク流!プラットフォームエンジニアリング実現へのアプローチ
sbtechnight
1
180
NewSQL_ ストレージ分離と分散合意を用いたスケーラブルアーキテクチャ
hacomono
PRO
4
380
身体を持ったパーソナルAIエージェントの 可能性を探る開発
yokomachi
1
130
アーキテクチャモダナイゼーションを実現する組織
satohjohn
1
1.1k
Postman v12 で変わる API開発ワークフロー (Postman v12 アップデート) / New API development workflow with Postman v12
yokawasa
0
140
Zeal of the Convert: Taming Shai-Hulud with AI
ramimac
0
150
Featured
See All Featured
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.1k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
770
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
290
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
270
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
140
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
How Software Deployment tools have changed in the past 20 years
geshan
0
33k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Darren the Foodie - Storyboard
khoart
PRO
3
2.9k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
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.