InfoGrab Docs

Cloud Connector: 유닛 프리미티브 및 구성

요약

GitLab Rails 인스턴스는 Cloud Connector 서비스 액세스 토큰을 사용하여 백엔드 서비스에 접근합니다: Cloud Connector JWT에는 사용자 정의 클레임이 포함되어 있으며, 이는 이 토큰이 유효한 기능 또는 유닛 프리미티브를 정의하는 접근 범위 목록을 나타냅니다.

GitLab Rails 인스턴스는 Cloud Connector 서비스 액세스 토큰을 사용하여 백엔드 서비스에 접근합니다:

  • 이 토큰은 CustomersDot에서 GitLab 인스턴스로 매일 동기화되어 인스턴스의 로컬 데이터베이스에 저장됩니다.
  • GitLab.com의 경우 이 단계가 필요하지 않습니다. 대신 각 요청에 대해 단기 토큰을 발급합니다.

Cloud Connector JWT에는 사용자 정의 클레임이 포함되어 있으며, 이는 이 토큰이 유효한 기능 또는 유닛 프리미티브를 정의하는 접근 범위 목록을 나타냅니다.

유닛 프리미티브 및 구성#

아키텍처 결정 기록(ADR) PROV-001에 따라 이 유닛 프리미티브 구성은 gitlab-cloud-connector 라이브러리에서 유지 관리됩니다. 이 라이브러리는 모든 Cloud Connector 구성에 대한 단일 소스(SSoT)로 사용되며 Ruby 젬과 Python 패키지 모두로 사용 가능합니다.

카탈로그 탐색#

Cloud Connector Catalog는 유닛 프리미티브, 기능 구성, 애드온 및 라이선스 유형을 탐색하고 필터링하는 인터랙티브 인터페이스를 제공합니다. 이 카탈로그를 다음에 사용합니다:

  • 사용 가능한 유닛 프리미티브 및 구성 탐색
  • 기능 자격 및 라이선스 요구 사항 이해
  • 애드온, 라이선스 유형 및 백엔드 서비스별 필터링

Cloud Connector Catalog 인터페이스

구성 형식 및 구조#

gitlab-cloud-connector의 구성은 다음 구조를 따릅니다:

config
  ├─ unit_primitives/
  │  ├─ duo_chat.yml
  │  └─ ...
  ├─ backend_services/
  │  ├─ ai_gateway.yml
  │  └─ ...
  ├─ add_ons/
  │  ├─ duo_pro.yml
  │  └─ ...
  ├─ services/
  │  ├─ duo_chat.yml
  │  └─ ...
  └─ license_types/
     ├─ premium.yml
     └─ ...

유닛 프리미티브 구성#

유닛 프리미티브당 하나의 YAML 파일이 있습니다. 이 유닛 프리미티브가 애드온 및 라이선스 유형과 함께 번들되는 방법과 기타 메타데이터에 대한 정보를 포함합니다. 각 유닛 프리미티브의 구성은 다음 스키마를 따릅니다.

필수 필드#
필드 유형 설명
name string snake_case 형식의 유닛 프리미티브 이름(소문자, 숫자, 밑줄). $VERB_$NOUN 패턴을 따라야 합니다(예: explain_vulnerability).
description string 유닛 프리미티브의 목적 및 기능 설명.
group string 유닛 프리미티브를 소유하는 엔지니어링 그룹(예: group::duo chat).
feature_category string 기능 카테고리 분류(카테고리 참조).
documentation_url string 유닛 프리미티브 문서의 URL.
선택적 필드#
필드 유형 설명
milestone string 유닛 프리미티브를 도입한 GitLab 마일스톤.
introduced_by_url string 유닛 프리미티브를 도입한 머지 리퀘스트 URL.
unit_primitive_issue_url string 유닛 프리미티브 도입을 제안한 이슈 URL.
deprecated_by_url string 유닛 프리미티브를 deprecated한 머지 리퀘스트 URL.
deprecation_message string deprecated 컨텍스트 및 이유 설명.
cut_off_date datetime 무료 접근이 종료되는 UTC 타임스탬프(해당하는 경우). 참고: cut-off 날짜를 정의하지 않으면 add_ons 요소가 적용되지 않고 기능이 무료 접근 상태로 유지됩니다.
min_gitlab_version string 최소 필요 GitLab 버전(예: 17.8).
min_gitlab_version_for_free_access string 무료 접근 기간의 최소 버전(예: 17.8).
접근 제어 필드#
필드 유형 설명
license_types array[string] 이 프리미티브에 접근할 수 있는 GitLab 라이선스 유형. 가능한 값은 config/license_types의 해당 파일에 있는 name 필드와 일치해야 합니다(예: premium).
backend_services array[string] 이 프리미티브를 호스팅하는 백엔드 서비스. 가능한 값은 config/backend_services의 해당 파일에 있는 name 필드와 일치해야 합니다(예: ai_gateway).
add_ons array[string] 이 프리미티브를 포함하는 애드온 제품. 이 기능에 접근하려면 나열된 애드온 중 하나 이상이 있어야 합니다. 가능한 값은 config/add_ons의 해당 파일에 있는 name 필드와 일치해야 합니다(예: duo_pro). 참고: 이 필드는 기능이 무료 접근 또는 베타 상태에서 벗어나는 cut_off_date가 정의된 경우에만 적용됩니다.

