10
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Google Cloud入門】Google Cloud の DevOps 自動化

Last updated at Posted at 2025-12-20

皆様、こんにちは!
アイレット株式会社 DX開発事業部楊林と申します。

前回の投稿では、Google Cloud のオペレーションスイートについて整理しました。

今回は、Google Cloud の DevOps 自動化について整理していきます。

継続的インテグレーションパイプライン

継続的インテグレーション(CI)パイプラインを用いることで、アプリケーションのビルドを自動化できます。

Cloud Source Repositories

Cloud Source Repositories は、Google Cloud 上でホストされるプライベートなマネージド Git リポジトリを提供します。これらのリポジトリを利用することで、コードの共同作業やバージョン管理を行いながら、アプリケーションやサービスの開発・デプロイを進めることができます。

Google Cloud と統合されているため、開発からデプロイまでをシームレス(无缝)に実施できます。

IAM を使用してプロジェクトにチームメンバーを追加し、リポジトリの作成・表示・更新といった権限を付与できます。

リポジトリは特定の Pub/Sub トピックにメッセージを送信するよう構成できます。これにより、リポジトリの作成や削除、commit の push といった操作が行われた際にメッセージをパブリッシュできます。

また、Cloud Source Repositories には、いつ・どこで・どのような操作が行われたかを把握するための監査ログ機能や、App Engine への直接デプロイ機能なども用意されています。

既存の GitHub や Bitbucket のリポジトリを Cloud Source Repositories に接続することも可能で、接続後は自動的に同期されます。

Cloud Build

Cloud Build は、Google Cloud 上で提供されるマネージドなビルドサービスです。

Cloud Build ではビルド構成を定義し、実行するタスクを一連のビルドステップとして記述します。Cloud Build や Cloud Build コミュニティが提供する標準的なステップを利用することも、独自のビルドステップを作成することも可能です。

依存関係の取得、単体テストや静的解析、結合テストの実行、Docker・Gradle・Maven・Bazel・Gulp などのビルドツールによるアーティファクト(Artifact/工件)の作成を行うために、一般的な言語やツールがインストールされたコンテナであるクラウドビルダーを構成できます。

Cloud Storage、Cloud Source Repositories、GitHub、Bitbucket からソースコードをインポートすると、Cloud Build は定義されたビルドステップを各ビルダーで実行します。ビルドステップの実行は、スクリプトでコマンドを順に実行するイメージに近いものです。

VM、サーバーレス、Kubernetes など複数の環境にまたがるビルド・テスト・デプロイのワークフローを、デベロッパーが完全に管理できます。すべてが Cloud Build 上で処理されるため、ビルド環境のプロビジョニングやメンテナンスは不要です。

Build triggers

Build triggers はリポジトリを監視し、コードが push されるたびに自動でビルドを開始します。Maven、カスタムビルド、Docker をサポートしています。

ソースコードが変更されるたびにビルドを実行するほか、特定のブランチへの commit 時、あるいは特定のタグを含む commit 時にビルドを開始するよう設定することもできます。照合対象となるブランチやタグの値には正規表現を指定可能です。

ビルド構成は Dockerfile または Cloud Build の構成ファイルで指定します。

Artifact Registry

Artifact Registry は、ビルドアーティファクトや依存関係を管理するユニバーサルなパッケージ管理システムです。Docker リポジトリとして Docker および OCI 形式のコンテナイメージを保存できます。

Cloud Build などの Google Cloud の CI/CD サービスや、既存の CI/CD ツールと統合でき、Cloud Build で生成したアーティファクトを Google Kubernetes Engine、Cloud Run、Compute Engine、App Engine フレキシブル環境(柔性环境)といった Google Cloud の各ランタイム(运行时)にデプロイできます。

IAM によって一貫した認証情報とアクセス制御が提供されます。Artifact Registry は Docker プロトコルを実装しているため、Docker コマンドラインツールなどの Docker クライアントから直接イメージの push / pull が可能です。Cloud Build や Google Kubernetes Engine など、よく連携される Google Cloud サービスについては、同一プロジェクト内のリポジトリにアクセスする権限がデフォルトで構成されているため、特別なクライアント設定は不要です。

Artifact Analysis は、ソフトウェア構成分析やメタデータの保存・取得などの機能を提供します。Artifact Registry や Google Kubernetes Engine など、多くの Google Cloud プロダクトに検出ポイントが組み込まれており、簡単に有効化できます。スキャンサービスでは、一般的な脆弱性データベースを利用してファイルを既知の脆弱性と照合します。

Binary Authorization

Binary Authorization を利用すると、信頼されたコンテナイメージのみを GKE にデプロイするよう強制できます。

Binary Authorization は Kritis 仕様に基づいた Google Cloud サービスで、利用するには対象の GKE クラスタで Binary Authorization を有効化し、コンテナイメージに署名するためのポリシーを設定する必要があります。

イメージが Cloud Build によってビルドされると、そのイメージが Cloud Source Repositories などの信頼できるリポジトリ由来であることを「認証者(attestor)」が検証します。

Artifact Registry には、コンテナイメージを対象とした脆弱性スキャン機能も備わっています。

