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
ウォンテッドリーにおけるk8sマニフェストの管理方法
Search
Ken Kato
November 20, 2024
0
220
ウォンテッドリーにおけるk8sマニフェストの管理方法
Ken Kato
November 20, 2024
Tweet
Share
More Decks by Ken Kato
See All by Ken Kato
初めてのPostgreSQLメジャーバージョンアップ
kkato1
0
360
ウォンテッドリーのマイクロサービス運用・開発を加速する kube
kkato1
0
120
PostgreSQLのVACUUMとは
kkato1
3
3.2k
論理レプリケーションを使ったDB統合
kkato1
0
710
DNSルックアップの回数制限でハマった話
kkato1
1
440
入社後初めてのタスクでk8sアップグレードした話.pdf
kkato1
1
680
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
133
9.2k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
22
2.6k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Agile that works and the tools we love
rasmusluckow
328
21k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
227
22k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Large-scale JavaScript Application Architecture
addyosmani
511
110k
We Have a Design System, Now What?
morganepeng
51
7.5k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
KATA
mclloyd
29
14k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.6k
Transcript
© 2024 Wantedly, Inc. ウォンテッドリーにおける k8sマニフェストの管理方法 Wantedly Tech Night ~サービスを支えるインフラ
/SRE技術~ Nov. 20 2024 - Ken Kato
© 2024 Wantedly, Inc. 自己紹介 加藤 健 Infra Squad 2024年1月
中途入社 X: @kkato25
© 2024 Wantedly, Inc. 目次 • ウォンテッドリーが選んだ管理方法 • 運用における課題 •
振り返り
© 2024 Wantedly, Inc. ウォンテッドリーが選んだ管理方法
© 2024 Wantedly, Inc. 前提 • ウォンテッドリーのシステムはk8sクラスタ上で動いている
© 2024 Wantedly, Inc. monorepo と polyrepo k8sマニフェストをGit管理する時、その管理方法は2種類に大別される • monorepo:単一リポジトリで管理する
• polyrepo:アプリケーション毎のリポジトリで管理する monorepo polyrepo
© 2024 Wantedly, Inc. monorepo • メリット ◦ フォーマットを統一しやすい ◦
一括変更がしやすい • デメリット ◦ アクセス制御が複雑
© 2024 Wantedly, Inc. polyrepo • メリット ◦ 柔軟なアクセス制御 •
デメリット ◦ フォーマットを統一しにくい ◦ 一括変更がしにくい
© 2024 Wantedly, Inc. ウォンテッドリーが選んだ管理方法 ウォンテッドリーでは「polyrepo」を採用
© 2024 Wantedly, Inc. Why セルフサービス化を推進したい セルフサービス化:開発者自身で必要なインフラのリソースを作成、管理すること • アプリケーションコードと同じレポジトリで k8sマニフェストを管理することにより、イン
フラではなく開発チームの管轄となる • インフラがボトルネックにならず、開発が高速に回るようにしたい
© 2024 Wantedly, Inc. How • アプリケーションコードと同じレポジトリでk8sマニフェストを管理する • kubernetesというディレクトリを切って、環境毎にk8sマニフェストを置く People
Visit Engagement ├── app ├── bin ├── config └── kubernetes ├── prod ├── qa └── sandbox ├── app ├── bin ├── config └── kubernetes ├── prod ├── qa └── sandbox ├── app ├── bin ├── config └── kubernetes ├── prod ├── qa └── sandbox
© 2024 Wantedly, Inc. 運用における課題
© 2024 Wantedly, Inc. 課題① フォーマットが統一されていない • アプリケーション毎、環境毎の差分が分かりにくい • ミスに気づきづらい
• 認知負荷が高い
© 2024 Wantedly, Inc. 対策① テンプレート化する • kube generateコマンドという独自CLIツールを作成し、k8sマニフェストを自動生 成できるようにした
• 自動生成されていないk8sマニフェストは基本的にCIではじかれる % cat kube-generate.yaml generates: - namespace: clusters: - sandbox % kube generate --update Generate manifests by using kube-generate.yaml kubernetes/sandbox/namespace.yaml
© 2024 Wantedly, Inc. 課題② 一括変更が難しい • レポジトリをまたいだ変更が難しい ◦ k8s
APIの廃止など
© 2024 Wantedly, Inc. 対策② 一括変更できる仕組みを設ける • kube generateコマンドの元となるテンプレートを変更する •
日次でGitHub Actionsのworkflowを実行し、kube generateコマンドを実行 する
© 2024 Wantedly, Inc. 振り返り
© 2024 Wantedly, Inc. セルフサービス化は進んだのか • セルフサービス化は進んだ ◦ 開発者自身でk8sマニフェストを生成している
© 2024 Wantedly, Inc. polyrepoにしていたことでセルフサービス化が進んだのか • polyrepoがよかった点 ◦ k8sマニフェストが開発チームの管轄になる ◦
開発チーム内でレビューが完結する • polyrepo以外でよかった点 ◦ k8sマニフェストを自動生成できるようになり、開発者の学習コストが減った 開発者が扱いやすいような工夫をすれば、管理方法に関わらずセルフサービス化を推 進することは可能
© 2024 Wantedly, Inc. まとめ • ウォンテッドリーではセルフサービス化を推進するために、polyrepoを採用してい る • 運用面で課題があり、独自の仕組みを整えている
◦ テンプレート化 ◦ 一括変更 • 開発者が扱いやすいように工夫をしたことで、セルフサービス化が進んだ