유닛 프리미티브 구성 예시:

# config/unit_primitives/new_feature.yml
---
name: new_feature
description: Description of the new feature
cut_off_date: 2024-10-17T00:00:00+00:00  # 선택 사항; 유료 기능의 경우 항상 설정
min_gitlab_version: '16.9'
min_gitlab_version_for_free_access: '16.8'
group: group::your_group
feature_category: your_category
documentation_url: https://docs.gitlab.com/path/to/docs
backend_services:
  - ai_gateway
add_ons:
  - duo_pro
  - duo_enterprise
license_types:
  - premium
  - ultimate

이 정의에 따르면 기능:

  • "Your Group"이 소유한 "New Feature"를 설명합니다.
  • GitLab 16.8 이상에서 베타(무료)로 사용 가능합니다.
  • GitLab 16.9 이상에서는 유료 애드온을 통해서만 사용 가능합니다.
  • 2024년 10월 17일 UTC 자정에 무료 접근에서 유료 접근으로 전환됩니다. 이 시점 이후에는 GitLab Duo Pro 또는 GitLab Duo Enterprise와 Premium 또는 Ultimate 구독이 있어야 합니다.
  • 위에 나열된 조건이 충족되면 Cloud Connector 토큰이 scopes 클레임에 이 기능을 포함하여 백엔드 서비스가 그에 따라 접근을 검증할 수 있습니다.
  • 이 기능은 AI Gateway에 대한 요청에만 관련이 있습니다. 해당 scopes 항목이 다른 백엔드 서비스에 보내는 요청에 첨부된 토큰의 scopes에 있을 필요는 없습니다.
Note

cut_off_date를 설정하지 않으면 add_ons에 정의된 것에 관계없이 기능이 무료로 사용 가능합니다.

관련 구성#

백엔드 서비스#

각 백엔드 서비스에는 config/backend_services 하위에 자체 YAML 구성이 있어야 합니다. 예를 들어:

# config/backend_services/ai_gateway.yml
---
name: ai_gateway
project_url: https://gitlab.com/gitlab-org/modelops/applied-ml/code-suggestions/ai-assist
group: group::ai framework
jwt_aud: gitlab-ai-gateway
애드온#

각 애드온에는 config/add_ons 하위에 자체 YAML 구성이 있어야 합니다. 예를 들어:

# config/add_ons/duo_pro.yml
---
name: duo_pro
라이선스 유형#

각 라이선스 유형에는 config/license_types 하위에 자체 YAML 구성이 있어야 합니다. 예를 들어:

# config/license_types/premium.yml
---
name: premium

이전 버전 호환성#

이전 GitLab 버전을 실행하는 고객과 기존 레거시 구조에 대한 이전 버전 호환성을 지원하기 위해 새 형식에서 기존 형식으로의 매핑과 곧 deprecated될 "서비스" 추상화를 제공합니다.

서비스 구성#

필드 유형 설명
name string 소문자 영숫자 문자와 밑줄로 구성된 서비스의 고유 이름.
basic_unit_primitive string cut_off_datemin_gitlab_version과 같은 주요 구성 값을 나타내는 가장 기본적인 유닛 프리미티브. 설정되지 않으면 unit_primitives 목록의 첫 번째 유닛 프리미티브가 사용됩니다. 서비스 전체의 이러한 공유 속성을 도출하는 데 사용됩니다.
gitlab_realm array[string] 서비스가 사용 가능한 환경 배열. 가능한 값: gitlab-com, self-managed.
description string 서비스에 대한 간략한 설명.
unit_primitives array[string] 서비스와 관련된 유닛 프리미티브 배열.

새 서비스 매핑 구성 예시:

# config/services/duo_chat.yml
---
name: duo_chat
basic_unit_primitive: duo_chat
gitlab_realm:
  - gitlab-com
  - self-managed
