InfoGrab DocsInfoGrab Docs

외부 Sidekiq 인스턴스 설정

요약

GitLab 패키지에 번들로 포함된 Sidekiq을 사용해 외부 Sidekiq 인스턴스를 구성할 수 있습니다. 기본적으로 GitLab은 UNIX 소켓을 사용하며 TCP 통신용으로 설정되어 있지 않습니다. 패키지 PostgreSQL 서버가 TCP/IP를 수신하도록 구성하고 Sidekiq 서버 IP 주소를 postgresql['md5_auth_cidr_addresses']에 추가합니다

GitLab 패키지에 번들로 포함된 Sidekiq을 사용해 외부 Sidekiq 인스턴스를 구성할 수 있습니다. Sidekiq은 Redis, PostgreSQL, Gitaly 인스턴스에 대한 연결이 필요합니다.

GitLab 인스턴스에서 PostgreSQL, Gitaly, Redis의 TCP 액세스 구성#

기본적으로 GitLab은 UNIX 소켓을 사용하며 TCP 통신용으로 설정되어 있지 않습니다. 이를 변경하려면 다음 단계를 따릅니다.

  1. 패키지 PostgreSQL 서버가 TCP/IP를 수신하도록 구성하고 Sidekiq 서버 IP 주소를 postgresql['md5_auth_cidr_addresses']에 추가합니다

  2. 번들 Redis에 TCP로 접근할 수 있도록 설정합니다

  3. GitLab 인스턴스에서 /etc/gitlab/gitlab.rb 파일을 편집해 다음을 추가합니다.

    ## Gitaly
    gitaly['configuration'] = {
       # ...
       #
       # Make Gitaly accept connections on all network interfaces
       listen_addr: '0.0.0.0:8075',
       auth: {
          ## Set up the Gitaly token as a form of authentication because you are accessing Gitaly over the network
          ## https://docs.gitlab.com/administration/gitaly/configure_gitaly/#about-the-gitaly-token
          token: 'abc123secret',
       },
    }
    
    gitlab_rails['gitaly_token'] = 'abc123secret'
    
    # Password to Authenticate Redis
    gitlab_rails['redis_password'] = 'redis-password-goes-here'
    
  4. reconfigure를 실행합니다.

    sudo gitlab-ctl reconfigure
    
  5. PostgreSQL 서버를 재시작합니다.

    sudo gitlab-ctl restart postgresql
    

Sidekiq 인스턴스 설정#

사용 중인 레퍼런스 아키텍처를 찾아 Sidekiq 인스턴스 설정 안내를 따릅니다.

공유 스토리지를 사용하는 다중 Sidekiq 노드 구성#

NFS처럼 공유 파일 스토리지를 사용하는 Sidekiq 노드를 여러 대 운영한다면, 서버 간에 값이 일치하도록 UID와 GID를 지정해야 합니다. UID와 GID를 지정하면 파일 시스템의 권한 문제를 예방할 수 있습니다. 이는 Geo 구성 관련 안내와 유사합니다.

여러 Sidekiq 노드를 설정하려면 다음 단계를 따릅니다.

  1. /etc/gitlab/gitlab.rb를 편집합니다.

    user['uid'] = 9000
    user['gid'] = 9000
    web_server['uid'] = 9001
    web_server['gid'] = 9001
    registry['uid'] = 9002
    registry['gid'] = 9002
    
  2. GitLab을 재구성합니다.

    sudo gitlab-ctl reconfigure
    

외부 Sidekiq 사용 시 컨테이너 레지스트리 구성#

컨테이너 레지스트리를 사용하고 있고 Sidekiq과 다른 노드에서 실행 중이라면 다음 단계를 따릅니다.

  1. 레지스트리를 활성화합니다.
   gitlab_rails['registry_enabled'] = true
  1. 레지스트리 URL을 구성합니다.
   gitlab_rails['registry_api_url'] = "https://registry.example.com"
  1. GitLab을 재구성합니다.
   sudo gitlab-ctl reconfigure
  1. 컨테이너 레지스트리가 호스팅된 인스턴스에서 registry.key 파일을 Sidekiq 노드로 복사합니다.

Sidekiq 메트릭 서버 구성#

Sidekiq 메트릭을 수집하려면 Sidekiq 메트릭 서버를 활성화합니다. 메트릭은 localhost:8082/metrics에서 확인할 수 있습니다.

