正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

外部Sidekiqインスタンスを設定

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed

GitLabパッケージにバンドルされているSidekiqを使用して、外部Sidekiqインスタンスを設定できます。Sidekiqには、Redis、PostgreSQL、およびGitalyのインスタンスへの接続が必要です。

GitLabインスタンスでPostgreSQL、Gitaly、RedisのTCPアクセスを設定します

デフォルトでは、GitLabはUNIXソケットを使用しており、TCP経由で通信するように設定されていません。これを変更するには:

  1. SidekiqサーバーのIPアドレスをpostgresql['md5_auth_cidr_addresses']に追加して、パッケージ化されたPostgreSQLサーバーがTCP/IPでリッスンするように設定

  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/ee/administration/gitaly/configure_gitaly.html#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. /etc/gitlab/gitlab.rbを編集し、レジストリのURLを設定します:

    gitlab_rails['registry_api_url'] = "https://registry.example.com"
  2. GitLabを再設定します:

    sudo gitlab-ctl reconfigure
  3. コンテナレジストリがホストされているインスタンスで、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経由でメトリクスを提供するには、exporterの設定で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が有効になっている場合、前に説明したように同じportaddressが使用されます。メトリクスサーバーは、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を使用する場合は、LDAPの設定をSidekiqノードと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/ee/administration/auth/ldap/ldap_synchronization.html
    '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グループ同期のSAMLグループを設定する

SAMLグループ同期を使用する場合は、すべてのSidekiqノードでSAMLグループを設定する必要があります。

トラブルシューティング

Sidekiqのトラブルシューティングに関する管理者ガイドをご覧ください。