InfoGrab Docs

Cloud Connector

요약

GitLab Cloud Connector는 여러 GitLab 배포, 인스턴스 및 셀에 공통되는 서비스에 접근하는 방법입니다. Cloud Connector는 공유 소유권을 갖습니다. Cloud Connector에 대한 자세한 정보는 핸드북의 아키텍처 페이지를 참조하세요.

GitLab Cloud Connector는 여러 GitLab 배포, 인스턴스 및 셀에 공통되는 서비스에 접근하는 방법입니다. 현재 Cloud Connector는 전용 서비스 자체가 아니라 GitLab 인스턴스와 클라우드 기반 서비스를 통합할 때 인증 및 기타 항목에 대한 접근 방식을 표준화하는 API 및 코드의 모음입니다. 이 페이지는 Cloud Connector를 사용하여 GitLab Rails를 서비스에 연결하는 방법을 설명합니다.

소유권#

Cloud Connector는 공유 소유권을 갖습니다. 요청이나 질문이 있는 경우 핸드북을 참조하고 해당 팀에 문의하세요.

아키텍처#

Cloud Connector에 대한 자세한 정보는 핸드북의 아키텍처 페이지를 참조하세요. 문서 전반에서 사용되는 용어 목록은 용어를 참조하세요.

"Cloud Connected" 백엔드#

AI Gateway는 CloudConnector와 연결된 기본 백엔드 서비스입니다. AI 기능 개발 컨텍스트에서, 새로운 또는 기존 기능이 AI Gateway에서 제공될 것으로 예상합니다.

튜토리얼: Cloud Connector를 사용하여 새 기능 연결#

유료 기능이 GitLab 티어 및 애드온에 어떻게 번들되는지에 대한 정보는 유닛 프리미티브 및 구성을 확인하세요. 기능에 새 유닛 프리미티브가 필요한지 결정합니다. 필요한 경우 다음 단계를 따르세요:

  1. JWT 발급자에 새 기능 등록.
  2. GitLab Rails에서 권한 검사 구현.
  3. 백엔드 서비스에서 인가 검사 구현.

JWT 발급자에 새 기능 등록#

  • GitLab Dedicated 및 GitLab Self-Managed의 경우 CustomersDot이 JWT 발급자입니다.
  • GitLab.com 배포의 경우 GitLab.com이 JWT 발급자입니다. Cloud Connector 기능에 대한 모든 요청에 대해 자체 서명 및 JWT 생성이 가능하기 때문입니다.

gitlab-cloud-connector 저장소에 새 기능을 유닛 프리미티브로 등록해야 합니다. 이 저장소는 모든 Cloud Connector 구성에 대한 단일 소스(SSoT)로 사용됩니다.

새 기능을 등록하려면:

  1. gitlab-cloud-connector 저장소의 config/unit_primitives/ 디렉토리에 새 YAML 파일을 생성합니다.
  2. 유닛 프리미티브 구성을 정의하고 스키마를 따르는지 확인합니다.
  3. 라이브러리의 새 버전 게시 및 GitLab 프로젝트에서 사용을 위한 릴리스 체크리스트를 따르세요.

GitLab Rails에서 권한 검사 구현#

인증#

예를 들어, 기능은 new_feature라는 새 유닛 프리미티브로 제공됩니다.

Gitlab::AiGateway.headers(user: user, unit_primitive_name: :new_feature, ai_feature_name: ai_feature_name_from_catalog)를 호출하면 AI Gateway에 대한 모든 요청에 첨부해야 할 헤더 세트를 얻을 수 있습니다. 적절한 ai_feature_name_from_catalog 값을 선택하려면 AiFeaturesCatalogue를 참조하세요.

