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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Recruit Technologies
July 19, 2018
Technology
420
3
Share
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
770
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
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
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
100k
サンプリングは「作る」のか「使う」のか? 分散トレースのコストと運用を両立する実践的戦略 / Why you need the tail sampling and why you don't want it
ymotongpoo
4
190
CARTA HOLDINGS エンジニア向け 採用ピッチ資料 / CARTA-GUIDE-for-Engineers
carta_engineering
0
47k
エムスリーテクノロジーズ株式会社 エンジニア向け紹介資料 / M3 Technologies Company Deck
m3_engineering
0
180
GCASアップデート(202603-202605)
techniczna
0
200
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.5k
AWS運用におけるAI Agent活用術 / JAWS-UG 神戸 #11 LT大会
genda
1
290
AsyncStreamでマルチブロードキャストを実装する
1mash0
1
110
20260515 ⾃分のアカウントとプライバシーを守る認証と認可の話〜利⽤者向け〜
oidfj
0
660
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
1.7k
AI 時代の Platform Engineering
recruitengineers
PRO
1
210
障害対応のRunbookは作った、でも本当に動くの? AWS FIS で EKS の AZ 障害を再現してみた
tk3fftk
0
100
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
225
10k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Optimising Largest Contentful Paint
csswizardry
37
3.7k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
360
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.3k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Raft: Consensus for Rubyists
vanstee
141
7.4k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
The Limits of Empathy - UXLibs8
cassininazir
1
330
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
560
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.