메트릭 서버를 구성하려면 다음 단계를 따릅니다.

  1. /etc/gitlab/gitlab.rb를 편집합니다.

    sidekiq['metrics_enabled'] = true
    sidekiq['listen_address'] = "localhost"
    sidekiq['listen_port'] = 8082
    
    # Optionally log all the metrics server logs to log/sidekiq_exporter.log
    sidekiq['exporter_log_enabled'] = true
    
  2. GitLab을 재구성합니다.

    sudo gitlab-ctl reconfigure
    

HTTPS 활성화#

HTTP 대신 HTTPS로 메트릭을 제공하려면 익스포터 설정에서 TLS를 활성화합니다.

  1. /etc/gitlab/gitlab.rb를 편집해 다음 줄을 추가하거나 주석을 해제합니다.

    sidekiq['exporter_tls_enabled'] = true
    sidekiq['exporter_tls_cert_path'] = "/path/to/certificate.pem"
    sidekiq['exporter_tls_key_path'] = "/path/to/private-key.pem"
    
  2. 파일을 저장하고 변경 사항을 적용하려면 GitLab을 재구성합니다.

TLS를 활성화해도 앞서 설명한 것과 동일한 port와 address를 사용합니다. 메트릭 서버는 HTTP와 HTTPS를 동시에 제공할 수 없습니다.

상태 확인 구성#

상태 확인 프로브로 Sidekiq을 관찰한다면 Sidekiq 상태 확인 서버를 활성화합니다. localhost:8092에서 상태 확인을 사용할 수 있게 하려면 다음 단계를 따릅니다.

  1. /etc/gitlab/gitlab.rb를 편집합니다.

    sidekiq['health_checks_enabled'] = true
    sidekiq['health_checks_listen_address'] = "localhost"
    sidekiq['health_checks_listen_port'] = 8092
    
  2. GitLab을 재구성합니다.

    sudo gitlab-ctl reconfigure
    

상태 확인에 대한 자세한 내용은 Sidekiq 상태 확인 페이지를 참고합니다.

LDAP 및 사용자·그룹 동기화 구성#

LDAP로 사용자와 그룹을 관리한다면 Sidekiq 노드에도 LDAP 구성과 LDAP 동기화 워커를 추가해야 합니다. LDAP 구성과 LDAP 동기화 워커가 Sidekiq 노드에 적용되지 않으면 사용자와 그룹이 자동으로 동기화되지 않습니다.

GitLab의 LDAP 구성에 대한 자세한 내용은 다음을 참고합니다.

Sidekiq 용 동기화 워커와 함께 LDAP를 활성화하려면 다음 단계를 따릅니다.

  1. /etc/gitlab/gitlab.rb를 편집합니다.

    gitlab_rails['ldap_enabled'] = true
    gitlab_rails['prevent_ldap_sign_in'] = false
    gitlab_rails['ldap_servers'] = {
    'main' => {
    'label' => 'LDAP',
    'host' => 'ldap.mydomain.com',
    'port' => 389,
    'uid' => 'sAMAccountName',
    'encryption' => 'simple_tls',
    'verify_certificates' => true,
    'bind_dn' => '_the_full_dn_of_the_user_you_will_bind_with',
    'password' => '_the_password_of_the_bind_user',
    'tls_options' => {
       'ca_file' => '',
       'ssl_version' => '',
       'ciphers' => '',
       'cert' => '',
       'key' => ''
    },
    'timeout' => 10,
    'active_directory' => true,
    'allow_username_or_email_login' => false,
    'block_auto_created_users' => false,
    'base' => 'dc=example,dc=com',
    'user_filter' => '',
    'attributes' => {
       'username' => ['uid', 'userid', 'sAMAccountName'],
       'email' => ['mail', 'email', 'userPrincipalName'],
       'name' => 'cn',
       'first_name' => 'givenName',
       'last_name' => 'sn'
    },
    'lowercase_usernames' => false,
    
    # Enterprise Edition only
    # https://docs.gitlab.com/administration/auth/ldap/ldap_synchronization/
    'group_base' => '',
    'admin_group' => '',
    'external_groups' => [],
    'sync_ssh_keys' => false
    }
    }
    gitlab_rails['ldap_sync_worker_cron'] = "0 */12 * * *"
    
  2. GitLab을 재구성합니다.

    sudo gitlab-ctl reconfigure
    

SAML Group Sync를 위한 SAML 그룹 구성#

SAML Group Sync를 사용한다면 모든 Sidekiq 노드에 SAML 그룹을 구성해야 합니다.

관련 주제#

문제 해결#

Sidekiq 문제 해결 관리자 가이드를 참고합니다.