헤더 세트에는 AI Gateway로 AI 요청을 인증하는 데 필요한 모든 것이 포함되어 있습니다. 특히 Authorization 필드에 액세스 토큰이 포함되어 있습니다:

  • GitLab.com에서는 제공된 리소스에 따른 범위를 가진 토큰을 자체 발급합니다:
    • 사용자의 경우: 범위는 사용자의 시트 할당을 기반으로 합니다
    • 네임스페이스의 경우: 범위는 해당 네임스페이스에 대한 구매된 애드온을 기반으로 합니다
  • GitLab Self-Managed에서는 항상 데이터베이스에 저장된 ::CloudConnector::ServiceAccessToken JWT 토큰을 포함합니다.

백엔드 서비스(AI Gateway)는 요청을 받을 때 이 토큰과 포함된 범위를 검증해야 합니다.

Gitlab::AiGateway.headers의 결과에 추가 사용자 정의 헤더를 병합할 수 있습니다.

권한 검사#

GitLab Rails에서의 권한 검사는 필수가 아니지만, 요청이 AI Gateway에 도달하기 전에 거부함으로써 사용자 경험을 향상시키는 조기 게이트 역할을 합니다. AI Gateway는 이러한 프런트엔드 검사에 관계없이 필요한 모든 인가를 강제합니다.

이러한 선택적 검사는 다음에 유용할 수 있습니다:

  • 기능 가용성에 대한 사용자에게 즉각적인 피드백 제공
  • 백엔드 서비스에 대한 불필요한 네트워크 요청 감소
  • 전반적인 애플리케이션 성능 및 인지 성능 개선

구현 방법:

  • 실험적/무료 기능: 기능이 무료로 접근 가능한 경우 이는 보통 실험적 기능이 테스팅 계약의 적용을 받는다는 것을 의미합니다.
    • GitLab Duo 기능의 경우 고객이 무료로 실험적 기능을 사용하려면 실험적 토글을 활성화해야 합니다.
  • GitLab.com 및 GitLab Self-Managed의 유료 기능: 백엔드 요청을 하기 전에 사용자가 해당 기능을 사용할 권한이 있는지 확인합니다.
# 제공된 사용자에 대해 기능 사용 권한이 있는지 확인합니다.
current_user.allowed_to_use?(:new_feature)

예시#

다음 예시는 :new_feature라는 서비스에 대한 요청입니다.

ee/global_policy.rb에 새 정책 규칙 추가:

  condition(:new_feature_licensed) do
    next true if ::Gitlab::Saas.feature_available?(:new_feature_on_saas)
    ::License.feature_available?(:new_feature)
  end

  condition(:user_allowed_to_use_new_feature) do
    @user.allowed_to_use?(:new_feature)
  end

  rule { new_feature_licensed & user_allowed_to_use_new_feature }.enable :access_new_feature

요청 전송

# 시트 할당, 애드온 구매를 기반으로 해당 사용자에게 기능이 사용 가능한지 확인
return unauthorized! unless current_user.can?(:access_new_feature)

Gitlab::HTTP.post(
  "#{ai_gateway_base_url}#{feature_endpoint}",
  headers: Gitlab::AiGateway.headers(user: user, unit_primitive_name: :new_feature, ai_feature_name: <CORRESPONDING ENTRY FROM AiFeaturesCatalogue>),
  body: <REQUEST BODY>,
)

백엔드 서비스에서 인가 검사 구현#

GitLab Rails는 백엔드 서비스(AI Gateway)를 호출하여 GitLab Self-Managed 및 Dedicated 인스턴스에 달리 사용 불가능한 기능을 제공합니다. GitLab Rails가 이를 호출할 수 있으려면 엔드포인트가 노출되어야 합니다. 백엔드 서비스는 Authorization 헤더에서 GitLab Rails가 보낸 각 JWT를 검증해야 합니다.

AI Gateway 인가 프로세스에 대한 자세한 정보 및 예시는 AI Gateway의 인가 문서를 확인하세요.

테스트#

E2E 통합 테스트를 AI Gateway를 백엔드 서비스로 사용하여 실행하려면 로컬 환경에서 GitLab Duo 설정 지침을 따르세요.

