비공개 네트워크의 GitLab Enterprise 저장소에 연결

이 페이지에서는 Developer Connect 및 서비스 디렉터리를 사용하여 비공개 네트워크에서 호스팅되는 GitLab Enterprise 저장소에 연결하는 방법을 설명합니다. 콘솔 또는 Google Cloud CLI를 사용하여 이러한 작업을 완료할 수 있습니다. Google Cloud

이 안내는 Google과 함께 GitLab Enterprise 소스 코드 저장소를 사용하려는 애플리케이션 개발자, 플랫폼 관리자, 보안 관리자를 대상으로 합니다. 특히 Gemini Code Assist와 함께 GitLab Enterprise 저장소를 사용할 수 있습니다.

Developer Connect에 대한 자세한 내용은 Developer Connect 개요를 참조하세요.

시작하기 전에

  1. 로그인하여 Google 계정을 사용하세요.

    아직 계정이 없으면 새 계정을 등록하세요.

  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  8. Developer Connect를 사용 설정하면 Secret Manager API도 사용 설정됩니다.

  9. GitLab Enterprise의 계정에 액세스할 수 있는지 확인합니다.

    팀의 작업을 안전하게 유지하려면 개인 계정이 아닌 서비스 계정 또는 팀에서 공유하는 계정을 사용하여 이 가이드의 작업을 완료하는 것이 좋습니다.

  10. GitLab Enterprise 저장소를 소유하고 있거나 공유 저장소에 대한 관리자 수준 권한이 있는지 확인합니다.
  11. 비공개 네트워크에 연결하기 위한 서비스 디렉터리 서비스 리소스가 있는지 확인하거나 서비스 디렉터리 서비스 리소스를 만듭니다. Developer Connect와 함께 사용하는 동일한 프로젝트에서 서비스 디렉터리 서비스 리소스를 만들거나 다른 프로젝트를 사용할 수 있습니다.

    외부 네트워크에 연결하려면 서비스 디렉터리를 다르게 구성해야 할 수 있습니다 Google Cloud. 서비스 디렉터리를 사용하여 외부 호스트에 연결을 참조하세요. Google Cloud

  12. (선택사항) Developer Connect에서 만드는 인증 보안 비밀을 암호화하기 위한 고객 관리 암호화 키(CMEK)를 만듭니다.
  13. (선택사항) 이 가이드의 명령줄 안내를 사용하려면 다음 단계를 완료하세요.
    1. Google Cloud CLI를 설치합니다. 이전에 gcloud CLI를 설치한 경우 사용 가능한 최신 버전이 있는지 확인하려면 gcloud components update를 실행합니다.
    2. 다음 명령어를 실행하여 Developer Connect 서비스 계정 을 만듭니다. 여기서 PROJECT_IDGoogle Cloud 프로젝트 ID입니다.
              gcloud beta services identity create \
                  --service=developerconnect.googleapis.com \
                  --project=PROJECT_ID
              

호스트 요구사항

GitLab Enterprise Edition 서버 인스턴스를 설치하지 않은 경우 GitLab Enterprise Edition 설치 가이드 를 참조하세요.

GitLab Enterprise Edition 서버 인스턴스를 설치하는 안내를 따를 때 다음 사항에 유의하세요.

  • HTTPS 프로토콜을 처리하도록 호스트를 구성해야 합니다. HTTP 프로토콜로 구성된 호스트는 지원되지 않습니다.

  • 에서 호스트에 연결하는 데 사용되는 것과 동일한 URL로 호스트를 구성해야 합니다 Google Cloud. 자세한 내용은 외부 URL 구성에 관한 GitLab 문서를 참조하세요.

필요한 역할

연결 및 링크를 만드는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.

  • 프로젝트 소유자가 아닌 경우: Developer Connect 관리자 (roles/developerconnect.admin) 사용자 계정에 대한.
  • Developer Connect에서 만드는 보안 비밀을 암호화하기 위해 CMEK를 사용하려는 경우: Cloud KMS CryptoKey 암호화/복호화 (roles/cloudkms.cryptoKeyEncrypterDecrypter) Secret Manager 서비스 계정에 대한.
  • gcloud CLI를 사용하여 이 가이드의 단계를 완료하려는 경우: Secret Manager 관리자 역할 (roles/secretmanager.admin) Developer Connect 서비스 계정에 대한.
  • 콘솔을 사용하여 이 가이드의 단계를 완료하려는 경우: 프로젝트 IAM 관리자 (roles/resourcemanager.projectIamAdmin) 사용자 계정에 대한. Google Cloud

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

