Slide 1

Slide 1 text

転職会議のマイクロサービスを ⽀えるデプロイ基盤 2024/09/26 令和最新版 他⼈に⾃慢したいヤバいCI/CD LT会 @ yabaibuki.dev #2 技術部インフラストラクチャーグループ ⼭﨑理弘 Copyright © Livesense Inc.

Slide 2

Slide 2 text

0 1 2 3 4 ⾃⼰紹介 転職会議について 前提: 転職会議のシステム構成 転職会議のデプロイ基盤 転職会議のデプロイ基盤のこれから Copyright © Livesense Inc.

Slide 3

Slide 3 text

⾃⼰紹介 SECTION 0 Copyright © Livesense Inc.

Slide 4

Slide 4 text

0. 自己紹介 ● 株式会社リブセンス所属のSRE ● 転職会議やマッハバイトなど様々な事業部に関わる ● ⾼知県在住 ● 趣味 ○ 釣り🎣 ○ スーパー銭湯めぐり♨ ○ 飲み歩き🍺など ● たまに東京で暇しているので飲みに誘ってください🍻 ⼭崎 理弘 a.k.a. かたいなか Copyright © Livesense Inc.

Slide 5

Slide 5 text

0. 自己紹介 ゆるい雰囲気で肩肘張らずに SRE関連のトピックについて話す勉強会です。 初⼼者SREの⽅や、 他職種だがSREっぽいことをやっている⽅も ⼤歓迎です。🎉🎉🎉 次回 #8 は絶賛準備中です! 「ゆるSRE勉強会」定期的に開催してます! Copyright © Livesense Inc.

Slide 6

Slide 6 text

転職会議について SECTION 1 Copyright © Livesense Inc.

Slide 7

Slide 7 text

転職会議について SECTION 1 Copyright © Livesense Inc.

Slide 8

Slide 8 text

前提: 転職会議のシステム構成 SECTION 2 Copyright © Livesense Inc.

Slide 9

Slide 9 text

2. 前提: 転職会議のシステムについて ● マイクロサービスアーキテクチャを採⽤ ○ 当初はPHPのレガシーアプリケーションから段階的に脱却するため ○ レガシー脱却が終わった今はマイクロサービスをまとめていく⽅向 ● EKSを採⽤ ○ 多数のマイクロサービスを管理するため ○ アプリケーションエンジニアも普通にYAMLを書いている! Copyright © Livesense Inc.

Slide 10

Slide 10 text

転職会議のデプロイ基盤 SECTION 3 Copyright © Livesense Inc.

Slide 11

Slide 11 text

設計時の考慮ポイント SECTION 3-1 Copyright © Livesense Inc.

Slide 12

Slide 12 text

3-1. 転職会議のデプロイ基盤 設計時の考慮ポイント ● CIOps ○ CIから変更をpushする ● GitOps ○ クラスタ上からGitHub等の設定情報をpullして同期する ○ GitHubを⾒ることでほとんどの設定を確認できる ● GUIでの設定の確認ができることなどのメリットを重視し、 ArgoCDによるGitOpsを採⽤ 設計時の考慮ポイント①: CIOpsにするか、GitOpsにするか Copyright © Livesense Inc.

Slide 13

Slide 13 text

3-1. 転職会議のデプロイ基盤 設計時の考慮ポイント ● 環境変数やPodの台数などの設定のデプロイ ○ ⽐較的頻度は少ない ○ diffを⾒たい ● アプリケーションのコンテナイメージのデプロイ ○ コードの変更のたびに必要なので頻度が多い ○ インフラに詳しくないエンジニアが⾏うことが多い ● 稀に両⽅を同時にデプロイしたいことも 設計時の考慮ポイント②: コンテナイメージと設定のデプロイの両⽴ Copyright © Livesense Inc.

Slide 14

Slide 14 text

3-1. 転職会議のデプロイ基盤 設計時の考慮ポイント ● 双⽅のライフサイクルの違いを理解してどうやって両⽴させるかがポイント ● 特にGitOpsではどうやって両⽴させるか考慮が必要 ○ CIでKubernetes上のイメージの情報を書き換えても GitOpsツールがGitHub上のイメージの設定に戻してしまったり‧‧‧ ○ latestタグを指定して都度ローリングアップデートでも可能だが‧‧‧ ● 転職会議では、ArgoCD Image Updaterを使って解決 ○ 新しいイメージの情報を⾃動でGitHubにプッシュしてくれるツール ○ GitHubに書き戻したらArgoCDが変更をクラスタに反映 設計時の考慮ポイント②: コンテナイメージと設定のデプロイの両⽴ Copyright © Livesense Inc.

Slide 15

Slide 15 text

アーキテクチャやフローの紹介 SECTION 3-2 Copyright © Livesense Inc.

