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
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
22
Gemini CLI x Google Cloud Document MCP で作る Google Cloud クイズボット
cloudace
0
27
魅力的な LT を作りたい
cloudace
0
18
AIエージェントはqじゃなくてwqしよう
cloudace
0
20
文系からSRE分野に挑戦 ( 新卒 2年目、私がGCP/AWSを学んで 得た気づき)
cloudace
0
62
Gemini を Raspberry Pi で走ら せた経験
cloudace
0
250
ADK / BigQueryで実現する分析エージェントのガバナンス設計
cloudace
0
52
【ガードレール】組織ポリシーで脆弱な設定を防ごう
cloudace
0
170
Cloud RunならDBも含めた ゼロスケールが可能? WordPressをゼロスケールさせた話
cloudace
0
35
Other Decks in Technology
See All in Technology
AIコード生成×サプライチェーン攻撃 — PHPが直面する“二重の信頼問題
shinyasaita
0
170
しぶいSRE: サーバから見えない障害にどう向き合うか。ラストワンマイルのデバッグ実践 / Shibui SRE
kanny
13
6.3k
関数型の考えを TypeScript に持ち込んで、テストしやすい純粋関数を増やす / Pure at the Core, Effects at the Edge: Bringing Functional Thinking into TypeScript
kaminashi
2
130
Amazon EVS で VCF 9.0 / 9.1 のサポート開始まとめ
mtoyoda
0
300
CIで使うClaude
iwatatomoya
0
290
[2026-07-15] AI Ready なはずだったアーキテクチャと、見えてきた課題・次に目指す状態
wxyzzz
9
3.9k
非定型なドキュメントを効率よくリファクタする 〜えぇ!?仕様書27本の移行が1日で終わったって!?〜
subroh0508
2
540
はじめてのWDM
miyukichi_ospf
1
150
タスクの複雑さでモデルを選ぶ ── Thompson Samplingで動かす“トークン/コスト最適化
satohy0323
0
540
ヘルスケア領域における AI 活用と その安全性担保のための取り組み (Leveraging AI in Healthcare and Our Efforts to Ensure Its Safety) - Google I/O Extended Tokyo 2026, July 11, 2026
zettaittenani
0
410
「守りたい体験」を渡すだけで E2E を生成させられるようになった話
hinac0
0
130
Data + AI Summit 2026 イベントレポート: 「AIがビジネスで意思決定するデータ基盤」へ
nek0128
0
250
Featured
See All Featured
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
300
Git: the NoSQL Database
bkeepers
PRO
432
67k
RailsConf 2023
tenderlove
30
1.5k
Everyday Curiosity
cassininazir
0
250
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
210
KATA
mclloyd
PRO
35
15k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
340
Building an army of robots
kneath
306
46k
How STYLIGHT went responsive
nonsquared
100
6.2k
The Cost Of JavaScript in 2023
addyosmani
55
10k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
490
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
950
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を使った話