서비스 디렉터리를 사용할 권한 부여

Developer Connect에서 서비스 디렉터리를 사용하고 서비스 디렉터리에서 VPC 네트워크 리소스에 액세스하도록 하려면 다음 단계를 완료하세요.

  1. 다음 명령어를 실행하여 Developer Connect 서비스 계정에 서비스 디렉터리를 사용할 권한을 부여합니다.

    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: 프로젝트 ID입니다. Google Cloud
    • SERVICE_DIRECTORY_RESOURCE_PROJECT_ID: 서비스 디렉터리 서비스 리소스가 포함된 프로젝트의 Google Cloud 프로젝트 ID입니다.
  2. 서비스 디렉터리에 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로 바꿉니다.

서비스 디렉터리를 사용하여 외부 호스트에 연결 Google Cloud

서비스 디렉터리는 IP 주소 범위 35.199.192.0/19를 사용하여 외부 호스트를 연결합니다 Google Cloud. 이 범위를 방화벽의 허용 목록에 추가해야 합니다. 또한 Cloud VPN 또는 Cloud Interconnect 연결을 통해 이 범위를 라우팅하도록 비공개 네트워크를 구성해야 합니다.

연결에 Cloud Router가 사용되는 경우 비공개 네트워크에 대해 범위 알림을 수행하도록 연결을 구성할 수 있습니다.

자세한 내용은 비공개 네트워크 액세스 구성을 참조하세요.

Cloud Load Balancing을 사용하여 외부 호스트에 연결 Google Cloud

네트워크 구성에서 서비스 디렉터리 IP 주소 범위 35.199.192.0/19를 Cloud VPN 또는 Cloud Interconnect로 라우팅할 수 없는 경우 트래픽을 호스트로 전달하는 Cloud Load Balancing을 사용하여 부하 분산기를 만들 수 있습니다.

서비스 디렉터리 엔드포인트를 만들 때 호스트의 IP 주소 대신 부하 분산기의 전달 규칙의 IP 주소를 사용해야 합니다. 엔드포인트를 만들 때 내부 HTTPS 부하 분산기 또는 내부 전송 제어 프로토콜(TCP) 부하 분산기를 사용할 수 있습니다.

TCP 부하 분산기를 만들 때 다음을 고려하세요.

  • 하이브리드 연결 네트워크 엔드포인트 그룹(NEG)만 호스트에 연결하면 됩니다.
  • TCP 부하 분산기는 SSL 인증서에 대해 암호화되지 않은 비공개 키가 필요하지 않습니다.
  • Cloud VPN 설정은 전역 동적 라우팅과 함께 Cloud Router를 사용해야 합니다. Cloud VPN이 정적 라우팅을 사용하는 경우, 대신 Cloud Service Mesh를 사용하는 프록시를 사용할 수 있습니다. 자세한 내용은 하이브리드 배포를 위한 네트워크 에지 서비스 설정을 참조하세요.

HTTPS 부하 분산기 만들기에 대한 자세한 내용은 하이브리드 연결로 내부 애플리케이션 부하 분산기 설정을 참조하세요. TCP 부하 분산기 만들기에 대한 자세한 내용은 하이브리드 연결로 리전 내부 프록시 네트워크 부하 분산기 설정을 참조하세요.

액세스 토큰 만들기

GitLab에서 액세스 토큰을 만들려면 다음 단계를 완료하세요.

  1. GitLab에 로그인합니다.

  2. GitLab 문서의 안내에 따라 다음 권한으로 개인 액세스 토큰, 그룹 액세스 토큰, 또는 프로젝트 액세스 토큰 을 만듭니다.

    • 저장소를 연결하고 연결 해제하기 위한 api 범위의 토큰 1개.
    • Developer Connect에서 저장소의 소스 코드를 읽을 수 있도록 허용하는 read_api 범위의 토큰 1개.
    • 그룹 액세스 토큰 및 프로젝트 액세스 토큰의 경우 토큰에 유지보수 담당자 이상의 역할이 있어야 합니다.