외부 Sidekiq 인스턴스 설정

GitLab v19.5
Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed
원문 보기

요약

GitLab 패키지에 번들로 포함된 Sidekiq을 사용해 외부 Sidekiq 인스턴스를 구성할 수 있습니다. 기본적으로 GitLab은 UNIX 소켓을 사용하며 TCP 통신용으로 설정되어 있지 않습니다. 패키지 PostgreSQL 서버가 TCP/IP를 수신하도록 구성하고 Sidekiq 서버 IP 주소를 postgresql['md5_auth_cidr_addresses']에 추가합니다

GitLab 패키지에 번들로 포함된 Sidekiq을 사용해 외부 Sidekiq 인스턴스를 구성할 수 있습니다. Sidekiq은 Redis, PostgreSQL, Gitaly 인스턴스에 대한 연결이 필요합니다.

GitLab 인스턴스에서 PostgreSQL, Gitaly, Redis의 TCP 액세스 구성#

기본적으로 GitLab은 UNIX 소켓을 사용하며 TCP 통신용으로 설정되어 있지 않습니다. 이를 변경하려면 다음 단계를 따릅니다.

  1. 패키지 PostgreSQL 서버가 TCP/IP를 수신하도록 구성하고 Sidekiq 서버 IP 주소를 postgresql['md5_auth_cidr_addresses']에 추가합니다

  2. 번들 Redis에 TCP로 접근할 수 있도록 설정합니다

  3. GitLab 인스턴스에서 /etc/gitlab/gitlab.rb 파일을 편집해 다음을 추가합니다.

    ## Gitaly
    gitaly['configuration'] = {
       # ...
       #
       # Make Gitaly accept connections on all network interfaces
       listen_addr: '0.0.0.0:8075',
       auth: {
          ## Set up the Gitaly token as a form of authentication because you are accessing Gitaly over the network
          ## https://docs.gitlab.com/administration/gitaly/configure_gitaly/#about-the-gitaly-token
          token: 'abc123secret',
       },
    }
    
    gitlab_rails['gitaly_token'] = 'abc123secret'
    
    # Password to Authenticate Redis
    gitlab_rails['redis_password'] = 'redis-password-goes-here'
    
  4. reconfigure를 실행합니다.

    sudo gitlab-ctl reconfigure
    
  5. PostgreSQL 서버를 재시작합니다.

    sudo gitlab-ctl restart postgresql
    

Sidekiq 인스턴스 설정#

사용 중인 레퍼런스 아키텍처를 찾아 Sidekiq 인스턴스 설정 안내를 따릅니다.

공유 스토리지를 사용하는 다중 Sidekiq 노드 구성#

NFS처럼 공유 파일 스토리지를 사용하는 Sidekiq 노드를 여러 대 운영한다면, 서버 간에 값이 일치하도록 UID와 GID를 지정해야 합니다. UID와 GID를 지정하면 파일 시스템의 권한 문제를 예방할 수 있습니다. 이는 Geo 구성 관련 안내와 유사합니다.

여러 Sidekiq 노드를 설정하려면 다음 단계를 따릅니다.

  1. /etc/gitlab/gitlab.rb를 편집합니다.

    user['uid'] = 9000
    user['gid'] = 9000
    web_server['uid'] = 9001
    web_server['gid'] = 9001
    registry['uid'] = 9002
    registry['gid'] = 9002
    
  2. GitLab을 재구성합니다.

    sudo gitlab-ctl reconfigure
    

외부 Sidekiq 사용 시 컨테이너 레지스트리 구성#

컨테이너 레지스트리를 사용하고 있고 Sidekiq과 다른 노드에서 실행 중이라면 다음 단계를 따릅니다.

  1. 레지스트리를 활성화합니다.
   gitlab_rails['registry_enabled'] = true
  1. 레지스트리 URL을 구성합니다.
   gitlab_rails['registry_api_url'] = "https://registry.example.com"
  1. GitLab을 재구성합니다.
   sudo gitlab-ctl reconfigure
  1. 컨테이너 레지스트리가 호스팅된 인스턴스에서 registry.key 파일을 Sidekiq 노드로 복사합니다.

Sidekiq 메트릭 서버 구성#

Sidekiq 메트릭을 수집하려면 Sidekiq 메트릭 서버를 활성화합니다. 메트릭은 localhost:8082/metrics에서 확인할 수 있습니다.

