公開:2025年7月7日

11分で読めます

GitLabで自律型AIをGoogle Cloudに安全・高速デプロイ

デモアプリ付きの詳細なガイドに従って、自律型AIの使い方を、GitLabのネイティブインテグレーションやCI/CDコンポーネントとあわせて学びましょう。

自律型AIの登場により、インテリジェントなアプリケーションの構築方法は大きく変わりつつありますが、

AIエージェントを安全かつ効率的にデプロイするのは簡単ではありません。

このチュートリアルでは、

GoogleのAgent Development Kit(ADK)で構築したAIエージェントを、

GitLabのネイティブインテグレーションCI/CDコンポーネントを使って

Cloud Runにデプロイする方法を

学びます。

AIエージェントの基礎知識と注目される理由

自律型AIは、人工知能の分野における大きな進化と言えるでしょう。従来の生成AIツールが常に人間からの指示を必要とするのに対し、AIエージェントは高度な言語モデルや自然言語処理を活用して、自律的に行動を起こします。自律型AIはリクエストを理解し、意思決定を行い、複数のステップからなる計画を実行して、目標を自ら達成できます。

このチュートリアルでは、GoogleのADKを使用します。ADKは、AIエージェントの開発とデプロイに対応した、柔軟でモジュール化されたフレームワークです。GeminiやGoogleのエコシステム向けに最適化されていますが、モデルやデプロイ方法に依存せず、他のフレームワークとの互換性も考慮して設計されています。

デモアプリの紹介:Canada City Advisor

デプロイプロセスを実演するための実用的な例として「Canada City Advisor」を使います。ユーザーの希望や条件に基づいて、理想的なカナダの都市を提案するAIエージェントです。

その仕組みは以下の通りです。

  • ユーザーが予算条件やライフスタイルの希望を入力します。

  • ルートエージェントが以下2つのサブエージェントを統括します。

    • 経済的な制約を評価する予算分析エージェント。カナダ住宅金融公社から取得したデータを使用します。
    • ユーザーの希望に合う都市を提案するライフスタイル分析エージェント。Open-Meteoから取得した適切な都市情報に基づく天気情報サービスも提供します。
  • システムがユーザーに合った都市の候補を生成します。

異なる専門性を持つAIエージェントが連動して複雑な問題を解決するこのマルチエージェント構成により、自律型AIの強みが活かされます。サブエージェントは、ルートエージェントが予算やライフスタイルの分析が必要と判断したときにのみ呼び出されます。

自律型AIを活用したデモアプリ開発のマルチエージェント構成

前提条件

始める前に、以下のものが準備できていることを確認してください。

  • 以下のAPIが有効になっているGoogle Cloudプロジェクト

    • Cloud Run API
    • Artifact Registry API
    • Vertex AI API
  • ソースコード用のGitLabプロジェクト

  • GitLabとGoogle Cloudの両方に対する適切な権限

ステップ1:ワークロードアイデンティティフェデレーションによるIAMインテグレーションを設定する

最初のステップでは、Workload Identity連携を使用して、GitLabとGoogle Cloudの間で安全なキーレス認証を確立します。これにより、サービスアカウントキーが不要となり、セキュリティが向上します。

GitLabプロジェクトでの手順は以下のとおりです。

  1. 設定 > インテグレーション > Google Cloud IAMの順に移動します。

  2. 以下の情報を入力します。

    • プロジェクトID:使用しているGoogle CloudプロジェクトのID
    • プロジェクト番号:Google Cloudコンソールで確認できるプロジェクト番号 Workload Identityプールの固有識別子
    • プロバイダーID:アイデンティティプロバイダーの固有識別子

GitLabがスクリプトを生成します。このスクリプトをコピーして、Google Cloud Shellで実行し、Workload Identity連携を作成します。

ステップ2:Google Artifact Registryのインテグレーションを設定する

次に、コンテナイメージを保存するGoogle Artifact Registryとの接続を設定します。

  1. GitLabで、設定 > インテグレーション > Google Artifact Registryの順に移動します。

  2. 以下の情報を入力します。

    • Google CloudプロジェクトID:ステップ1と同じプロジェクトID
    • リポジトリ名:既存のArtifact Registryリポジトリの名前
    • 場所:リポジトリが存在するリージョン

重要:リポジトリはすでにArtifact Registryに存在している必要があります。この設定操作では、GitLabが新しいリポジトリを自動で作成することはありません。

GitLabは、必要な権限を設定するためのコマンドを生成します。これをGoogle Cloud Shellで実行します。

さらに、Cloud Runへのデプロイのために、サービスプリンシパルに以下のロールを追加します。

  • roles/run.admin

  • roles/iam.serviceAccountUser

  • roles/cloudbuild.builds.editor

以下のgcloudコマンドを使用して、これらのロールを追加できます。


GCP_PROJECT_ID="<your-project-id>" #replace


GCP_PROJECT_NUMBER="<your-project-number>" #replace


GCP_WORKLOAD_IDENTITY_POOL="<your-pool-id>" #replace



gcloud projects add-iam-policy-binding ${GCP_PROJECT_ID} \
  --member="principalSet://iam.googleapis.com/projects/${GCP_PROJECT_NUMBER}/locations/global/workloadIdentityPools/${GCP_WORKLOAD_IDENTITY_POOL}/attribute.developer_access/true" \
  --role='roles/run.admin'