연결 만들기

이 섹션에서는 Developer Connect와 GitLab Enterprise 간의 연결을 만드는 방법을 설명합니다. 콘솔을 사용하는 경우 연결 설정을 완료할 때 저장소에 링크 추가를 시작할 수도 있습니다. Google Cloud

새 GitLab Enterprise 연결을 만들려면 다음 옵션 중 하나를 선택하세요.

콘솔

다음 단계를 완료하여 연결을 시작합니다.

  1. 콘솔에서 Developer Connect 를 엽니다. Google Cloud

    Developer Connect로 이동

    Developer Connect에 Git 저장소 페이지가 표시됩니다.

    • 소스 코드 관리 제공업체 목록이 표시되는 경우: 소스 코드 관리 제공업체를 선택하여 첫 번째 연결 구성을 시작합니다. GitLab Enterprise 카드에서 연결 을 클릭합니다.
    • 기존 연결을 나열하는 표가 표시되는 경우: 연결 만들기 > GitLab Enterprise 를 클릭하여 소스 코드 관리 제공업체를 설정합니다.

      연결 만들기 페이지가 열립니다.

  2. 리전에서 연결 리소스의 리전 을 선택합니다.

    1. 이름에 새 연결의 이름을 입력합니다.
  3. 액세스 토큰 섹션에서 토큰을 계정에 입력합니다.

    • API 액세스 토큰: api 범위의 액세스 토큰을 입력합니다.
    • API 액세스 토큰 읽기: read_api 범위의 액세스 토큰을 입력합니다.

    GitLab 토큰이 유효한지 확인해야 합니다. 토큰 생성자 또는 관리자가 달리 지정하지 않는 한 GitLab 토큰의 최대 수명은 365일입니다. 토큰 만료 설정 및 알림을 관리하는 방법을 알아보려면 개인 액세스 토큰, 그룹 액세스 토큰, 프로젝트 액세스 토큰에 관한 GitLab 문서를 참조하세요.

  4. 호스트 URL에 연결할 호스트의 URL을 입력합니다.

  5. 더보기 를 클릭하여 선택적 구성 설정을 확인합니다.

    1. Developer Connect가 GitLab Enterprise에 대한 Git 호출의 프록시 역할을 할 수 있도록 Developer Connect 프록시 사용 설정 체크박스가 기본적으로 선택되어 있습니다.

    2. 네트워킹 섹션의 네트워크 유형에서 비공개 네트워크를 선택합니다.

    3. CA 인증서에서 찾아보기를 클릭하여 자체 서명된 인증서를 업로드합니다.

      인증서의 크기는 10KB를 초과해서는 안 되며 PEM 형식 (.pem, .cer 또는 .crt)이어야 합니다. 이 섹션을 비워 두면 기본 인증서 세트가 대신 사용됩니다.

    4. 서비스 디렉터리 서비스 섹션에서 서비스의 위치를 선택합니다.

      • 프로젝트 your-project
      • 다른 프로젝트 내
      • 직접 입력

      다른 프로젝트 내 또는 직접 입력을 선택하는 경우 프로젝트 ID를 지정합니다. Google Cloud 드롭다운 메뉴에서 프로젝트를 선택하거나 프로젝트 ID를 직접 입력합니다.

    5. 리전: 서비스 디렉터리 서비스의 리전을 선택합니다. 서비스에 지정된 리전은 연결과 연결된 리전과 일치해야 합니다.

    6. 네임스페이스: 서비스 디렉터리 서비스의 네임스페이스를 선택합니다.

    7. 서비스: 네임스페이스에서 서비스 디렉터리 서비스 이름을 선택합니다.

    8. (선택사항) 암호화 섹션에서 CMEK 키를 선택하여 Developer Connect 에서 만드는 Secret Manager 보안 비밀을 암호화합니다.

  6. 계속 을 클릭합니다.

연결이 생성되면 저장소 연결 페이지가 표시됩니다.

