🛠

Cloud Buildのプライベートプールでのビルドの実行方法

2023/04/04に公開

要約

クラウドエースの北野です。

Cloud Buildのビルドをプライベートプールで実行する方法を紹介します。
プライベートプールでのビルド実行の流れは、以下の通りとなります。

  • プライベートプールの作成
  • ビルド構成ファイルの実行環境の箇所にプライベートプールの指定
    • ビルド構成ファイルの定義する箇所: options.pool.name
    • プライベートプールのIDの形式: projects/<PROJECT_ID>/locations/<REGION>/workerPools/<PRIVATEPOOL_NAME>
  • ビルド構成ファイルからビルドトリガーの実行

プライベートプールでビルドを実行するビルド構成ファイルの例

steps:
  - name: ubuntu
    args: ["echo", "private pool build step"]

options:
  pool:
    name: projects/$PROJECT_ID/locations/asia-northeast1/workerPools/sample

背景

Cloud Buildは、Google Cloud上でビルドを実行するマネージドサービスです。
機能が類似するSaaSのサービスとして、GitHub ActionsやCircleCIなどがあります。他のクラウドで類似するサービスとしては、AWSのCodePipelineやAzure DevOpsといったものがあります。

Cloud Buildは、アプリケーションのビルド以外にアプリケーションのデプロイなどもできるため、CI/CDの実行エージェントとして使われます。弊社でも、Cloud BuildをTerraformの実行エージェントとして使うケースが多くあります。

以前のCloud Buildは 設定のカスタマイズに制約のあるデフォルトプールだけでビルドを実行していました。2021年の7月以降、柔軟にカスタマイズできるプライベートプールからでもビルドを実行できるようになりました。

プライベートプールのみで実現できる機能として、以下があります。

  • VPCネットワーク経由でのGoogle Cloudのリソースへのアクセス
  • ビルドのVPC Service Contolsの境界による保護
  • 実行環境からのパブリックIPの削除

本記事では、プライベートプールの作成方法と、プライベートプールからビルドを実行する方法を紹介します。

利用方法

プライベートプールの利用には、ビルドを実行するプライベートプールを作成し、ビルド構成ファイルに実行環境として作成したプライベートプールを指定する必要があります。

以下では、まず、プライベートプールの作成します。次に、作成したプライベートプールからビルドを実行します。

プライベートプールの作成方法

ここでは、以下の設定のプライベートプールを作成する方法を説明します。

  • 名前: sample
  • リージョン: 東京リージョン(asia-northeast1)
  • マシンタイプ: e2-medium
  • ディスクサイズ: 100GB(未指定)
  • 接続するVPC ネットワーク: なし(未指定)
  • 外部IPの割り当て: あり

プライベートプールの作成するには、CloudコンソールのCloud Buildの設定画面(歯車のマーク)のワーカープールのタブの作成をクリックします。
ワーカープール作成のコンソール画面

ワーカープールの設定を定義する画面が表示されるので、プライベートプールの名前やマシンタイプなど、上記の設定内容を入力し、作成をクリックします。
ワーカープールの作成

しばらくしてから、プライベートプールの一覧画面の更新をクリックします。すると、作成したプライベートプールが一覧に表示されます。
プライベートプール一覧

プライベートプールを使ったビルド方法

作成したプライベートプール上でビルドを実行する方法を紹介します。
ビルドを実行するプールは、ビルド構成ファイルに定義します。
ビルド構成ファイルの options.pool.name に作成したプライベートプールのIDを projects/<PROJECT_ID>/locations/<REGION>/workerPools/<PRIVATEPOOL_NAME> の形式で指定します。

以下のビルド構成ファイルは、asia-northeast1 (東京リージョン)に作成したsampleのプライベートプールで、echo コマンドを実行します。

steps:
  - name: ubuntu
    args: ["echo", "private pool build step"]

options:
  pool:
    name: projects/$PROJECT_ID/locations/asia-northeast1/workerPools/sample

ここで、$PROJECT_ID は、ビルドのデフォルトの変数置換の一種であり、ビルドを実行するプロジェクトIDがビルド実行時に代入されます。

上記のビルド構成ファイルをcloudbuild.yamlとして、任意のパスに保存し、保存したディレクトリから以下のコマンドを実行してください。
今回は挙動のみを確認するため、ローカル環境からビルド構成ファイルの内容を実行させます。実際の運用では、ビルド構成ファイルを実行するビルドトリガーを作成し、実行するようにしてください。

gcloud builds submit --region=asia-northeast1 --config cloudbuild.yaml --no-source

プライベートプールの起動に時間がかかるため、コマンド投入からビルド開始まで時間がかかるのでご注意ください。

実行したビルドの詳細を確認すると、ワーカープールのワーカータイプがプライベートとなっており、プライベートプールの項目が作成したプライベートプールのIDとなっています。以上のことから、ビルドがプライベートプールから実行されていると分かります。

ビルド実行の詳細

まとめ

Cloud Build のプライベートプールについて紹介しました。プライベートプールは、プライベートIPのみを有する構成や、VPC Service Controlsの境界内でのビルド実行など、セキュアなビルド環境を提供します。Google Cloudでセキュアなビルド環境を構築するにあたり、プライベートプールの利用を検討してみてはいかがでしょうか。

Discussion