Cloud Connector

원문 보기
요약

GitLab Cloud Connector는 여러 GitLab 배포, 인스턴스 및 셀에 공통되는 서비스에 접근하는 방법입니다. Cloud Connector는 공유 소유권을 갖습니다. Cloud Connector에 대한 자세한 정보는 핸드북의 아키텍처 페이지를 참조하세요.

GitLab Cloud Connector는 여러 GitLab 배포, 인스턴스 및 셀에 공통되는 서비스에 접근하는 방법입니다. 현재 Cloud Connector는 전용 서비스 자체가 아니라 GitLab 인스턴스와 클라우드 기반 서비스를 통합할 때 인증 및 기타 항목에 대한 접근 방식을 표준화하는 API 및 코드의 모음입니다. 이 페이지는 Cloud Connector를 사용하여 GitLab Rails를 서비스에 연결하는 방법을 설명합니다.

소유권#

Cloud Connector는 공유 소유권을 갖습니다. 요청이나 질문이 있는 경우 핸드북을 참조하고 해당 팀에 문의하세요.

아키텍처#

Cloud Connector에 대한 자세한 정보는 핸드북의 아키텍처 페이지를 참조하세요. 문서 전반에서 사용되는 용어 목록은 용어를 참조하세요.

"Cloud Connected" 백엔드#

AI Gateway는 CloudConnector와 연결된 기본 백엔드 서비스입니다. AI 기능 개발 컨텍스트에서, 새로운 또는 기존 기능이 AI Gateway에서 제공될 것으로 예상합니다.

튜토리얼: Cloud Connector를 사용하여 새 기능 연결#

유료 기능이 GitLab 티어 및 애드온에 어떻게 번들되는지에 대한 정보는 유닛 프리미티브 및 구성을 확인하세요. 기능에 새 유닛 프리미티브가 필요한지 결정합니다. 필요한 경우 다음 단계를 따르세요:

  1. JWT 발급자에 새 기능 등록.
  2. GitLab Rails에서 권한 검사 구현.
  3. 백엔드 서비스에서 인가 검사 구현.

JWT 발급자에 새 기능 등록#

  • GitLab Dedicated 및 GitLab Self-Managed의 경우 CustomersDot이 JWT 발급자입니다.
  • GitLab.com 배포의 경우 GitLab.com이 JWT 발급자입니다. Cloud Connector 기능에 대한 모든 요청에 대해 자체 서명 및 JWT 생성이 가능하기 때문입니다.

gitlab-cloud-connector 저장소에 새 기능을 유닛 프리미티브로 등록해야 합니다. 이 저장소는 모든 Cloud Connector 구성에 대한 단일 소스(SSoT)로 사용됩니다.

새 기능을 등록하려면:

  1. gitlab-cloud-connector 저장소의 config/unit_primitives/ 디렉토리에 새 YAML 파일을 생성합니다.
  2. 유닛 프리미티브 구성을 정의하고 스키마를 따르는지 확인합니다.
  3. 라이브러리의 새 버전 게시 및 GitLab 프로젝트에서 사용을 위한 릴리스 체크리스트를 따르세요.

GitLab Rails에서 권한 검사 구현#

인증#

예를 들어, 기능은 new_feature라는 새 유닛 프리미티브로 제공됩니다.

Gitlab::AiGateway.headers(user: user, unit_primitive_name: :new_feature, ai_feature_name: ai_feature_name_from_catalog)를 호출하면 AI Gateway에 대한 모든 요청에 첨부해야 할 헤더 세트를 얻을 수 있습니다. 적절한 ai_feature_name_from_catalog 값을 선택하려면 AiFeaturesCatalogue를 참조하세요.