다음 단계를 완료하여 저장소를 연결에 연결합니다.

  1. 사용 가능한 저장소 목록에서 사용할 저장소를 선택합니다.

  2. 확인 을 클릭합니다.

  3. 링크 를 클릭합니다.

연결이 연결 페이지에 추가되고 저장소 링크가콘솔의 저장소 페이지에 추가됩니다. Google Cloud 언제든지 기존 연결에 링크를 더 추가할 수 있습니다.

Gemini Code Assist를 설정하는 경우 Gemini Code Assist 코드 맞춤설정 구성 및 사용의 단계에 따라 프로세스를 계속 진행합니다.

gcloud

  1. 다음 명령어를 실행하여 Secret Manager에 웹훅 보안 비밀을 만듭니다. 여기서 WEBHOOK_SECRET_NAME 은 웹훅 보안 비밀의 이름입니다.

         cat /proc/sys/kernel/random/uuid | tr -d '\n' | gcloud secrets create WEBHOOK_SECRET_NAME
    
  2. 다음 명령어를 실행하여 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 범위의 토큰을 저장하는 보안 비밀의 이름입니다.
    • API_SECRET_DATA: glpat-XXXXXXXXXXXXXXXX와 유사한 api 범위의 토큰입니다.
    • READ_SECRET_NAME: read_api 범위의 토큰을 저장하는 보안 비밀의 이름입니다.
    • READ_SECRET_DATA: glpat-XXXXXXXXXXXXXXXX와 유사한 read_api 범위의 토큰입니다.
  3. 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: 프로젝트 ID입니다. Google Cloud
    • READ_SECRET_NAME: read_api 범위의 토큰이 포함된 Secret Manager 보안 비밀의 이름입니다.
    • API_SECRET_NAME: api 범위의 토큰이 포함된 Secret Manager 보안 비밀의 이름입니다.
    • VERSION: 각 보안 비밀의 버전 번호입니다. 최신 버전 번호를 사용하려면 latest일 수 있습니다.
    • HOST_URI: 연결할 호스트의 URI입니다.
    • WEBHOOK_SECRET_NAME: 웹훅 보안 비밀이 포함된 Secret Manager 보안 비밀의 이름입니다.
    • --git-proxy-config-enabled 는 Developer Connect가 GitLab Enterprise에 대한 Git 호출의 프록시 역할을 할 수 있도록 허용하는 선택적 플래그입니다. 비공개 네트워크에서 호스팅되는 GitLab Enterprise 소스 코드 저장소에서 Gemini Code Assist 코드 맞춤설정 을 실행할 때는 이 기능을 사용 설정해야 합니다.
    • --gitlab-enterprise-config-ssl-ca-certificate$HOME/my-ssl-ca.txt 형식으로 SSL 인증서를 추가하는 선택적 플래그입니다.

    Developer Connect에서 GitLab에 대한 연결을 완료합니다. 다음으로 저장소에 연결합니다.

GitLab Enterprise에 연결한 후 저장소에 연결할 수 있습니다. 나중에 필요에 따라 이러한 단계를 반복하여 저장소를 추가로 연결할 수 있습니다.

기존 GitLab Enterprise 연결에서 저장소 링크를 만들려면 다음 옵션 중 하나를 선택하세요.

콘솔

다음 단계를 완료하여 저장소에 링크를 만듭니다.

  1. 콘솔에서 저장소 페이지를 엽니다. Google Cloud

    저장소 페이지 열기

  2. 저장소 연결 을 클릭합니다.

    Git 저장소 연결 창이 열립니다.

  3. 연결 목록에서 연결을 선택합니다.

  4. 계속 을 클릭합니다.

  5. 저장소 목록에서 연결할 저장소를 선택합니다.

    Developer Connect에서 저장소 리소스의 추천 이름을 표시합니다.

  6. 저장소 리소스 이름 지정 옵션을 선택합니다.

    • 생성됨: 생성된 저장소 리소스 이름을 사용합니다.
    • 수동: 자체 이름을 입력합니다.
  7. 만들기 를 클릭합니다.

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 코드 맞춤설정 구성 및 사용의 단계에 따라 프로세스를 계속 진행합니다.

다음 단계