라이선스 파일 또는 키를 사용하여 GitLab EE 활성화하기

GitLab에서 라이선스 파일(예: 평가용)을 받으면 해당 파일을 인스턴스에 업로드하거나 설치 중에 추가할 수 있습니다. 라이선스 파일은 .gitlab-license 확장명을 가진 base64로 인코딩된 ASCII 텍스트 파일입니다.

GitLab 인스턴스에 처음으로 로그인할 때 라이선스 추가 페이지로 이동하는 링크가 포함된 공지가 표시됩니다.

그렇지 않은 경우, 라이선스를 추가하려면 다음 단계를 따르세요:

  1. 관리자로서 GitLab에 로그인합니다.
  2. 왼쪽 사이드바에서 가장 아래 관리 영역을 선택합니다.
  3. 설정 > 일반을 선택합니다.
  4. 라이선스 추가 영역에서 파일을 업로드하거나 키를 입력하여 라이선스를 추가합니다.
  5. 서비스 약관 확인란을 선택합니다.
  6. 라이선스 추가를 클릭합니다.

참고: GitLab 14.7.x~14.9.x에서는 UI를 사용하여 라이선스 파일을 추가할 수 있습니다. GitLab 14.1.x~14.7에서는 활성화 코드로 구독을 이미 활성화한 경우, 관리 영역에서 라이선스 추가에 접근할 수 없습니다. 대신에 <YourGitLabURL>/admin/license/new와 같은 URL에서 직접 라이선스 추가로 이동해야 합니다.

설치 중 구독 활성화하기

설치 중에 구독을 활성화하려면 활성화 코드와 함께 GITLAB_ACTIVATION_CODE 환경 변수를 설정하세요:

export GITLAB_ACTIVATION_CODE=your_activation_code

설치 중 라이선스 파일 추가하기

라이선스가 있는 경우 GitLab을 설치하는 동안에도 가져올 수 있습니다.

  • 자체 컴파일 설치의 경우:
    • config/ 디렉토리에 Gitlab.gitlab-license 파일을 배치합니다.
    • 라이선스의 사용자 정의 위치 및 파일 이름을 지정하려면 GITLAB_LICENSE_FILE 환경 변수를 파일의 경로로 설정하세요:

      export GITLAB_LICENSE_FILE="/path/to/license/file"
      
  • Linux 패키지 설치의 경우:
    • /etc/gitlab/ 디렉토리에 Gitlab.gitlab-license 파일을 배치합니다.
    • 라이선스의 사용자 정의 위치 및 파일 이름을 gitlab.rb에 다음 항목을 추가하세요:

      gitlab_rails['initial_license_file'] = "/path/to/license/file"
      

경고: 이 방법들은 설치 시에만 라이선스를 추가합니다. 라이선스를 갱신하거나 업그레이드하려면, 웹 사용자 인터페이스의 관리 영역에 라이선스를 추가해야 합니다.

라이선스 사용 데이터 제출하기

오프라인 환경에서 인스턴스를 활성화하기 위해 라이선스 파일이나 키를 사용하는 경우, 매월 라이선스 사용 데이터를 제출해야 합니다. 데이터를 제출하려면 라이선스 사용 내역을 내보냅니다 그리고 이를 renewals-service@customers.gitlab.com으로 이메일로 보냅니다. 제출 전에 라이선스 사용 파일을 열면 안 됩니다. 그렇게 할 경우, 파일 내용이 사용된 프로그램에 의해 조작될 수 있으며(예: 타임스탬프를 다른 형식으로 변환할 수 있음), 파일 처리 중에 오류가 발생할 수 있습니다.

구독 시작 날짜 이후 매월 데이터를 제출하지 않으면, 해당 구독과 연결된 이메일 주소로 이메일이 발송되며, 관리 영역대시보드구독 페이지에 데이터를 제출하라는 배너가 표시됩니다. 이 배너는 라이선스 사용 데이터를 제출한 다음 달까지만 닫을 수 있습니다.

라이선스 만료 시점의 상황

라이선스 만료 15일 전에, GitLab 관리자에게 다가오는 만료 날짜를 포함한 알림 배너가 표시됩니다.

라이선스가 만료되면, GitLab은 Git 푸시 및 이슈 생성과 같은 기능을 잠금 상태로 만듭니다. 인스턴스는 읽기 전용이 되며, 모든 관리자에게 만료 메시지가 표시됩니다. 이에 앞서 14일 간 우아한 기간이 주어집니다.

기능을 다시 활성화하려면 구독을 갱신하세요.

만료된 라이선스가 30일 이상 경과하면, 기능을 다시 활성화하려면 새 구독을 구매해야 합니다.

Free 기능으로 돌아가려면, 만료된 라이선스를 모두 삭제하세요.

라이선스 제거하기

자체 관리형 인스턴스에서 라이선스를 제거하려면:

  1. 왼쪽 사이드바에서 가장 아래 관리 영역을 선택합니다.
  2. 구독을 선택합니다.
  3. 라이선스 제거를 선택합니다.

과거에 적용된 모든 라이선스를 포함하여 모든 라이선스를 제거하려면 이러한 단계를 반복하세요.

라이선스 상세 및 내역보기

라이선스 상세를 보려면:

  1. 왼쪽 사이드바에서 가장 아래 관리 영역을 선택합니다.
  2. 구독을 선택합니다.

하나 이상의 라이선스를 추가하고 보여줄 수 있지만, 현재 날짜 범위에서의 최신 라이선스만이 활성 라이선스입니다.

