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
Google CloudとGitHub Actionsでセキュアで 信頼性の高いインフラのデプ...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Cloud Ace
May 13, 2025
Technology
200
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Google CloudとGitHub Actionsでセキュアで 信頼性の高いインフラのデプロイパイプラインの構築方法
Cloud Ace
May 13, 2025
More Decks by Cloud Ace
See All by Cloud Ace
今年の最難関と思われるProfessional Security Operations Engineer の概要
cloudace
0
21
Gemini CLI x Google Cloud Document MCP で作る Google Cloud クイズボット
cloudace
0
22
魅力的な LT を作りたい
cloudace
0
17
AIエージェントはqじゃなくてwqしよう
cloudace
0
16
文系からSRE分野に挑戦 ( 新卒 2年目、私がGCP/AWSを学んで 得た気づき)
cloudace
0
54
Gemini を Raspberry Pi で走ら せた経験
cloudace
0
230
ADK / BigQueryで実現する分析エージェントのガバナンス設計
cloudace
0
46
【ガードレール】組織ポリシーで脆弱な設定を防ごう
cloudace
0
160
Cloud RunならDBも含めた ゼロスケールが可能? WordPressをゼロスケールさせた話
cloudace
0
31
Other Decks in Technology
See All in Technology
Agile and AI Redmine Japan 2026
hiranabe
4
470
Oracle Cloud Infrastructure:2026年6月度サービス・アップデート
oracle4engineer
PRO
0
290
AIが自律的に回る開発ループを設計してチーム開発に組み込む
nekorush14
0
120
5分でわかるDuckDB Quack
chanyou0311
3
250
【セミナー資料】Claude Code をセキュアに使うための考え方と設定の勘どころ / Claude Code Webinar 20260616
masahirokawahara
2
460
元銀行員がAIだけでアプリを量産!「バイブコーディング実演セミナー 」
tatsuya1970
0
110
気軽に使える"情報のハブ"としてのNotion活用 〜フロー情報の集積点 と、 Claude Code × Notion AI〜
syucream
1
180
いまさら聞けない「仕様駆動開発入門」 〜AI活用時代の開発プロセスを考える〜
findy_eventslides
2
200
SteampipeとExcel Power QueryでAWS構成定義書の作成を自動化する
jhashimoto
0
180
PostgreSQL 19 新機能概要 OSC Hokkaido 2026
nori_shinoda
0
240
アラート調査向けAIエージェントの本番導入とその後/AI Agents for Alert Investigation: Production Deployment and After
taddy_919
0
100
フィジカル版Github Onshapeの紹介
shiba_8ro
0
320
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Paper Plane (Part 1)
katiecoart
PRO
0
9.2k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
160
The Curse of the Amulet
leimatthew05
2
13k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
320
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.8k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
740
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
390
Transcript
| © 2025 Cloud Ace, Inc Google CloudとGitHub Actionsでセキュアで 信頼性の高いインフラのデプロイパイプラインの構築方法
| © 2025 Cloud Ace, Inc 自己紹介 北野 敦資 @Aquamarine_1010 クラウドエース株式会社
DevSecOps 事業部 Expert • 2019年6月よりGoogle Cloudへのシステムの提案・設計から運用までの実施 • 前職ではシステムの運用管理の自動・自律化の研究、プライベートクラウドの運用・ 開発
| © 2025 Cloud Ace, Inc 概要 GitHub Actions, Cloud Build,Argo
CDを使った構成管理
| © 2025 Cloud Ace, Inc 当社の提供サービス 顧客システム・ビジネスの信頼性向上 • 24/365でのシステムの監視 •
システムの機能改善の提案の実施
| © 2025 Cloud Ace, Inc • サービスの機能 ◦ 認証基盤: Keycloak
◦ ダッシュボード: Grafana ◦ ナレッジ管理: Backstage ◦ チケット管理: Redmine ◦ サービスデスク: 独自アプリ ◦ インシデント管理: Pagerduty • アプリ基盤 ◦ GKE・Cloud Run サービスのシステム構成概要 GKEとCloud Runでアプリケーションを構成
| © 2025 Cloud Ace, Inc 実現したいデプロイパイプライン • 運用ミスをなくすパイプライン ◦ 統一的なデプロイフロー
◦ 構成情報のコード化 ◦ 専用の基盤からのみの変更 ◦ 本番環境への変更を明示的に行う • 変更に気づける ◦ 変更作業の失敗への通知 信頼性の高いCI/CDパイプライン
| © 2025 Cloud Ace, Inc デプロイパイプラインの設計 信頼性の高いデプロイの実現 • CIとCDのパイプラインの分離 •
IaCを採用しデプロイ作業のコード化 • 運用管理専用の環境の準備 • GitOpsの採用 • リポジトリ戦略の設計 ◦ タグ作成により本番環境のリリース • Slackで変更作業者への通知
| © 2025 Cloud Ace, Inc CI/CDのパイプラインの設計 • 目的 ◦ テストされたイメージのデプロイ
◦ 迅速なロールバック • 実現方法 ◦ アプリケーション、インフラの構成ファイルを 別々のリポジトリで管理 ◦ アプリケーションリポジトリ : GitHub Actionに よるDockerイメージのプッシュ ◦ インフラ構成ファイルリポジトリ : Argo CDによ るDockerイメージのデプロイ Dockerイメージのプッシュとデプロイの分離
| © 2025 Cloud Ace, Inc 運用管理専用のプロジェクトの構築 • デプロイパイプライン ◦ 開発環境と本番環境の
2面での運用 ▪ 開発環境: 機能開発およびテスト ▪ 本番環境: 顧客提供 • Google Cloud プロジェクトの設計 ◦ アプリケーションと運用管理のリソースを別々の プロジェクトで管理 ▪ アプリケーションプロジェクト : GKE, Cloud Run,Cloud SQL ▪ 運用管理プロジェクト : Artifact Registry, Cloud Build, Workload Identity 運用管理のリソースだけを管理するプロジェクトの作成
| © 2025 Cloud Ace, Inc デプロイ方法の設計 • アプリケーションのデプロイ ◦ Argo
CD + Kustomizeによるデプロイ • Google Cloud上のアプリの設定 ◦ Cloud Build + Terraformによるデプロイ ▪ 特定のIPから変更できるようにする • Google CloudとSaaSの設定 ◦ GitHub Actions + Terraformによるデプロイ 種類ごとにデプロイエージェントとコードの使い分け
| © 2025 Cloud Ace, Inc Terraformでの構成変更の流れ • 構成変更フロー 1. PRで変更内容の確認
2. mainブランチへのプッシュで開発・運用環境への変更 3. tagの作成で本番環境への変更 • リポジトリ戦略: GitHub Flow 本番環境への変更を明示的におこなう
| © 2025 Cloud Ace, Inc GitHub ActionsでのTerraform実行 • 実行するTerraformコード ◦
Google CloudとPagerDutyのTerraformコード • 認証 ◦ Google Cloud: Workload Identityによる認証 ◦ PagerDuty: tokenによる認証 ▪ tokenの管理: Google Cloud のSecret Manager※ • ※Workload Identityで認証させデータ取得させる • Slackへの通知 ◦ slackapi/slack-github-actionによる通知 GitHub Actionsから安全に認証させSlack通知させる
| © 2025 Cloud Ace, Inc Workload Identityによる認証 • Workload Identity
Poolの設計 ◦ リポジトリごとにプールを作成し、 Workflowごとにプロバイダーを作成する ▪ リポジトリごとにVPC SCでのアクセス認証 ▪ プロバイダーごとにサービスアカウントを付与し認可 • GitHub Actionsからの活用 ◦ google-github-actions/authでの認証で指定 ◦ 指定を環境変数でおこなう ▪ 環境変数の設定をterraformを使いおこなう VPC SCで認証させサービスアカウントで認可させる
| © 2025 Cloud Ace, Inc GitHub ActionsからのSlack通知 Slack appを使い失敗に気づけるよう通知させる •
通知の実装 ◦ Slackアプリケーションによる通知 ◦ tokenをsecretで管理 ▪ secretをterraformで登録 ▪ データはGoogle Cloud のSecret Managerで管理 • メッセージ内容 ◦ PR,ビルド結果,実行対象環境 ▪ ビルド結果にslackから飛べるように する ◦ エラー時にメンション
| © 2025 Cloud Ace, Inc GitHub ActionsからのSlack通知 Slack appを使い失敗に気づけるよう通知させる project
ID project ID • 通知の実装 ◦ Slackアプリケーションによる通知 ◦ tokenをsecretで管理 ▪ secretをterraformで登録 ▪ データはGoogle Cloud のSecret Managerで管理 • メッセージ内容 ◦ PR,ビルド結果,実行対象環境 ▪ ビルド結果にslackから飛べるように する ◦ エラー時にメンション
| © 2025 Cloud Ace, Inc Cloud BuildでTerraform実行 • 実行するTerraformコード ◦
Grafana, KeycloakのTerraformコード ▪ Cloud Armor(WAF)により、IPアドレスでアクセスを絞っているため • 実行環境 ◦ 外部IPを有さない Private Pool • Slackへの通知 ◦ Cloud Build Notifierを使った通知 Google Cloud内からセキュアにGKE上のリソースを変更
| © 2025 Cloud Ace, Inc Cloud Buildの実行環境 • 外部IPを保持しないPrivate Poolの作成
• Private Poolからインターネットへの接続 ◦ Private Service ConnectによるVPCネットワークへの接続 ◦ VPCネットワーク内の通信をNATインスタンスのGCEにルーティング ◦ GCEからCloud NATを使いインターネットへ通信 ◦ Cloud NATの外部IPからアクセスできるようCloud Armor (WAF) の設定 NATインスタンスを使った外部通信
| © 2025 Cloud Ace, Inc Cloud BuildからSlackへの通知 • Slackへの通知アプリ ◦
Google Cloudが開発しているCloud Build Notifierを使う ◦ アプリをCould Runで実行 • アプリの設計 ◦ 通知先、デプロイの成功・失敗ごとに通知アプリの作成 ◦ 失敗のメッセージにメンションを付けて気づけるようにする ▪ mention: <!channel> とし、@channelでチャンネル内に通知させる Cloud Build NotifierによるSlack通知
| © 2025 Cloud Ace, Inc Terraformコードの管理 • ディレクトリ構造 ◦ env
(dev,prd,ops,org): 各環境 ▪ configs: 設定ファイル ( yaml ) • Service Account など ▪ terraform: terraform コード ◦ templates ▪ templatefile関数で使うテンプレートファイル ◦ terrafrom_modules: terraformモジュール ▪ VPCネットワークなど • コードの書き方 ◦ for_each文で呼び出し ◦ リソースの設定項目をlocalsブロックに定義 環境ごとにディレクトリを作成したコード管理 ディレクトリ構造
| © 2025 Cloud Ace, Inc yamlファイルで設定管理の外出し • Terraformの課題 ◦ コードの見通しが悪い
◦ ループを使うと1つのファイルが大きくなる • 解決手段 ◦ yamlファイルで外部参照 ◦ fileset関数でディレクトリ内のファイルの参照 設定数が多いオブジェクトをyamlで管理 Terraform コード 参照先ディレクトリ
| © 2025 Cloud Ace, Inc まとめ GitHub Actions、Cloud Build、Argo CDを使った構成管理
| © 2025 Cloud Ace, Inc まとめ • dockerイメージのプッシュとデプロイを分離し、CIとCDを別々のパイプラインを構築す る。 •
運用に使うリソースのみを管理する環境をアプリケーションをデプロイする環境と別のプ ロジェクトを作成する。 • 安全な認証のためにWorkload Identityを使う。 • デプロイの成功・失敗をSlackで通知し、デプロイの結果に気づけるようにする。 ◦ 失敗時はすぐに気づけるようにメンションをつける • Terraformは管理しやすいように環境ごとにディレクトリで管理する。 • Terraformコードが肥大化しないように大量に作るオブジェクトはyamlファイルで管理す る。
| © 2025 Cloud Ace, Inc 参考URL • Workload Identity 連携を利用して
GitHub Actions を動かす • 外部 IP を持たない Cloud Build のプライベートプールをインター ネットに通信させる方法 • Cloud Build の結果を Slack に通知する方法 • 新しいプロダクトのデプロイパイプラインにArgo CDを使った話