この手順は、Google で GitLab Enterprise ソースコード リポジトリを使用するアプリケーション デベロッパー、プラットフォーム管理者、セキュリティ マネージャーを対象としています。具体的には、Gemini Code Assist で GitLab Enterprise リポジトリを使用できます。
Developer Connect の詳細については、Developer Connect の概要をご覧ください。
始める前に
-
Google アカウントにログインします。
Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Developer Connect and Service Directory APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Developer Connect and Service Directory APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
GitLab Enterprise のアカウントにアクセスできることを確認します。
チームの作業を安全に保つため、このガイドのタスクは、個人用アカウントではなく、サービス アカウントまたはチームで共有するアカウントを使用して完了することをおすすめします。
- GitLab Enterprise リポジトリを所有しているか、共有リポジトリに対する管理者レベルの権限があることを確認します。
- プライベート ネットワークに接続するための Service Directory サービス リソースがあることを確認するか、Service Directory サービス リソースを作成します。Service Directory サービス リソースは、Developer Connect で使用しているプロジェクトと同じプロジェクトに作成することも、別のプロジェクトを使用することもできます。
Google Cloudの外部のネットワークへの接続では、Service Directory の構成が異なる場合があります。Service Directory を使用して Google Cloud外のホストにアクセスするをご覧ください。
- 省略可: Developer Connect が作成する認証シークレットを暗号化するための顧客管理の暗号鍵(CMEK)を作成します。
- 省略可: このガイドのコマンドラインの手順を使用するには、次の操作を行います。
- Google Cloud CLI をインストールする。 すでに gcloud CLI をインストールしている場合は、
gcloud components updateを実行して、最新のバージョンがインストールされていることを確認してください。 - 次のコマンドを実行して、Developer Connect サービス アカウントを作成します。ここで、PROJECT_ID は Google Cloud プロジェクト ID です。
gcloud beta services identity create \ --service=developerconnect.googleapis.com \ --project=PROJECT_ID
- Google Cloud CLI をインストールする。 すでに gcloud CLI をインストールしている場合は、
Developer Connect を有効にすると、Secret Manager API も有効になります。
ホストの要件
GitLab Enterprise Edition Server インスタンスをまだインストールしていない場合、手順については、GitLab Enterprise Edition のインストール ガイドをご覧ください。
GitLab Enterprise Edition Server インスタンスをインストールする手順を実行する場合は、次の点に注意してください。
HTTPSプロトコルを処理するようにホストを構成する必要があります。HTTPプロトコルで構成されたホストはサポートされていません。Google Cloudからホストにアクセスするために使用される URL を使用して、ホストを構成する必要があります。詳細については、GitLab ドキュメントで外部 URL の構成をご覧ください。
必要なロール
接続とリンクの作成に必要な権限を取得するには、管理者に次の IAM ロールを付与するよう依頼してください。
-
プロジェクト オーナーでない場合:
ユーザー アカウントのDeveloper Connect 管理者 (
roles/developerconnect.admin)。 -
CMEK を使用して Developer Connect が作成するシークレットを暗号化する場合は、Secret Manager サービス アカウントに対する Cloud KMS CryptoKey Encrypter/Decrypter (
roles/cloudkms.cryptoKeyEncrypterDecrypter) -
gcloud CLI を使用してこのガイドの手順を完了する場合は、Developer Connect サービス アカウントに対する Secret Manager 管理者ロール (
roles/secretmanager.admin)が必要です。 -
Google Cloud コンソールを使用してこのガイドの手順を完了する場合は、ユーザー アカウントに対するプロジェクト IAM 管理者 (
roles/resourcemanager.projectIamAdmin)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
Service Directory を使用する権限を付与する
Developer Connect で Service Directory を使用し、Service Directory で VPC ネットワーク リソースにアクセスできるようにするには、次の手順を行います。
次のコマンドを実行して、Developer Connect サービス アカウントに Service Directory を使用する権限を付与します。
PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") SERVICE_ACCOUNT="service-${PROJECT_NUMBER}@gcp-sa-devconnect.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding SERVICE_DIRECTORY_RESOURCE_PROJECT_ID \ --member="serviceAccount:${SERVICE_ACCOUNT}" \ --role="roles/servicedirectory.viewer"次のように置き換えます。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID。
- SERVICE_DIRECTORY_RESOURCE_PROJECT_ID: Service Directory サービス リソースを含む Google Cloud プロジェクトのプロジェクト ID。
Service Directory が VPC ネットワーク リソースにアクセスするための権限を付与します。ネットワーク リソースは別のプロジェクトに配置できます。
gcloud projects add-iam-policy-binding NETWORK_RESOURCE_PROJECT_ID \ --member="serviceAccount:${SERVICE_ACCOUNT}" \ --role="roles/servicedirectory.pscAuthorizedService"NETWORK_RESOURCE_PROJECT_ID は、VPC ネットワーク リソースを含むプロジェクトのプロジェクト ID に置き換えます。
Service Directory を使用して Google Cloud外のホストにアクセスする
Service Directory は、IP アドレス範囲 35.199.192.0/19 を使用して Google Cloud外のホストを接続します。この範囲をファイアウォールの許可リストに追加する必要があります。さらに、この範囲を Cloud VPN または Cloud Interconnect 接続経由でルーティングするようにプライベート ネットワークを構成する必要があります。
接続で Cloud Router を使用する場合は、プライベート ネットワークへの範囲を通信するように接続を構成できます。
詳細については、プライベート ネットワーク アクセスを構成するをご覧ください。
Cloud Load Balancing を使用して Google Cloud外のホストにアクセスする
ネットワーク構成で Service Directory の IP アドレス範囲 35.199.192.0/19 を Cloud VPN または Cloud Interconnect にルーティングできない場合は、Cloud Load Balancer を使用してロードバランサを作成して、トラフィックをホストに転送できます。
Service Directory エンドポイントを作成するときは、ホストの IP アドレスではなく、ロードバランサの転送ルールの IP アドレスを使用してください。エンドポイントの作成時に、内部 HTTPS ロードバランサまたは内部伝送制御プロトコル(TCP)ロードバランサを使用できます。
TCP ロードバランサを作成する場合は、次の点を考慮してください。
- ホストに到達するには、ハイブリッド接続ネットワーク エンドポイント グループ(NEG)のみが必要です。
- TCP ロードバランサでは、SSL 証明書用に暗号化されていない秘密鍵は必要ありません。
- Cloud VPN の設定では、グローバル動的ルーティングで Cloud Router を使用する必要があります。Cloud VPN で静的ルーティングが使用されている場合は、代わりに Cloud Service Mesh を使用するプロキシを使用できます。詳細については、ハイブリッド デプロイ用にネットワーク エッジ サービスを設定するをご覧ください。
HTTPS ロードバランサの作成の詳細については、ハイブリッド接続で内部アプリケーション ロードバランサを設定するをご覧ください。TCP ロードバランサの作成の詳細については、ハイブリッド接続でリージョン内部プロキシ ネットワーク ロードバランサを設定するをご覧ください。
アクセス トークンを作成する
GitLab でアクセス トークンを作成する手順は次のとおりです。
GitLab ドキュメントの手順に沿って、次の権限を持つ個人用アクセス トークン、グループ アクセス トークン、またはプロジェクト アクセス トークンを作成します。
- リポジトリの接続と切断に使用する
apiスコープのトークン 1 つ。 - リポジトリ内のソースコードを Developer Connect が読み取れるようにする
read_apiスコープのトークン 1 つ。 - グループ アクセス トークンとプロジェクト アクセス トークンの場合、トークンには Maintainer 以上のロールが必要です。
- リポジトリの接続と切断に使用する
接続を作成する
このセクションでは、Developer Connect と GitLab Enterprise 間の接続を作成する方法について説明します。 Google Cloud コンソールを使用している場合は、接続の設定が完了したら、リポジトリへのリンクの追加を開始することもできます。
新しい GitLab Enterprise 接続を作成するには、次のいずれかのオプションを選択します。
コンソール
次の手順で接続を開始します。
Google Cloud コンソールで Developer Connect を開きます。
Developer Connect に [Git リポジトリ] ページが表示されます。
- ソースコード管理プロバイダのリストが表示された場合: ソースコード管理プロバイダを選択して、最初の接続の構成を開始します。GitLab Enterprise カードで [接続] をクリックします。
既存の接続を一覧表示するテーブルが表示された場合: [接続を作成] > [GitLab Enterprise] をクリックして、ソースコード管理プロバイダを設定します。
[接続を作成] ページが開きます。
[リージョン] で、接続リソースのリージョンを選択します。
- [名前] に、新しい接続の名前を入力します。
[アクセス トークン] セクションで、アカウントのトークンを入力します。
- API アクセス トークン:
apiスコープのアクセス トークンを入力します。 - 読み取り API アクセス トークン:
read_apiスコープのアクセス トークンを入力します。
GitLab トークンが有効な状態を維持する責任はお客様にあります。トークン作成者または管理者が別途指定しない限り、GitLab トークンの最大有効期間は 365 日です。トークンの有効期限の設定と通知を管理する方法については、個人用アクセス トークン、グループ アクセス トークン、プロジェクト アクセス トークンに関する GitLab のドキュメントをご覧ください。
- API アクセス トークン:
[ホスト URL] に、接続するホストの URL を入力します。
[詳細を表示] をクリックすると、オプションの構成設定が表示されます。
[Developer Connect プロキシを有効にする] チェックボックスはデフォルトでオンになっています。これにより、Developer Connect が GitLab Enterprise への Git 呼び出しのプロキシとして機能します。
[ネットワーキング] セクションの [ネットワーク タイプ] で、[プライベート ネットワーク] を選択します。
[CA 証明書] で、[参照] をクリックして自己署名証明書をアップロードします。
証明書のサイズは 10 KB 以下で、PEM 形式(.pem、.cer、.crt)にする必要があります。このセクションを空白のままにした場合は、代わりにデフォルトの証明書セットが使用されます。
[Service Directory サービス] セクションで、サービスのロケーションを選択します。
- プロジェクト
your-project内 - 別のプロジェクト内
- 手動で入力
[別のプロジェクト内] または [手動で入力] を選択した場合は、 Google Cloud プロジェクト ID を指定します。プルダウン メニューでプロジェクトを選択するか、プロジェクト ID を手動で入力します。
- プロジェクト
リージョン: Service Directory サービスのリージョンを選択します。サービス用に指定されるリージョンは、接続に関連付けられたリージョンと一致する必要があります。
名前空間: Service Directory サービスの名前空間を選択します。
サービス: 名前空間内の Service Directory サービス名を選択します。
省略可: [暗号化] セクションで、Developer Connect が作成する Secret Manager シークレットを暗号化する CMEK 鍵を選択します。
[続行] をクリックします。
接続が作成されると、[リポジトリをリンク] ページが表示されます。
リポジトリを接続にリンクする手順は次のとおりです。
使用可能なリポジトリのリストで、使用するリポジトリを選択します。
[OK] をクリックします。
[リンク] をクリックします。
接続が [接続] ページに追加され、リポジトリ リンクが Google Cloud コンソールの [リポジトリ] ページに追加されます。既存の接続にリンクを追加することはいつでも可能です。
Gemini Code Assist を設定している場合は、Gemini Code Assist のコード カスタマイズを構成して使用するの手順に沿ってプロセスを続行します。
gcloud
次のコマンドを実行して、Secret Manager で Webhook シークレットを作成します。ここで、WEBHOOK_SECRET_NAME は Webhook シークレットの名前です。
cat /proc/sys/kernel/random/uuid | tr -d '\n' | gcloud secrets create WEBHOOK_SECRET_NAME次のコマンドを実行して、Secret Manager にアクセス トークンを保存します。
gcloud secrets create API_SECRET_NAME echo -n API_SECRET_DATA | gcloud secrets versions add API_SECRET_NAME --data-file=- gcloud secrets create READ_SECRET_NAME echo -n READ_SECRET_DATA | gcloud secrets versions add READ_SECRET_NAME --data-file=-次のように置き換えます。
- API_SECRET_NAME:
apiスコープのトークンを保存する Secret の名前。 - API_SECRET_DATA:
glpat-XXXXXXXXXXXXXXXXと同様のapiスコープのトークン。 - READ_SECRET_NAME:
read_apiスコープのトークンを保存する Secret の名前。 - READ_SECRET_DATA:
glpat-XXXXXXXXXXXXXXXXと同様のread_apiスコープのトークン。
- API_SECRET_NAME:
gcloud developer-connect connections create コマンドを実行して、GitLab Enterprise への接続を作成します。
gcloud beta developer-connect connections create CONNECTION_NAME \ --location=REGION \ --gitlab-config-read-authorizer-credential-user-token-secret-version=projects/PROJECT_ID/secrets/READ_SECRET_NAME/versions/VERSION \ --gitlab-config-authorizer-credential-user-token-secret-version=projects/PROJECT_ID/secrets/API_SECRET_NAME/versions/VERSION \ --gitlab-enterprise-config-host-uri=HOST_URI --gitlab-enterprise-config-webhook-secret-version=projects/PROJECT_ID/secrets/WEBHOOK_SECRET_NAME/versions/VERSION --git-proxy-config-enabled次のように置き換えます。
- CONNECTION_NAME: 接続の名前。
- REGION: 接続のリージョン。
- PROJECT_ID: Google Cloudのプロジェクト ID。
- READ_SECRET_NAME:
read_apiスコープのトークンを含む Secret Manager シークレットの名前。 - API_SECRET_NAME:
apiスコープのトークンを含む Secret Manager シークレットの名前。 - VERSION: 各シークレットのバージョン番号。最新のバージョン番号を使用するには、
latestを指定します。 - HOST_URI: 接続するホストの URI。
- WEBHOOK_SECRET_NAME: Webhook シークレットを含む Secret Manager シークレットの名前。
--git-proxy-config-enabledは、Developer Connect が GitLab Enterprise への Git 呼び出しのプロキシとして機能できるようにするオプションのフラグです。プライベート ネットワークでホストされている GitLab Enterprise ソースコード リポジトリで Gemini Code Assist のコード カスタマイズを実行する場合は、この機能を有効にする必要があります。--gitlab-enterprise-config-ssl-ca-certificateは、SSL 証明書を追加するための省略可能なフラグです。形式は$HOME/my-ssl-ca.txtです。
Developer Connect が GitLab への接続を完了します。次に、リポジトリにリンクします。
既存の接続を使用してリポジトリにリンクする
GitLab Enterprise への接続を確立したら、リポジトリにリンクできます。必要に応じて、後でこの手順を繰り返してリポジトリを追加できます。
既存の GitLab Enterprise 接続にリポジトリ リンクを作成するには、次のいずれかのオプションを選択します。
コンソール
次の手順で、リポジトリへのリンクを作成します。
Google Cloud コンソールで [リポジトリ] ページを開きます。
[リポジトリをリンクする] をクリックします。
[Git リポジトリをリンク] ペインが開きます。
接続リストで接続を選択します。
[続行] をクリックします。
リポジトリのリストで、リンクするリポジトリを選択します。
Developer Connect に、リポジトリ リソースの候補名が表示されます。
リポジトリ リソースの命名オプションを選択します。
- 生成済み: 生成されたリポジトリ リソース名を使用します。
- Manual: 独自の名前を入力します。
[作成] をクリックします。
Developer Connect は、リポジトリ リンクを作成して Google Cloud コンソールに表示します。
gcloud
次のコマンドを実行して、GitLab リポジトリにリンクします。
gcloud beta developer-connect connections git-repository-links create REPO_NAME \
--clone-uri=REPO_URI \
--connection=CONNECTION_NAME \
--location=REGION
次のように置き換えます。
- REPO_NAME: リポジトリ リンクの名前。
- REPO_URI: リポジトリへのリンク(
https://gitlab.com/my-project/test-repo.gitなど)。 - CONNECTION_NAME: 接続の名前。
- REGION: 接続のリージョン。
Developer Connect がリポジトリ リンクを作成します。
リンクされたリポジトリを一覧表示するには、developer-connect connections git-repository-links list コマンドを実行します。
Gemini Code Assist を設定している場合は、Gemini Code Assist のコード カスタマイズを構成して使用するの手順に沿ってプロセスを続行します。
次のステップ
- Gemini Code Assist のコード カスタマイズの設定を完了する。
- Gemini Code Assist がソフトウェア開発を加速させる方法をご確認ください。
- Developer Connect で利用可能な他の統合について確認する。