Slide 1

Slide 1 text

Apr 16th, 2021 DevOpsDays Tokyo 2021 Hidekazu Miyamoto C2C Service Development Section. Rakuten Group, Inc. ラクマとGitHub ActionsとGitOps

Slide 2

Slide 2 text

2 Hidekazu Miyamoto Tech Lead, Rakuma SRE Team Hello!

Slide 3

Slide 3 text

3

Slide 4

Slide 4 text

4 ラクマSREについて ラクマSREチームについて

Slide 5

Slide 5 text

5 SREチームの任務 • サービスを提供するインフラシステムの設計・構築・運⽤ • 24/365のサービスの安定稼働 • パフォーマンスチューニング • ⼈でスケールするのではなく、システムでスケールさせること

Slide 6

Slide 6 text

6 チーム構成 • ⼈数はエンジニア全体に対して約10% • 複数あるチームを横断して開発をサポート • 別チームにジョインして⼀緒に開発することもある

Slide 7

Slide 7 text

7 課題 • 新たな機能をどんどん追加してサービスを成⻑させないといけない時期 • 新機能追加時の構成相談や、設定変更依頼、インフラに関する問い合わせが増加 • 並⾏して、サービスの稼働率の担保、監視、障害対応や運⽤負荷を軽減する為の開発も⾏わないといけない

Slide 8

Slide 8 text

8 課題 • 新たな機能をどんどん追加してサービスを成⻑させないといけない時期 • 新機能追加時の構成相談や、設定変更依頼、インフラに関する問い合わせが増加 • 並⾏して、サービスの稼働率の担保、監視、障害対応や運⽤負荷を軽減する為の開発も⾏わないといけない

Slide 9

Slide 9 text

9 監査の証跡集めに必要なもの • いつ、誰が、どのような変更をしたのか • 責任者の承認をえた上で変更作業を実施しているのか

Slide 10

Slide 10 text

10

Slide 11

Slide 11 text

11 Photo by Yancy Min on Unsplash https://unsplash.com/photos/842ofHC6MaI

Slide 12

Slide 12 text

監査側で求められているもの GitHub等で⾏っている事 いつ、誰が、どのような変更をしたのか コードで管理されていれば、詳細な変更管理が可能 また、PullRequest作成時に経緯等を記録することが可能 責任者の承認をえた上で変更作業を実施している のか main branch にマージするタイミングでコードオーナー の承認をもらってリリースを⾏う

Slide 13

Slide 13 text

13 ラクマSREについて GitHub Actionsを使った Terraformの実⾏環境の仕組み

Slide 14

Slide 14 text

14 実現したい事

Slide 15

Slide 15 text

15 実現したい事

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

18 ラクマSREについて Kubernetesのリソース管理を どのようなGitHub Actionsを組み合わせて GitOps化したか

Slide 19

Slide 19 text

19 実現したい事

Slide 20

Slide 20 text

20 実現したい事

Slide 21

Slide 21 text

21 実現したい事

Slide 22

Slide 22 text

22 実現したい事 • コンテナをビルドしてコンテナレジストリにプッシュする • 複数のレポジトリをチェックアウトする • Kubernetesのマニフェストファイルを更新する • 変更したマニフェストファイルに対してPull Requestを作成する

Slide 23

Slide 23 text

23 コンテナをビルドしてコンテナレジストリにプッシュする

Slide 24

Slide 24 text

24 コンテナをビルドしてコンテナレジストリにプッシュする

Slide 25

Slide 25 text

25 コンテナをビルドしてコンテナレジストリにプッシュする

Slide 26

Slide 26 text

26 コンテナをビルドしてコンテナレジストリにプッシュする

Slide 27

Slide 27 text

27 コンテナをビルドしてコンテナレジストリにプッシュする

Slide 28

Slide 28 text

28 複数のレポジトリをチェックアウトする

Slide 29

Slide 29 text

29 複数のレポジトリをチェックアウトする

Slide 30

Slide 30 text

30 Kubernetesのマニフェストファイルを更新する

Slide 31

Slide 31 text

31 変更したマニフェストファイルに対してPull Requestを作成する

Slide 32

Slide 32 text

32 変更したマニフェストファイルに対してPull Requestを作成する

Slide 33

Slide 33 text

33 変更したマニフェストファイルに対してPull Requestを作成する

Slide 34

Slide 34 text

34 IaCを⾏う上でのブランチ戦略の 考慮ポイント

Slide 35

Slide 35 text

35

Slide 36

Slide 36 text

36

Slide 37

Slide 37 text

37

Slide 38

Slide 38 text

38 ブランチ戦略 Pattern1

Slide 39

Slide 39 text

39 ブランチ戦略 Pattern1 • Pros • ブランチが固定になっている為わかりやすい • Cons • overlaysの対応を⾏う時に他のbranchへのマージ漏れが 出てくる可能性がある

Slide 40

Slide 40 text

40

Slide 41

Slide 41 text

41 ブランチ戦略 Pattern2

Slide 42

Slide 42 text

42 ブランチ戦略 Pattern2 • Pros • ブランチが固定になっている為わかりやすい • Pattern1で懸念していたマージ漏れは回避できる • Cons • 対応するフローが多く⾯倒

Slide 43

Slide 43 text

43

Slide 44

Slide 44 text

44 ブランチ戦略 Pattern3 - overlay更新時

Slide 45

Slide 45 text

45 ブランチ戦略 Pattern3 - base更新時

Slide 46

Slide 46 text

46 ブランチ戦略 Pattern3 • Pros • ブランチの構成がシンプル • Pattern1で懸念していたマージ漏れは回避できる • Cons • baseの対応時のbranch切り替え作業が⾯倒

Slide 47

Slide 47 text

47 Photo by alevision.co on Unsplash https://unsplash.com/photos/D-oimR6JX0E

Slide 48

Slide 48 text

No content