Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Rails_on_EKSのマイグレーション_失敗パターンを検証してみた
Search
納谷太陽
PRO
September 25, 2025
0
290
Rails_on_EKSのマイグレーション_失敗パターンを検証してみた
納谷太陽
PRO
September 25, 2025
Tweet
Share
More Decks by 納谷太陽
See All by 納谷太陽
Kubernetesを手元で学ぼう! 初心者向けローカル環境のススメ
nayaaaa
PRO
2
1.4k
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
The Cult of Friendly URLs
andyhume
79
6.7k
Context Engineering - Making Every Token Count
addyosmani
9
500
The Pragmatic Product Professional
lauravandoore
37
7.1k
KATA
mclloyd
PRO
32
15k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Bash Introduction
62gerente
615
210k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Transcript
Rails on EKS マイグレーション 失敗パターンを検証してみた SATORI株式会社 納谷太陽
自己紹介 @NayaTaiyo • 年齢:25歳 • 会社:SATORI株式会社 • 好きな食べ物:ラーメン、カレー • 趣味:音楽を聴くこと
• 好きな技術:Ansible、Kubernetes、AWS • Qiita:@nayaaaa • GitHub:nayataiyo
なぜやろうと思ったか? • 最近転職してRailsを学習する必要がある • ITインフラ 勉強もサボるわけに いかない 何か効率 良い方法 ないか
🤔 そういえ Kubernetes勉強したときにITインフラについて 網羅的に学習できた気がしたな....
None
Rails マイグレーションと ? マイグレーション(migration) Active Recordと呼 れるRails 標準機能 1つで あり、データベーススキーマが長期にわたって進化を安定して繰り返せるようにす
るため 仕組みです。 マイグレーション機能 おかげで、スキーマ変更を生SQLで記述せずに、Rubyで作 成されたマイグレーション用 DSL(ドメイン固有言語)を用いてテーブル 変更を 簡単に記述できます。 ▪ 公式ドキュメント https://railsguides.jp/active_record_migrations.html
# 失敗時:直近に戻す→確認 bin/rails rollback STEP=1 bin/rails db:version # 生成→適用→確認 bin/rails
g model novice name:string description:text bin/rails db:migrate bin/rails db:version # 変更(列追加)→適用→確認 bin/rails g migration AddNayanayaToNovices nayanaya:text bin/rails db:migrate bin/rails db:version
というようにめちゃくちゃ便利な機能です!! で 本題 失敗パターン ど ようなも がある かな?
Rails on EKSマイグレーション 失敗パターン • 複数 db:migrateが同時実行 • InitContainerにdb:migrateを記述する •
Resource不足で OOMKilled ※他にも様々なパターン(IAM権限やDB権限不足など)が あるかもしれないですが検証まで行えた これらになります。
複数 db:migrateが同時実行 • Deployment マニフェストに以下 ような記述をして applyすると?
Datadogで確認すると以下 ようなエラーを発見 👀
結果めちゃくちゃ時間がかかった....
InitContainerにdb:migrateを記述 • 何がまずいか? ◦ InitContainerでdb:migrateがこけるとアプリケーションコンテナが起動しな い ◦ 複数 db:migrateも同時実行されてしまう ◦
エラーが発生した際にログ 確認がしづらい
そもそもInitcontainerってなんだっけ? 単一 Pod 、Pod内にアプリケーションを実行している複数 コ ンテナを持つことができますが、同様に、アプリケーションコンテナ が起動する前に実行されるInitコンテナも1つ以上持つことができ ます。 また、Initコンテナ そ
Pod 準備ができる前に完了する必要 があります。 ▪ 公式ドキュメント https://kubernetes.io/ja/docs/concepts/workloads/pods/init-containers/
実際にInitcontainerでこけた例👇
None
Resource 不足で OOMKilled • 何がまずいか? ◦ resources:limits 制限によりOOMKilled発生 ◦ OOMKilledによりPODがCrashLoopBackOffとなる
OOMとresources:limitsと ? OOM アウトオブメモリ(Out Of Memory) 略でシステムが必要 とするメモリ容量を確保できず、処理 続行が不可能となり発生 するエラー
こと。 resources:limits Kubernetesで 、コンテナによって使用される リソース 最大量 設定値 こと。メモリ量とCPUが定義できる。 ▪ 公式ドキュメント https://kubernetes.io/ja/docs/tasks/configure-pod-container/assign-memory-res ource/
• OOMKilled→ClashLoopBackOFFにSTATUSが変化している kubectl getコマンドで確認してみると 👀
kubectl describeコマンドで確認してみると 👀
適切なリソース 調整が必要 or resources:limitsを設定しない?
余談な ですが.... 登壇って失敗パターンを見える化してる発表ってあんまりないですよ ?
まとめ • db:migrate ジョブで分離し、CI/CDなどで制御する。 • 適切なリソース 調整が必要 • 初めて オンライン登壇
👏 👉 初めて触る技術が多かった で学びが多かった 良かったです。 と いえ、実務で扱っているわけで ない で有識者 方ナレッジ募です。
Datadog トライアル期間終了 • お気づきかもしれないですが、検証途中でDatadog トライア ル期間が終了した で途中 スライドからkubectlコマンドで 確認する形としています😭 Proプランに入会しようかなぁ....
参考リンク • https://kubernetes.io/ja/docs/concepts/workloads/pods/init-containers/ • https://kubernetes.io/ja/docs/tasks/configure-pod-container/assign-memor y-resource/ • https://speakerdeck.com/takeru_ichii_0901/rails-on-kubernetes-tousuru-00?sli de=58 •
https://qiita.com/MahoTakara/items/ef8ce41dfb5bc9308185 • https://medium.com/codex/database-migration-when-your-service-is-runni ng-in-kubernetes-abbe9697421d
ご清聴ありがとうございました!!