gcloud projects add-iam-policy-binding ${GCP_PROJECT_ID} \
  --member="principalSet://iam.googleapis.com/projects/${GCP_PROJECT_NUMBER}/locations/global/workloadIdentityPools/${GCP_WORKLOAD_IDENTITY_POOL}/attribute.developer_access/true" \
  --role='roles/iam.serviceAccountUser'

gcloud projects add-iam-policy-binding ${GCP_PROJECT_ID} \
  --member="principalSet://iam.googleapis.com/projects/${GCP_PROJECT_NUMBER}/locations/global/workloadIdentityPools/${GCP_WORKLOAD_IDENTITY_POOL}/attribute.developer_access/true" \
  --role='roles/cloudbuild.builds.editor'

ステップ3:CI/CDパイプラインを作成する

ここからが本番です。デプロイ用のパイプラインを構築しましょう!GitLabのCI/CDコンポーネントを使用すると、非常に簡単に作成できます。

プロジェクトのルートに .gitlab-ci.yml ファイルを作成します。


stages:
  - build
  - test
  - upload
  - deploy

variables:
  GITLAB_IMAGE: $CI_REGISTRY_IMAGE/main:$CI_COMMIT_SHORT_SHA
  AR_IMAGE: $GOOGLE_ARTIFACT_REGISTRY_REPOSITORY_LOCATION-docker.pkg.dev/$GOOGLE_ARTIFACT_REGISTRY_PROJECT_ID/$GOOGLE_ARTIFACT_REGISTRY_REPOSITORY_NAME/main:$CI_COMMIT_SHORT_SHA

build:
  image: docker:24.0.5
  stage: build
  services:
    - docker:24.0.5-dind
  before_script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  script:
    - docker build -t $GITLAB_IMAGE .
    - docker push $GITLAB_IMAGE

include:
  - template: Jobs/Dependency-Scanning.gitlab-ci.yml  # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Dependency-Scanning.gitlab-ci.yml
  - template: Jobs/SAST.gitlab-ci.yml  # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/SAST.gitlab-ci.yml
  - template: Jobs/Secret-Detection.gitlab-ci.yml  # https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Secret-Detection.gitlab-ci.yml
  - component: gitlab.com/google-gitlab-components/artifact-registry/upload-artifact-registry@main
    inputs:
      stage: upload
      source: $GITLAB_IMAGE
      target: $AR_IMAGE
  - component: gitlab.com/google-gitlab-components/cloud-run/deploy-cloud-run@main
    inputs:
      stage: deploy
      project_id: "<your-project-id>" #replace
      service: "canadian-city"
      region: "us-central1"
      image: $AR_IMAGE

このパイプラインは、以下の4つのステージで構成されています。

  1. Build:AIエージェントを使用してDockerコンテナを作成します

  2. Test:セキュリティスキャン(コンテナスキャン、依存関係スキャン、SAST)を実行します

  3. Upload:コンテナをArtifact Registryにプッシュします

  4. Deploy:Cloud Runにデプロイします

GitLabのCI/CDコンポーネントを使う大きなメリットは、いくつかのパラメーターを指定するだけで、認証やデプロイの複雑な処理をすべてコンポーネント側が自動で行ってくれる点です。

ステップ4:デプロイとテスト

すべての設定が完了したら、いよいよデプロイの実行です。

  1. コードと .gitlab-ci.yml をGitLabリポジトリにコミットします。

  2. パイプラインは自動的に実行されます。

  3. GitLabのCI/CDインターフェースでパイプラインの進行状況を確認します。

  4. 完了後、Google CloudコンソールでCloud RunのURLを確認できます。

各ステージが順番に実行される様子を確認できます。

  • Buildステージでコンテナが作成されます。

  • Testステージで包括的なセキュリティスキャンが実行されます。

  • UploadステージでArtifact Registryにプッシュされます。

  • DeployステージでCloud Runのサービスが作成または更新されます。

セキュリティ上のメリット

この手法には、以下のようなセキュリティ上の利点があります。

  • 長期間有効な認証情報が不要:Workload identity連携により、サービスアカウントキーが不要になります。

  • 自動セキュリティスキャン:すべてのデプロイで脆弱性がスキャンされます。

  • 監査証跡:誰が何をいつデプロイしたのかを完全に可視化します。

  • 最小権限の原則:きめ細かなIAMロールによりアクセスが制限されます。

まとめ

GitLabのセキュリティ機能とGoogle Cloudの強力なAIおよびサーバーレスプラットフォームを組み合わせることで、安全でスケーラブルなAIエージェントをデプロイできます。GitLabとGoogle Cloudのインテグレーションによって、従来こうしたデプロイに伴っていた複雑さの多くが解消されます。

このチュートリアルの[サンプルコード

全文](https://gitlab.com/gitlab-partners-public/google-cloud/demos/ai-agent-deployment)を使えば、

すぐに始められます。GitLabをまだご利用でない場合は、ぜひ無料トライアルでDevSecOpsプラットフォームをご体験ください。

監修:小松原 つかさ @tkomatsubara

(GitLab合同会社 ソリューションアーキテクト本部 シニアパートナーソリューションアーキテクト)

ご意見をお寄せください

このブログ記事を楽しんでいただけましたか?ご質問やフィードバックがあればお知らせください。GitLabコミュニティフォーラムで新しいトピックを作成してあなたの声を届けましょう。
Share your feedback

フォーチュン100企業の50%以上がGitLabを信頼

より優れたソフトウェアをより速く提供

インテリジェントなDevSecOpsプラットフォームで

チームの可能性を広げましょう。