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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
15
文系から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
GitHub Copilot app最速の発信の裏側
tomokusaba
1
230
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.6k
20260619 私の日常業務での生成 AI 活用
masaruogura
1
240
AWS Security Agent といっしょに脅威モデリングをやってみよう
amarelo_n24
1
190
FPC(フレキシブル)基板にZephyr実装してみた。
iotengineer22
0
150
人材育成分科会.pdf
_awache
4
310
iAEONの段階的リアーキテクト戦略 / iAEON's_Gradual_Re-architecture_Strategy
aeonpeople
0
240
新しいUbuntu/GNOMEが使いたいからXからWaylandへ移行頑張ってるの巻 2026-06-20
nobutomurata
0
160
Kiroで書いた 設計書 が AI レビューの 採点基準 になる
ezaki
0
140
感情と身体を置き去りにしない、エンジニアの生きのこり方 ──いまから、ここから「自分の状態」を扱うという選択
saorimurooka
0
180
OTel × Datadog で 「AI活用」を計測し、改善に繋げる
shihochan
2
550
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
2k
Featured
See All Featured
Ethics towards AI in product and experience design
skipperchong
2
310
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Believing is Seeing
oripsolob
1
150
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
310
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
490
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Designing for Timeless Needs
cassininazir
1
260
The Cost Of JavaScript in 2023
addyosmani
55
10k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
200
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
540
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
610
Joys of Absence: A Defence of Solitary Play
codingconduct
1
400
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を使った話