unit_primitives:
  - ask_build
  - ask_commit
  - ask_epic
  - ask_issue
  - ask_merge_request
  - documentation_search
  - duo_chat
  - explain_code
  - fix_code
  - include_dependency_context
  - include_file_context
  - include_issue_context
  - include_local_git_context
  - include_merge_request_context
  - include_snippet_context
  - include_terminal_context
  - include_repository_context
  - refactor_code
  - write_tests

레거시 구조#

유료 기능이 GitLab 티어 및 애드온에 번들되는 방법에 대한 정보는 YAML 파일에 구성 및 저장됩니다:

services:
  code_suggestions:
    backend: 'gitlab-ai-gateway'
    cut_off_date: 2024-02-15 00:00:00 UTC
    min_gitlab_version: '16.8'
    bundled_with:
      duo_pro:
        unit_primitives:
          - code_suggestions
  duo_chat:
    backend: 'gitlab-ai-gateway'
    min_gitlab_version_for_beta: '16.8'
    min_gitlab_version: '16.9'
    bundled_with:
      duo_pro:
        unit_primitives:
          - duo_chat
          - documentation_search
필드 유형 설명
unit_primitives array[string] 권한 또는 접근 범위가 관리할 수 있는 가장 작은 논리적 기능. $VERB_$NOUN 네이밍 패턴을 따라야 합니다(예: explain_vulnerability).
service string 기능을 제공하는 서비스 이름. 독립적이거나 기존 서비스의 일부일 수 있습니다(예: duo_chat).
bundled_with object 이 기능을 포함하는 애드온 맵. 기능은 여러 애드온과 번들될 수 있습니다(예: duo_pro, duo_enterprise).
cut_off_date datetime 무료 접근이 종료되는 UTC 타임스탬프. 설정되지 않으면 기능이 무료로 유지됩니다.
min_gitlab_version string 최소 필요 GitLab 버전(예: 17.8). 설정되지 않으면 모든 버전에서 사용 가능합니다.
min_gitlab_version_for_free_access string 무료 접근 기간의 최소 버전(예: 17.8). 설정되지 않으면 모든 버전에서 사용 가능합니다.
backend string 이 기능을 호스팅하는 백엔드 서비스의 이름, 토큰 대상 클레임으로 사용됩니다(예: gitlab-ai-gateway).

Cloud Connector: 유닛 프리미티브 및 구성

원문 보기
요약

GitLab Rails 인스턴스는 Cloud Connector 서비스 액세스 토큰을 사용하여 백엔드 서비스에 접근합니다: Cloud Connector JWT에는 사용자 정의 클레임이 포함되어 있으며, 이는 이 토큰이 유효한 기능 또는 유닛 프리미티브를 정의하는 접근 범위 목록을 나타냅니다.

GitLab Rails 인스턴스는 Cloud Connector 서비스 액세스 토큰을 사용하여 백엔드 서비스에 접근합니다:

  • 이 토큰은 CustomersDot에서 GitLab 인스턴스로 매일 동기화되어 인스턴스의 로컬 데이터베이스에 저장됩니다.
  • GitLab.com의 경우 이 단계가 필요하지 않습니다. 대신 각 요청에 대해 단기 토큰을 발급합니다.

Cloud Connector JWT에는 사용자 정의 클레임이 포함되어 있으며, 이는 이 토큰이 유효한 기능 또는 유닛 프리미티브를 정의하는 접근 범위 목록을 나타냅니다.

유닛 프리미티브 및 구성#

아키텍처 결정 기록(ADR) PROV-001에 따라 이 유닛 프리미티브 구성은 gitlab-cloud-connector 라이브러리에서 유지 관리됩니다. 이 라이브러리는 모든 Cloud Connector 구성에 대한 단일 소스(SSoT)로 사용되며 Ruby 젬과 Python 패키지 모두로 사용 가능합니다.

카탈로그 탐색#

Cloud Connector Catalog는 유닛 프리미티브, 기능 구성, 애드온 및 라이선스 유형을 탐색하고 필터링하는 인터랙티브 인터페이스를 제공합니다. 이 카탈로그를 다음에 사용합니다:

  • 사용 가능한 유닛 프리미티브 및 구성 탐색
  • 기능 자격 및 라이선스 요구 사항 이해
  • 애드온, 라이선스 유형 및 백엔드 서비스별 필터링

Cloud Connector Catalog 인터페이스

구성 형식 및 구조#

gitlab-cloud-connector의 구성은 다음 구조를 따릅니다:

config
  ├─ unit_primitives/
  │  ├─ duo_chat.yml
  │  └─ ...
  ├─ backend_services/
  │  ├─ ai_gateway.yml
  │  └─ ...
  ├─ add_ons/
  │  ├─ duo_pro.yml
  │  └─ ...
  ├─ services/
  │  ├─ duo_chat.yml
  │  └─ ...
  └─ license_types/
     ├─ premium.yml
     └─ ...

유닛 프리미티브 구성#

유닛 프리미티브당 하나의 YAML 파일이 있습니다. 이 유닛 프리미티브가 애드온 및 라이선스 유형과 함께 번들되는 방법과 기타 메타데이터에 대한 정보를 포함합니다. 각 유닛 프리미티브의 구성은 다음 스키마를 따릅니다.

필수 필드#
필드 유형 설명
name string snake_case 형식의 유닛 프리미티브 이름(소문자, 숫자, 밑줄). $VERB_$NOUN 패턴을 따라야 합니다(예: explain_vulnerability).
description string 유닛 프리미티브의 목적 및 기능 설명.
group string 유닛 프리미티브를 소유하는 엔지니어링 그룹(예: group::duo chat).
feature_category string 기능 카테고리 분류(카테고리 참조).
documentation_url string 유닛 프리미티브 문서의 URL.
선택적 필드#
필드 유형 설명
milestone string 유닛 프리미티브를 도입한 GitLab 마일스톤.
introduced_by_url string 유닛 프리미티브를 도입한 머지 리퀘스트 URL.
unit_primitive_issue_url string 유닛 프리미티브 도입을 제안한 이슈 URL.
deprecated_by_url string 유닛 프리미티브를 deprecated한 머지 리퀘스트 URL.
deprecation_message string deprecated 컨텍스트 및 이유 설명.
cut_off_date datetime 무료 접근이 종료되는 UTC 타임스탬프(해당하는 경우). 참고: cut-off 날짜를 정의하지 않으면 add_ons 요소가 적용되지 않고 기능이 무료 접근 상태로 유지됩니다.
min_gitlab_version string 최소 필요 GitLab 버전(예: 17.8).
min_gitlab_version_for_free_access string 무료 접근 기간의 최소 버전(예: 17.8).
접근 제어 필드#
필드 유형 설명
license_types array[string] 이 프리미티브에 접근할 수 있는 GitLab 라이선스 유형. 가능한 값은 config/license_types의 해당 파일에 있는 name 필드와 일치해야 합니다(예: premium).
backend_services array[string] 이 프리미티브를 호스팅하는 백엔드 서비스. 가능한 값은 config/backend_services의 해당 파일에 있는 name 필드와 일치해야 합니다(예: ai_gateway).
add_ons array[string] 이 프리미티브를 포함하는 애드온 제품. 이 기능에 접근하려면 나열된 애드온 중 하나 이상이 있어야 합니다. 가능한 값은 config/add_ons의 해당 파일에 있는 name 필드와 일치해야 합니다(예: duo_pro). 참고: 이 필드는 기능이 무료 접근 또는 베타 상태에서 벗어나는 cut_off_date가 정의된 경우에만 적용됩니다.

유닛 프리미티브 구성 예시:

# config/unit_primitives/new_feature.yml
---
name: new_feature
description: Description of the new feature
cut_off_date: 2024-10-17T00:00:00+00:00  # 선택 사항; 유료 기능의 경우 항상 설정
min_gitlab_version: '16.9'
min_gitlab_version_for_free_access: '16.8'
group: group::your_group
feature_category: your_category
documentation_url: https://docs.gitlab.com/path/to/docs
backend_services:
  - ai_gateway
add_ons:
  - duo_pro
  - duo_enterprise
license_types:
  - premium
  - ultimate

이 정의에 따르면 기능:

  • "Your Group"이 소유한 "New Feature"를 설명합니다.
  • GitLab 16.8 이상에서 베타(무료)로 사용 가능합니다.
  • GitLab 16.9 이상에서는 유료 애드온을 통해서만 사용 가능합니다.
  • 2024년 10월 17일 UTC 자정에 무료 접근에서 유료 접근으로 전환됩니다. 이 시점 이후에는 GitLab Duo Pro 또는 GitLab Duo Enterprise와 Premium 또는 Ultimate 구독이 있어야 합니다.
  • 위에 나열된 조건이 충족되면 Cloud Connector 토큰이 scopes 클레임에 이 기능을 포함하여 백엔드 서비스가 그에 따라 접근을 검증할 수 있습니다.
  • 이 기능은 AI Gateway에 대한 요청에만 관련이 있습니다. 해당 scopes 항목이 다른 백엔드 서비스에 보내는 요청에 첨부된 토큰의 scopes에 있을 필요는 없습니다.