미래 날짜로 설정된 라이선스를 추가하면 해당 날짜에 적용될 때까지 효력을 발휘하지 않습니다. 구독 내역 테이블에서 모든 활성 구독을 볼 수 있습니다.

참고: GitLab 13.6과 그 이전 버전에서는 새 라이선스의 시작 날짜가 미래에 있고 만료되는 라이선스가 아직 활성 상태인 경우, 만료되는 라이선스에 관한 배너가 계속해서 표시될 수 있습니다. 새 라이선스가 활성 상태가 되면 이 배너는 사라집니다.

레일즈 콘솔에서의 라이선스 명령

다음 명령은 레일즈 콘솔에서 실행할 수 있습니다.

경고: 데이터를 직접 변경하는 모든 명령은 올바르게 실행되지 않거나 적절하지 않은 조건에서 실행되면 피해를 줄 수 있습니다. 우리는 백업된 인스턴스를 복원할 준비가 되어 있는 테스트 환경에서 실행하는 것을 강력히 권장합니다.

현재 라이선스 정보 보기

# 라이선스 정보 (이름, 회사, 이메일 주소)
License.current.licensee

# 요금제:
License.current.plan

# 업로드된 날짜:
License.current.created_at

# 시작된 날짜:
License.current.starts_at

# 만료 날짜:
License.current.expires_at

# 이 라이선스가 시험 라이선스인가요?
License.current.trial?

# 고객닷에서 조회할 라이선스 ID
License.current.license_id

# Base64로 인코딩된 ASCII 형식의 라이선스 데이터
License.current.data

# 게스트 사용자를 포함하지 않은 현재 청구 가능한 좌석 수를 확인합니다. 이것은 게스트 좌석이 계산되지 않는 알티밋 구독 계층을 사용하는 고객에게 유용합니다.
User.active.without_bots.excluding_guests.count

미래에 시작된 라이선스와의 상호작용

# 미래 라이선스 데이터는 현재 라이선스 데이터와 동일한 형식을 따르지만 License 접두사에 대해 다른 수정자를 사용합니다
License.future_dated

인스턴스에서 프로젝트 기능이 사용 가능한지 확인

features.rb에 나열된 기능들입니다.

License.current.feature_available?(:jira_dev_panel_integration)

프로젝트에서 프로젝트 기능이 사용 가능한지 확인

features.rb에 나열된 기능들입니다.

p = Project.find_by_full_path('<group>/<project>')
p.feature_available?(:jira_dev_panel_integration)

콘솔을 통해 라이선스 추가

key 변수를 사용하는 경우

key = "<key>"
license = License.new(data: key)
license.save
License.current # 적용되었는지 확인

라이선스 파일을 사용하는 경우

license_file = File.open("/tmp/Gitlab.license")

key = license_file.read.gsub("\r\n", "\n").gsub(/\n+$/, '') + "\n"

license = License.new(data: key)
license.save
License.current # 적용되었는지 확인

이러한 코드 조각은 파일에 저장하고 레일즈 Runner를 사용하여 실행하여 라이선스를 쉘 자동화 스크립트를 통해 적용할 수 있습니다.

예를 들어, 만료된 라이선스와 여러 LDAP 서버를 사용한 알려진 에지 케이스에서 필요합니다.

라이선스 제거

라이선스 히스토리 테이블을 정리하려면:

TYPE = :trial?
# 또는 :expired?

License.select(&TYPE).each(&:destroy!)

# 또는 License.all.each(&:destroy!)

문제 해결

관리자 영역에 구독이 없음

구독 영역이 없기 때문에 라이선스를 추가할 수 없습니다. 이 문제는 다음과 같은 경우 발생할 수 있습니다:

  • GitLab Community Edition을 실행 중입니다. 라이선스를 추가하기 전에 반드시 Enterprise Edition로 업그레이드해야 합니다.
  • GitLab.com을 사용 중입니다. Self-managed 라이선스를 GitLab.com에 추가할 수 없습니다. GitLab.com에서 유료 기능을 사용하려면 별도의 구독을 구매해야 합니다.

갱신 시 사용자가 라이선스 제한을 초과함

GitLab은 추가 사용자를 구매하도록 요청하는 메시지를 표시합니다. 이 문제는 라이선스에 있는 사용자 수로 커버하지 못하는 사용자 수를 추가할 경우 발생합니다.

이 문제를 해결하려면 해당 사용자 수를 커버하기 위해 추가 좌석을 구매하세요. 자세한 내용은 라이선싱 FAQ를 참조하세요.

GitLab 14.2 이상에서 라이선스 파일을 사용하는 인스턴스의 경우 다음 규칙이 적용됩니다:

  • 라이선스를 초과하는 사용자 수가 라이선스 파일의 사용자 수의 10% 이하인 경우, 라이선스가 적용되고 추가 사용자 요금은 다음 갱신 시에 청구됩니다.
  • 라이선스를 초과하는 사용자 수가 라이선스 파일의 사용자 수의 10% 이상인 경우, 추가 사용자를 구매하지 않고 라이선스를 적용할 수 없습니다.

예를 들어, 100명의 사용자를 위한 라이선스를 구매하면 라이선스를 추가할 때 110명의 사용자가 가능합니다. 그러나 111명의 사용자가 있는 경우 라이선스를 추가하기 전에 추가 사용자를 구매해야 합니다.

GitLab Ultimate 트라이얼 시작이 라이선스 추가 후에도 표시됨

이 문제를 해결하려면 Puma를 재시작하거나 전체 GitLab 인스턴스를 재시작하세요.