チュートリアル: Google Cloudインテグレーションをセットアッする
このチュートリアルでは、Google CloudをGitLabと統合して、Google Cloudに直接デプロイする方法について説明します。
Google Cloudインテグレーションをセットアップするには、次の手順に従ってください:
- Google Cloudアイデンティティおよびアクセス管理(IAM)で利用を保護する
- Google Artifact Registryリポジトリに接続する
- Google CloudでCI/CDジョブを実行するようにGitLab Runnerをセットアップする
- CI/CDコンポーネントを使用してGoogle Cloudにデプロイする
はじめる前
インテグレーションを設定するには、次のことをする必要があります:
- 少なくともメンテナーロールを持つGitLabプロジェクトが必要です。
- 使用するGoogle Cloudプロジェクトのオーナー IAMロールが必要です。
- Google Cloudプロジェクトの課金が有効になっている必要があります。
- Docker形式と標準モードのGoogle Artifact Registryリポジトリが必要です。
- Google Cloud CLIとTerraformをインストールします。
Google Cloudアイデンティティおよびアクセス管理(IAM)で利用を保護する
Google Cloudの利用を保護するには、Google Cloud IAMインテグレーションをセットアップする必要があります。この手順の後、GitLabグループまたはプロジェクトがGoogle Cloudに接続されます。ワークロードアイデンティティフェデレーションを使用して、サービスアカウントキーを必要とせずに、関連するリスクを使用して、Google Cloudリソースの権限を処理できます。
- 左側のサイドバーで、検索または移動先を選択して、グループまたはプロジェクトを見つけます。グループでこれを設定すると、設定はデフォルトで内部のすべてのプロジェクトに適用されます。
- 設定 > インテグレーションを選択します。
- Google Cloud IAMを選択します。
- Guided setup(ガイド付きセットアップ)を選択し、指示に従います。
Google Artifact Registryリポジトリに接続する
Google IAMインテグレーションがセットアップされたので、Google Artifact Registryリポジトリに接続できます。この手順の後、GitLabでGoogle Cloudアーティファクトを表示できます。
- GitLabプロジェクトで、左側のサイドバーで、設定 > インテグレーションを選択します。
- Googleアーティファクトのレジストリを選択します。
- インテグレーションを有効にするで、有効チェックボックスをオンにします。
- フィールドに入力します:
- Google CloudプロジェクトID: Artifact Registryリポジトリが配置されているGoogle CloudプロジェクトのID。
- リポジトリ名: Artifact Registryリポジトリの名前。
- リポジトリの場所: Artifact Registryリポジトリの場所。
- Configure Google Cloud IAM policies(Google Cloud IAMポリシーを設定する)で、画面の指示に従ってGoogle CloudでIAMポリシーをセットアップします。これらのポリシーは、GitLabプロジェクトでArtifact Registryリポジトリを使用するために必要です。
- 変更を保存を選択します。
- Google Cloudアーティファクトを表示するには、左側のサイドバーでデプロイ > Googleアーティファクトのレジストリを選択します。
後の手順で、コンテナイメージをGoogle Artifact Registryにプッシュします。
Google CloudでCI/CDジョブを実行するようにGitLab Runnerをセットアップする
Google CloudでCI/CDジョブを実行するようにGitLab Runnerをセットアップできます。この手順の後、GitLabプロジェクトには、複数のジョブを同時に実行するために一時的なRunnerを作成するRunnerマネージャーを備えた、オートスケールRunnerフリートがあります。
- GitLabプロジェクトで、左側のサイドバーで、設定 > CI/CDを選択します。
- Runnersセクションを展開します。
- New project runner(新しいプロジェクトRunner)を選択します。
- フィールドに入力します。
- プラットフォームセクションで、Google Cloudを選択します。
- タグセクションのタグフィールドに、ジョブタグを入力してRunnerが実行できるジョブを指定します。このRunnerのジョブタグがない場合は、Run untagged(タグなしで実行)を選択します。
- オプション。Runnerの説明フィールドに、GitLabに表示されるRunnerの説明を追加します。
- オプション。設定セクションで、その他の設定を追加します。
- Runnerを作成を選択します。
- ステップ1のフィールドに入力します: 環境を指定セクションで、RunnerがCI/CDジョブを実行するGoogle Cloudの環境を指定します。
- ステップ2の下: GitLab Runnerをセットアップするで、セットアップ手順を選択します。
- モーダルウィンドウ内の指示に従ってください。ステップ1は、Runnerをプロビジョニングする準備ができるように、Google Cloudプロジェクトに対して1回だけ行う必要があります。
手順に従うと、Runnerがオンラインになり、ジョブを実行できるようになるまでに1分かかる場合があります。
CI/CDコンポーネントを使用してGoogle Cloudにデプロイする
開発のベストプラクティスは、パイプライン全体の整合性を維持するために、CI/CDコンポーネントなどの構文を再利用することです。
GitLabとGoogleのコンポーネントのライブラリを使用して、GitLabプロジェクトがGoogle Cloudリソースと対話できるようにすることができます。GoogleのCI/CDコンポーネントを参照してください。
Google Artifact Registryにコンテナイメージをコピーする
開始する前に、コンテナイメージをビルドしてGitLabコンテナレジストリにプッシュする、動作するCI/CD設定が必要です。
GitLabコンテナレジストリからGoogle Artifact Registryにコンテナイメージをコピーするには、パイプラインにGoogleのCI/CDコンポーネントを含めます。この手順の後、新しいコンテナイメージがGitLabコンテナレジストリにプッシュされるたびに、Google Artifact Registryにもプッシュされます。
GitLabプロジェクトで、左側のサイドバーで、ビルド > パイプラインエディタを選択します。
既存の設定で、次のようにコンポーネントを追加します。
- このジョブが実行されるステージで
<your_stage>を置き換えます。イメージがビルドされ、GitLabコンテナレジストリにプッシュされた後である必要があります。
include: - component: gitlab.com/google-gitlab-components/artifact-registry/upload-artifact-registry@main inputs: stage: <your_stage> source: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA target: $GOOGLE_ARTIFACT_REGISTRY_REPOSITORY_LOCATION-docker.pkg.dev/$GOOGLE_ARTIFACT_REGISTRY_PROJECT_ID/$GOOGLE_ARTIFACT_REGISTRY_REPOSITORY_NAME/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA- このジョブが実行されるステージで
記述的なコミットメッセージを追加します。ターゲットブランチはデフォルトブランチである必要があります。
変更をコミットするを選択します。
ビルド > パイプラインに移動し、新しいパイプラインが実行されていることを確認します。
パイプラインが正常に完了した後、Google Artifact Registryにコピーされたコンテナイメージを表示するには、左側のサイドバーでデプロイ > Googleアーティファクトのレジストリを選択します。
Google Cloudリリースを作成する
Google Cloudデプロイと統合するには、パイプラインにGoogleのCI/CDコンポーネントを含めます。この手順の後、パイプラインはアプリケーションでGoogle Cloudデプロイリリースを作成します。
- GitLabプロジェクトで、左側のサイドバーで、ビルド > パイプラインエディタを選択します。
- 既存の設定で、Google Cloudデプロイコンポーネントを追加します。
- コンポーネントの
inputsを編集します。 - 記述的なコミットメッセージを追加します。ターゲットブランチはデフォルトブランチである必要があります。
- 変更をコミットするを選択します。
- ビルド > パイプラインに移動し、新しいパイプラインが合格することを確認します。
- パイプラインが正常に完了した後、リリースを表示するには、Google Cloudドキュメントを参照してください。
以上です。Google CloudをGitLabと統合し、GitLabプロジェクトをGoogle Cloudにシームレスにデプロイしました。