Note

cut_off_date를 설정하지 않으면 add_ons에 정의된 것에 관계없이 기능이 무료로 사용 가능합니다.

관련 구성#

백엔드 서비스#

각 백엔드 서비스에는 config/backend_services 하위에 자체 YAML 구성이 있어야 합니다. 예를 들어:

# config/backend_services/ai_gateway.yml
---
name: ai_gateway
project_url: https://gitlab.com/gitlab-org/modelops/applied-ml/code-suggestions/ai-assist
group: group::ai framework
jwt_aud: gitlab-ai-gateway
애드온#

각 애드온에는 config/add_ons 하위에 자체 YAML 구성이 있어야 합니다. 예를 들어:

# config/add_ons/duo_pro.yml
---
name: duo_pro
라이선스 유형#

각 라이선스 유형에는 config/license_types 하위에 자체 YAML 구성이 있어야 합니다. 예를 들어:

# config/license_types/premium.yml
---
name: premium

이전 버전 호환성#

이전 GitLab 버전을 실행하는 고객과 기존 레거시 구조에 대한 이전 버전 호환성을 지원하기 위해 새 형식에서 기존 형식으로의 매핑과 곧 deprecated될 "서비스" 추상화를 제공합니다.

서비스 구성#

필드 유형 설명
name string 소문자 영숫자 문자와 밑줄로 구성된 서비스의 고유 이름.
basic_unit_primitive string cut_off_datemin_gitlab_version과 같은 주요 구성 값을 나타내는 가장 기본적인 유닛 프리미티브. 설정되지 않으면 unit_primitives 목록의 첫 번째 유닛 프리미티브가 사용됩니다. 서비스 전체의 이러한 공유 속성을 도출하는 데 사용됩니다.
gitlab_realm array[string] 서비스가 사용 가능한 환경 배열. 가능한 값: gitlab-com, self-managed.
description string 서비스에 대한 간략한 설명.
unit_primitives array[string] 서비스와 관련된 유닛 프리미티브 배열.

새 서비스 매핑 구성 예시:

# config/services/duo_chat.yml
---
name: duo_chat
basic_unit_primitive: duo_chat
gitlab_realm:
  - gitlab-com
  - self-managed
unit_primitives:
  - ask_build
  - ask_commit
  - ask_epic
  - ask_issue
  - ask_merge_request
  - documentation_search
  - duo_chat
  - explain_code
  - fix_code
  - include_dependency_context
  - include_file_context
  - include_issue_context
  - include_local_git_context
  - include_merge_request_context
  - include_snippet_context
  - include_terminal_context
  - include_repository_context
  - refactor_code
  - write_tests

레거시 구조#

유료 기능이 GitLab 티어 및 애드온에 번들되는 방법에 대한 정보는 YAML 파일에 구성 및 저장됩니다:

services:
  code_suggestions:
    backend: 'gitlab-ai-gateway'
    cut_off_date: 2024-02-15 00:00:00 UTC
    min_gitlab_version: '16.8'
    bundled_with:
      duo_pro:
        unit_primitives:
          - code_suggestions
  duo_chat:
    backend: 'gitlab-ai-gateway'
    min_gitlab_version_for_beta: '16.8'
    min_gitlab_version: '16.9'
    bundled_with:
      duo_pro:
        unit_primitives:
          - duo_chat
          - documentation_search
필드 유형 설명
unit_primitives array[string] 권한 또는 접근 범위가 관리할 수 있는 가장 작은 논리적 기능. $VERB_$NOUN 네이밍 패턴을 따라야 합니다(예: explain_vulnerability).
service string 기능을 제공하는 서비스 이름. 독립적이거나 기존 서비스의 일부일 수 있습니다(예: duo_chat).
bundled_with object 이 기능을 포함하는 애드온 맵. 기능은 여러 애드온과 번들될 수 있습니다(예: duo_pro, duo_enterprise).
cut_off_date datetime 무료 접근이 종료되는 UTC 타임스탬프. 설정되지 않으면 기능이 무료로 유지됩니다.
min_gitlab_version string 최소 필요 GitLab 버전(예: 17.8). 설정되지 않으면 모든 버전에서 사용 가능합니다.
min_gitlab_version_for_free_access string 무료 접근 기간의 최소 버전(예: 17.8). 설정되지 않으면 모든 버전에서 사용 가능합니다.
backend string 이 기능을 호스팅하는 백엔드 서비스의 이름, 토큰 대상 클레임으로 사용됩니다(예: gitlab-ai-gateway).