메트릭 서버를 구성하려면 다음 단계를 따릅니다.

  1. /etc/gitlab/gitlab.rb를 편집합니다.

    sidekiq['metrics_enabled'] = true
    sidekiq['listen_address'] = "localhost"
    sidekiq['listen_port'] = 8082
    
    # Optionally log all the metrics server logs to log/sidekiq_exporter.log
    sidekiq['exporter_log_enabled'] = true
    
  2. GitLab을 재구성합니다.

    sudo gitlab-ctl reconfigure
    

HTTPS 활성화#

HTTP 대신 HTTPS로 메트릭을 제공하려면 익스포터 설정에서 TLS를 활성화합니다.

  1. /etc/gitlab/gitlab.rb를 편집해 다음 줄을 추가하거나 주석을 해제합니다.

    sidekiq['exporter_tls_enabled'] = true
    sidekiq['exporter_tls_cert_path'] = "/path/to/certificate.pem"
    sidekiq['exporter_tls_key_path'] = "/path/to/private-key.pem"
    
  2. 파일을 저장하고 변경 사항을 적용하려면 GitLab을 재구성합니다.

TLS를 활성화해도 앞서 설명한 것과 동일한 port와 address를 사용합니다. 메트릭 서버는 HTTP와 HTTPS를 동시에 제공할 수 없습니다.

상태 확인 구성#

상태 확인 프로브로 Sidekiq을 관찰한다면 Sidekiq 상태 확인 서버를 활성화합니다. localhost:8092에서 상태 확인을 사용할 수 있게 하려면 다음 단계를 따릅니다.

  1. /etc/gitlab/gitlab.rb를 편집합니다.

    sidekiq['health_checks_enabled'] = true
    sidekiq['health_checks_listen_address'] = "localhost"
    sidekiq['health_checks_listen_port'] = 8092
    
  2. GitLab을 재구성합니다.

    sudo gitlab-ctl reconfigure
    

상태 확인에 대한 자세한 내용은 Sidekiq 상태 확인 페이지를 참고합니다.

LDAP 및 사용자·그룹 동기화 구성#

LDAP로 사용자와 그룹을 관리한다면 Sidekiq 노드에도 LDAP 구성과 LDAP 동기화 워커를 추가해야 합니다. LDAP 구성과 LDAP 동기화 워커가 Sidekiq 노드에 적용되지 않으면 사용자와 그룹이 자동으로 동기화되지 않습니다.

GitLab의 LDAP 구성에 대한 자세한 내용은 다음을 참고합니다.

Sidekiq 용 동기화 워커와 함께 LDAP를 활성화하려면 다음 단계를 따릅니다.

  1. /etc/gitlab/gitlab.rb를 편집합니다.

    gitlab_rails['ldap_enabled'] = true
    gitlab_rails['prevent_ldap_sign_in'] = false
    gitlab_rails['ldap_servers'] = {
    'main' => {
    'label' => 'LDAP',
    'host' => 'ldap.mydomain.com',
    'port' => 389,
    'uid' => 'sAMAccountName',
    'encryption' => 'simple_tls',
    'verify_certificates' => true,
    'bind_dn' => '_the_full_dn_of_the_user_you_will_bind_with',
    'password' => '_the_password_of_the_bind_user',
    'tls_options' => {
       'ca_file' => '',
       'ssl_version' => '',
       'ciphers' => '',
       'cert' => '',
       'key' => ''
    },
    'timeout' => 10,
    'active_directory' => true,
    'allow_username_or_email_login' => false,
    'block_auto_created_users' => false,
    'base' => 'dc=example,dc=com',
    'user_filter' => '',
    'attributes' => {
       'username' => ['uid', 'userid', 'sAMAccountName'],
       'email' => ['mail', 'email', 'userPrincipalName'],
       'name' => 'cn',
       'first_name' => 'givenName',
       'last_name' => 'sn'
    },
    'lowercase_usernames' => false,
    
    # Enterprise Edition only
    # https://docs.gitlab.com/administration/auth/ldap/ldap_synchronization/
    'group_base' => '',
    'admin_group' => '',
    'external_groups' => [],
    'sync_ssh_keys' => false
    }
    }
    gitlab_rails['ldap_sync_worker_cron'] = "0 */12 * * *"
    
  2. GitLab을 재구성합니다.

    sudo gitlab-ctl reconfigure
    

SAML Group Sync를 위한 SAML 그룹 구성#

SAML Group Sync를 사용한다면 모든 Sidekiq 노드에 SAML 그룹을 구성해야 합니다.

관련 주제#

문제 해결#

Sidekiq 문제 해결 관리자 가이드를 참고합니다.