Upgrade to Pro — share decks privately, control downloads, hide ads and more …

新しいプロダクトのデプロイパイプラインにArgo CDを使った話

新しいプロダクトのデプロイパイプラインにArgo CDを使った話

Avatar for Cloud Ace

Cloud Ace

April 07, 2025
Tweet

More Decks by Cloud Ace

Other Decks in Technology

Transcript

  1. | © 2025 Cloud Ace, Inc 自己紹介 北野 敦資 @Aquamarine_1010 クラウドエース株式会社

     DevSecOps 事業部 Expert • 2019年 6月よりGoogle Cloudへのシステムの提案・設計から運用までの実施 • 前職ではシステムの運用管理の自動・自律化の研究、プライベートクラウドの運用・ 開発
  2. | © 2025 Cloud Ace, Inc • サービスの機能 ◦ 認証基盤: Keycloak

    ◦ ダッシュボード: Grafana ◦ ナレッジ管理: Backstage ◦ チケット管理: Redmine ◦ サービスデスク: 独自アプリ ◦ インシデント管理: Pagerduty • アプリ基盤 ◦ GKE・Cloud Run サービスのシステム構成概要 GKE と Cloud Run でアプリケーションを構成
  3. | © 2025 Cloud Ace, Inc 実現したいデプロイパイプライン • 運用ミスをなくすパイプライン ◦ 専用の基盤からのみの変更

    ◦ 構成情報のコード化 ◦ 統一的なデプロイフロー ◦ 本番環境への変更を明示的に行う • 変更に気づける ◦ 変更作業の失敗への通知 信頼性の高い CI / CD パイプライン
  4. | © 2025 Cloud Ace, Inc デプロイパイプラインの設計 信頼性の高いデプロイの実現 • デプロイ専用環境の構築 ◦

    Google Cloudの専用プロジェクトを準備 し、開発・本番環境に横断的に構成変更 の実施 • CIとCD のパイプラインの分離 • IaCを採用し変更作業のコード化 • GitOpsの採用 • リポジトリ戦略の設計 ◦ タグ作成により本番環境のリリース • Slackで変更作業者への通知
  5. | © 2025 Cloud Ace, Inc デプロイ方法の設計 • アプリケーションのデプロイ ◦ Argo

    CD + Kustomizeによるデプロイ • Google Cloud上のアプリの設定 ◦ Cloud Build + Terraformによるデプロイ ▪ 特定のIPから変更できるようにする • Google CloudとSaaSの設定 ◦ GitHub Actions + Terraformによるデプロイ 種類ごとにデプロイエージェントとコードの使い分け
  6. | © 2025 Cloud Ace, Inc Argo CD の設計 • 単一Argo

    CDで複数のGKEの管理 ◦ GKE の Fleet 機能 + Connect Gateway による全環 境への接続 ◦ argocd-fleet-sync によるクラスタの情報の同期 • Argo CDのprojectに各環境の分離 ◦ プロジェクトで設定する内容 ▪ デプロイ先のクラスタ情報 ▪ 各環境のアクセス権限 ▪ 参照するリポジトリ • システムのKeycloakによるSSOの実現 ◦ Keycloak のグループによるログイン • Argo CD NotificationによるSlack通知 ◦ エラー発生時に @channel で全員への連絡 安全かつ効率的なArgo CD 環境の実現
  7. | © 2025 Cloud Ace, Inc Argo CD の Application 設計

    • 自前のアプリケーションは Kustomizeで管理 ◦ baseの内容を overlays で環境に沿った変更する ▪ 例: イメージのバージョン、Podのresourcesなど • Application : 管理するアプリケーション = 1:1 ◦ Keycloak、 Grafana、 サービスデスクを1つのApplicationとし て管理する • 作成したGKE上のリソースを Application で管理 ◦ GKE のエクステンション、Argo CD 自体も Applicationで管理 • Applicationは ApplicationSetで管理 ◦ 本番環境は自動同期しないように設定 ▪ 管理者が差分を目視確認してSYNCする Kustomizeを使った効率的なアプリケーション管理
  8. | © 2025 Cloud Ace, Inc Argo CD と 連携するリポジトリの設計 •

    デプロイ用のリポジトリの作成 ◦ KubernetesのマニフェストとCloud Run の 構成情報の管理 ◦ Argo CDと連携 • アプリケーションのリポジトリでの実施 内容 ◦ Dockerイメージの作成 ◦ 開発環境の アプリの更新 ▪ Github Actions デプロイ用のリポジト リのマニフェストの更新 CI と CDを明確に分離するように設計 a イメージの作成とバージョン更新
  9. | © 2025 Cloud Ace, Inc Argo CD での Cloud Run

    の管理 • Workload IdentityによるGoogle Cloudへの認証 • V2ServiceプロバイダによりCloud Runの管理 • Argo CDにCrossplaneのステータス追跡の設定 ◦ resourceのトラッキング・ステータスの設定 Crossplane によるCloud Runのデプロイ V2Service Provider デプロイ デプロイ 同期 Cloud Run Argo CD
  10. | © 2025 Cloud Ace, Inc まとめ • Argo CD のシステム設計

    ◦ GKE Fleet + Connect Gateway + argocd-fleet-sync による複数クラスタの管理 ◦ Keycloak + Argo CDのプロジェクトによる安全なデプロイパイプラインの実現 ◦ Argo CD NotificationによるSlackへの通知 • デプロイパイプラインの設計 ◦ デプロイ用のリポジトリを個別に作成 ◦ アプリケーションパイプラインから開発環境のデプロイ • CrossplaneによるCloud Runの管理 ◦ Workload Identityの活用で安全な認証 ◦ V2ServiceプロバイダによるCloud Runの制御 Argo CD とCrossplaneで安全なデプロイパイプラインの作成
  11. | © 2025 Cloud Ace, Inc 参考URL • GKE での Argo

    CD の構築 • Argo CD でのGKE のマルチクラスタ管理 • Argo CD で Google アカウントによる SSO する方法 • Argo CD で Crossplane を使った Cloud Runのデプロイ • Argo CD が参照していないリポジトリからイメージバージョンを更 新する方法 • Crossplane で GKE の Workload Identityによる認証方法