IaC(Infrastructure as code)

IaC は、インフラの迅速なプロビジョニングおよび削除を可能にする考え方です。

継続的インテグレーションパイプライン(CI/CD pipeline/持续集成流水线)に組み込むことで、継続的デプロイのプロセスをよりスムーズにできます。インフラのプロビジョニングを自動化することで、オンデマンド(按需预配部署)でリソースを用意でき、デプロイの複雑さはコードとして管理されます。

インフラ構成を柔軟に変更でき、すべての変更を一元管理できる点も大きな利点です。開発環境やテスト環境についても、本番環境を容易に再現できます。また、不要になったリソースは速やかに削除可能です。

Terraform

Terraform は、オープンソースの IaC インフラストラクチャ自動化ツールです。

宣言型の構成ファイルを用いて、仮想マシン、コンテナ、ストレージ、ネットワークなどの Google Cloud リソースをプロビジョニングできます。アプリケーションに必要なすべてのリソースを宣言形式で記述し、その構成をデプロイするだけで環境を構築できます。

HashiCorp Configuration Language(HCL)では、ブロック、引数、式を用いてリソースを簡潔に記述します。同じ構成を何度適用しても一貫した結果が得られ、1 つのコマンドやワンクリックでデプロイ全体を削除することも可能です。

宣言型アプローチの利点は、ユーザーが「何を構成したいか」だけを記述すればよく、具体的な手順はシステムに任せられる点にあります。個々のリソースを手作業で管理するのではなく、アプリケーションやサービスを構成するリソースセットとして定義できるため、アプリ開発そのものに集中できます。

Terraform は Cloud Shell と異なり、複数のリソースを並列にデプロイします。各 Google Cloud サービスが提供する API を利用して、インスタンスやインスタンステンプレート、マネージドインスタンスグループ、VPC ネットワーク、ファイアウォールルール、VPN トンネル、Cloud Router、ロードバランサなどをまとめてデプロイできます。

Terraform 言語はリソースを宣言するための UI と位置づけられ、Compute Engine、ストレージ、コンテナといったインフラオブジェクトを表現します。Terraform 構成は、それらのリソースをどのように管理するかを記述した完全なドキュメントでもあり、複数のファイルやディレクトリで構成されます。

構文上、ブロック(Block)はオブジェクトを表し、必要に応じてラベル(Block Label)を持ちます。ブロック本文(Block Body)では引数(Argument)や入れ子になったブロックを宣言でき、引数は名前に値を割り当てるために使用されます。

Terraform は Cloud Shell にプリインストールされており、パブリッククラウド、プライベートクラウドのいずれでも利用可能です。Google Cloud は Terraform だけでなく、Chef、Puppet、Ansible、Packer などの IaC ツールもサポートしています。

Cloud Marketplace

Google Cloud Marketplace を利用すると、Google Cloud 上で動作する機能的なソフトウェアパッケージを迅速にデプロイできます。

Cloud Marketplace では、サードパーティベンダーによる本番環境レベルのソリューションが提供されており、多くの場合 Terraform をベースとした独自のデプロイ構成があらかじめ用意されています。これらのソリューションは、プロジェクト内の他の Google Cloud サービスとまとめて一括請求されます。

Google Cloud 側でソフトウェアパッケージのイメージが更新され、重大な問題や脆弱性が修正されることはありますが、すでにデプロイ済みのソフトウェアが自動更新されるわけではありません。

また、パートナーサポートに直接アクセスできる点も特徴です。

最後に

今回は、Google Cloud の DevOps 自動化について整理しました。

次回は、Google Cloud が推奨するサービス定義の方法についてまとめていく予定です。
引き続き読んでいただけると嬉しいです。

以前の投稿

【Google Cloud入門】クラウドサービスの特徴とGoogle Cloudの触り方
【Google Cloud入門】リソースマネージメント
【Google Cloud入門】アクセス管理の基本 - IAM
【Google Cloud入門】サービスアカウントとCloud Identity
【Google Cloud入門】Compute Engineの基礎
【Google Cloud入門】コンピューティングオプションとマネージドインスタンスグループ
【Google Cloud入門】GKE入門の前準備-コンテナの基礎
【Google Cloud入門】GKE入門の前準備-Kubernetesの基礎
【Google Cloud入門】GKE入門の前準備-Kubernetesの構成
【Google Cloud入門】Googleのコンテナ仮想環境ーGoogle Kubernetes Engine
【Google Cloud入門】GCEとGKE以外のコンピューティングサービス
【Google Cloud入門】Google Cloudネットワークの基礎
【Google Cloud入門】Google Cloudネットワークへの接続とVPCの共有
【Google Cloud入門】Google Cloudネットワークの負荷分散
【Google Cloud入門】オブジェクトストレージサービスーCloud Storage
【Google Cloud入門】Google Cloudの構造化データストレージサービス
【Google Cloud入門】Google Cloudのストレージサービスの選び方
【Google Cloud入門】ストレージに関連する様々なサポートサービス
【Google Cloud入門】Google Cloud のプロンプトエンジニアリング
【Google Cloud入門】Google Cloud のオペレーションスイート

10
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?