헤더 세트에는 AI Gateway로 AI 요청을 인증하는 데 필요한 모든 것이 포함되어 있습니다. 특히 Authorization 필드에 액세스 토큰이 포함되어 있습니다:

  • GitLab.com에서는 제공된 리소스에 따른 범위를 가진 토큰을 자체 발급합니다:
    • 사용자의 경우: 범위는 사용자의 시트 할당을 기반으로 합니다
    • 네임스페이스의 경우: 범위는 해당 네임스페이스에 대한 구매된 애드온을 기반으로 합니다
  • GitLab Self-Managed에서는 항상 데이터베이스에 저장된 ::CloudConnector::ServiceAccessToken JWT 토큰을 포함합니다.

백엔드 서비스(AI Gateway)는 요청을 받을 때 이 토큰과 포함된 범위를 검증해야 합니다.

Gitlab::AiGateway.headers의 결과에 추가 사용자 정의 헤더를 병합할 수 있습니다.

권한 검사#

GitLab Rails에서의 권한 검사는 필수가 아니지만, 요청이 AI Gateway에 도달하기 전에 거부함으로써 사용자 경험을 향상시키는 조기 게이트 역할을 합니다. AI Gateway는 이러한 프런트엔드 검사에 관계없이 필요한 모든 인가를 강제합니다.

이러한 선택적 검사는 다음에 유용할 수 있습니다:

  • 기능 가용성에 대한 사용자에게 즉각적인 피드백 제공
  • 백엔드 서비스에 대한 불필요한 네트워크 요청 감소
  • 전반적인 애플리케이션 성능 및 인지 성능 개선

구현 방법:

  • 실험적/무료 기능: 기능이 무료로 접근 가능한 경우 이는 보통 실험적 기능이 테스팅 계약의 적용을 받는다는 것을 의미합니다.
    • GitLab Duo 기능의 경우 고객이 무료로 실험적 기능을 사용하려면 실험적 토글을 활성화해야 합니다.
  • GitLab.com 및 GitLab Self-Managed의 유료 기능: 백엔드 요청을 하기 전에 사용자가 해당 기능을 사용할 권한이 있는지 확인합니다.
# 제공된 사용자에 대해 기능 사용 권한이 있는지 확인합니다.
current_user.allowed_to_use?(:new_feature)

예시#

다음 예시는 :new_feature라는 서비스에 대한 요청입니다.

ee/global_policy.rb에 새 정책 규칙 추가:

  condition(:new_feature_licensed) do
    next true if ::Gitlab::Saas.feature_available?(:new_feature_on_saas)
    ::License.feature_available?(:new_feature)
  end

  condition(:user_allowed_to_use_new_feature) do
    @user.allowed_to_use?(:new_feature)
  end

  rule { new_feature_licensed & user_allowed_to_use_new_feature }.enable :access_new_feature

요청 전송

# 시트 할당, 애드온 구매를 기반으로 해당 사용자에게 기능이 사용 가능한지 확인
return unauthorized! unless current_user.can?(:access_new_feature)

Gitlab::HTTP.post(
  "#{ai_gateway_base_url}#{feature_endpoint}",
  headers: Gitlab::AiGateway.headers(user: user, unit_primitive_name: :new_feature, ai_feature_name: <CORRESPONDING ENTRY FROM AiFeaturesCatalogue>),
  body: <REQUEST BODY>,
)

백엔드 서비스에서 인가 검사 구현#

GitLab Rails는 백엔드 서비스(AI Gateway)를 호출하여 GitLab Self-Managed 및 Dedicated 인스턴스에 달리 사용 불가능한 기능을 제공합니다. GitLab Rails가 이를 호출할 수 있으려면 엔드포인트가 노출되어야 합니다. 백엔드 서비스는 Authorization 헤더에서 GitLab Rails가 보낸 각 JWT를 검증해야 합니다.

AI Gateway 인가 프로세스에 대한 자세한 정보 및 예시는 AI Gateway의 인가 문서를 확인하세요.

테스트#

E2E 통합 테스트를 AI Gateway를 백엔드 서비스로 사용하여 실행하려면 로컬 환경에서 GitLab Duo 설정 지침을 따르세요.