$30 off During Our Annual Pro Sale. View Details »

転職会議のマイクロサービスを支えるデプロイ基盤@yabaibuki.dev #2

katainaka
September 26, 2024
260

転職会議のマイクロサービスを支えるデプロイ基盤@yabaibuki.dev #2

katainaka

September 26, 2024
Tweet

Transcript

  1. 0. 自己紹介 • 株式会社リブセンス所属のSRE • 転職会議やマッハバイトなど様々な事業部に関わる • ⾼知県在住 • 趣味

    ◦ 釣り🎣 ◦ スーパー銭湯めぐり♨ ◦ 飲み歩き🍺など • たまに東京で暇しているので飲みに誘ってください🍻 ⼭崎 理弘 a.k.a. かたいなか Copyright © Livesense Inc.
  2. 3-1. 転職会議のデプロイ基盤 設計時の考慮ポイント • CIOps ◦ CIから変更をpushする • GitOps ◦

    クラスタ上からGitHub等の設定情報をpullして同期する ◦ GitHubを⾒ることでほとんどの設定を確認できる • GUIでの設定の確認ができることなどのメリットを重視し、 ArgoCDによるGitOpsを採⽤ 設計時の考慮ポイント①: CIOpsにするか、GitOpsにするか Copyright © Livesense Inc.
  3. 3-1. 転職会議のデプロイ基盤 設計時の考慮ポイント • 環境変数やPodの台数などの設定のデプロイ ◦ ⽐較的頻度は少ない ◦ diffを⾒たい •

    アプリケーションのコンテナイメージのデプロイ ◦ コードの変更のたびに必要なので頻度が多い ◦ インフラに詳しくないエンジニアが⾏うことが多い • 稀に両⽅を同時にデプロイしたいことも 設計時の考慮ポイント②: コンテナイメージと設定のデプロイの両⽴ Copyright © Livesense Inc.
  4. 3-1. 転職会議のデプロイ基盤 設計時の考慮ポイント • 双⽅のライフサイクルの違いを理解してどうやって両⽴させるかがポイント • 特にGitOpsではどうやって両⽴させるか考慮が必要 ◦ CIでKubernetes上のイメージの情報を書き換えても GitOpsツールがGitHub上のイメージの設定に戻してしまったり‧‧‧

    ◦ latestタグを指定して都度ローリングアップデートでも可能だが‧‧‧ • 転職会議では、ArgoCD Image Updaterを使って解決 ◦ 新しいイメージの情報を⾃動でGitHubにプッシュしてくれるツール ◦ GitHubに書き戻したらArgoCDが変更をクラスタに反映 設計時の考慮ポイント②: コンテナイメージと設定のデプロイの両⽴ Copyright © Livesense Inc.
  5. 3-2. 転職会議のデプロイ基盤 アーキテクチャやフローの紹介 • 環境ごとに同期させるブランチ ◦ developブランチ => ステージング環境 ◦

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

    具体的には ChatOpsでArgoCD Image Updaterが更新対象にするタグ名の情報を変更する ◦ イメージのタグにはブランチ名のプレフィックスをつけている。 ◦ 対象のブランチ名から始まるタグを対象にさせる。 Copyright © Livesense Inc.
  7. イメージのデプロイフロー(本番) 3-2. 転職会議のデプロイ基盤 アーキテクチャやフローの紹介 • 各アプリケーションリポジトリのCircleCIからコンテナイメージをプッシュ ◦ (後述するようにGitHub Actionsに移⾏したい) •

    ArgoCD Image Updater + GitHub ActionsでPull Request作成(本番のみ) • Pull Requestをマージすると ArgoCDが新しい設定をKubernetesに適⽤し、新しいイメージがデプロイされる Copyright © Livesense Inc.
  8. アプリケーションリポジトリのCIを CircleCIからGitHub Actionsに移⾏したい • 理由 ◦ ワークフローをプライベートリポジトリ間で共有したい ◦ エコシステムが充実している •

    実際にGitHub Actions使っている⽅で、 知⾒ある⽅、懇親会で相談させてください 4. 転職会議のデプロイ基盤のこれから Copyright © Livesense Inc.
  9. • ブランチデプロイ時などにArgoCD Image Updaterの挙動のもっさり感が⽬⽴っている • ArgoCD Image Updaterの次のリリースで⾼速化につながりそうな機能が出そう ◦ Gitリポジトリのシャローフェッチなど

    • 将来的には、Webhookを受け取って いい感じにタイミングよく動いてくれたらいいなぁ‧‧‧ ◦ ArgoCD Image Updaterのロードマップ上には予定あり イメージの更新を⾼速化したい 4. 転職会議のデプロイ基盤のこれから Copyright © Livesense Inc.
  10. 夢: プレビュー環境を実現したい 4. 転職会議のデプロイ基盤のこれから • Pull Requestがまだマージされていない状態で、 同時に複数のエンジニアが異なる機能の動作確認を⾏えるようにしたい! • ArgoCD

    + AWS Load Balancer Controllerで実現できないか検討中 ◦ ArgoCD Applications SetでIngressをデプロイして 複数のIngressを⼀つのALBにグルーピング機能でまとめることでルーティングを実 現する構想 • mirrordやtelepresenceなどのローカル環境と Kubernetes上のコンテナを接続するツールも導⼊できると尚良し Copyright © Livesense Inc.