Slide 16

Slide 16 text

3-2. 転職会議のデプロイ基盤 アーキテクチャやフローの紹介 設定のデプロイの全体像 Copyright © Livesense Inc.

Slide 17

Slide 17 text

3-2. 転職会議のデプロイ基盤 アーキテクチャやフローの紹介 ● 環境ごとに同期させるブランチ ○ developブランチ => ステージング環境 ○ masterブランチ => 本番環境 ● developブランチにマージしたらcherry-pickして ⾃動で本番リリース⽤のPull Request作成 ○ 以前はdevelopからmasterにマージする流れだったが、 developブランチに複数の変更が近いタイミングでマージされたときの 調整が必要になったため。 ● Pull Requestに差分情報を⾃動でコメント。変更内容をすぐ確認できるように 設定のデプロイフロー Copyright © Livesense Inc.

Slide 18

Slide 18 text

3-2. 転職会議のデプロイ基盤 アーキテクチャやフローの紹介 イメージのデプロイの全体像 Copyright © Livesense Inc.

Slide 19

Slide 19 text

イメージのデプロイフロー(ステージング) 3-2. 転職会議のデプロイ基盤 アーキテクチャやフローの紹介 ● 各アプリケーションリポジトリのCircleCIからコンテナイメージをプッシュ ○ (後述するようにGitHub Actionsに移⾏したい) ● ArgoCD Image UpdaterがGitHubにイメージ情報をプッシュ ● ArgoCDが新しい設定をKubernetesに適⽤し、新しいイメージがデプロイされる Copyright © Livesense Inc.

Slide 20

Slide 20 text

イメージのデプロイフロー(ブランチデプロイ) 3-2. 転職会議のデプロイ基盤 アーキテクチャやフローの紹介 ● 開発時にはPull Requestマージ前に動作確認したいことが多々あるため、 Pull Requestのブランチを⼀時的にステージング環境にデプロイできる仕組みを⽤意 ● 具体的には ChatOpsでArgoCD Image Updaterが更新対象にするタグ名の情報を変更する ○ イメージのタグにはブランチ名のプレフィックスをつけている。 ○ 対象のブランチ名から始まるタグを対象にさせる。 Copyright © Livesense Inc.

Slide 21

Slide 21 text

イメージのデプロイフロー(本番) 3-2. 転職会議のデプロイ基盤 アーキテクチャやフローの紹介 ● 各アプリケーションリポジトリのCircleCIからコンテナイメージをプッシュ ○ (後述するようにGitHub Actionsに移⾏したい) ● ArgoCD Image Updater + GitHub ActionsでPull Request作成(本番のみ) ● Pull Requestをマージすると ArgoCDが新しい設定をKubernetesに適⽤し、新しいイメージがデプロイされる Copyright © Livesense Inc.

Slide 22

Slide 22 text

転職会議のデプロイ基盤のこれから SECTION 4 Copyright © Livesense Inc.

Slide 23

Slide 23 text

アプリケーションリポジトリのCIを CircleCIからGitHub Actionsに移⾏したい ● 理由 ○ ワークフローをプライベートリポジトリ間で共有したい ○ エコシステムが充実している ● 実際にGitHub Actions使っている⽅で、 知⾒ある⽅、懇親会で相談させてください 4. 転職会議のデプロイ基盤のこれから Copyright © Livesense Inc.

Slide 24

Slide 24 text

● ブランチデプロイ時などにArgoCD Image Updaterの挙動のもっさり感が⽬⽴っている ● ArgoCD Image Updaterの次のリリースで⾼速化につながりそうな機能が出そう ○ Gitリポジトリのシャローフェッチなど ● 将来的には、Webhookを受け取って いい感じにタイミングよく動いてくれたらいいなぁ‧‧‧ ○ ArgoCD Image Updaterのロードマップ上には予定あり イメージの更新を⾼速化したい 4. 転職会議のデプロイ基盤のこれから Copyright © Livesense Inc.

Slide 25

Slide 25 text

夢: プレビュー環境を実現したい 4. 転職会議のデプロイ基盤のこれから ● Pull Requestがまだマージされていない状態で、 同時に複数のエンジニアが異なる機能の動作確認を⾏えるようにしたい! ● ArgoCD + AWS Load Balancer Controllerで実現できないか検討中 ○ ArgoCD Applications SetでIngressをデプロイして 複数のIngressを⼀つのALBにグルーピング機能でまとめることでルーティングを実 現する構想 ● mirrordやtelepresenceなどのローカル環境と Kubernetes上のコンテナを接続するツールも導⼊できると尚良し Copyright © Livesense Inc.

Slide 26

Slide 26 text

最⾼のCI/CD環境づくりは まだまだ道半ば! Copyright © Livesense Inc.

Slide 27

Slide 27 text

No content