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

GitLab-Sidekiqチャートの使用

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

sidekiqサブチャートは、Sidekiqワーカーの構成可能なデプロイを提供し、個別のスケーラビリティと構成を備えた複数のDeploymentにわたるキューの分離を提供するように明示的に設計されています。

このチャートはデフォルトのpods:宣言を提供しますが、空の定義を提供すると、ワーカーはいません。

要件

このチャートは、Redis、PostgreSQL、およびGitalyサービスへのアクセスに依存します。GitLabチャート全体の一部として、またはこのチャートがデプロイされているKubernetesクラスターから到達可能な外部サービスとして提供されます。

設計の選択肢

このチャートは、複数のDeploymentと関連するConfigMapを作成します。コマンドの長さに関する懸念を避けるため、environment属性やコンテナのcommandへの追加の引数を使用するよりも、ConfigMapの動作を利用する方が明確になります。この選択により、多数のConfigMapが生成されますが、各ポッドが何をすべきかについて非常に明確な定義が提供されます。

設定

このsidekiqチャートは、チャート全体の外部サービス 、チャート全体のデフォルト 、およびポッドごとの定義の3つの部分で構成されています。

コマンドラインオプションのインストール

以下の表には、helm installコマンドに--setフラグを使用して指定できるすべての可能なチャートの構成が含まれています:

パラメータデフォルト説明
annotationsポッドアノテーション
podLabels補足ポッドラベル。セレクターには使用されません。
common.labelsこのチャートによって作成されたすべてのオブジェクトに適用される補足ラベル。
concurrency20Sidekiqデフォルトの並行処理
deployment.strategy{}デプロイによって利用される更新戦略を構成できます
deployment.terminationGracePeriodSeconds30ポッドが正常に終了するために必要なオプションの時間(秒単位)。
enabledtrueSidekiq有効フラグ
extraContainers含めるコンテナのリストを含む複数行のリテラルスタイル文字列
extraInitContainers含める追加のinitコンテナのリスト
extraVolumeMounts追加のボリュームマウントを構成するための文字列テンプレート
extraVolumes追加のボリュームを構成するための文字列テンプレート
extraEnv公開する追加の環境変数のリスト
extraEnvFrom他のデータソースから公開する追加の環境変数のリスト
gitaly.serviceNamegitalyGitalyサービス名
health_checks.port3808ヘルスチェックサーバーポート
health_checks.listenAddr*ヘルスチェックリスニングアドレス。
hpa.behaviour{scaleDown: {stabilizationWindowSeconds: 300 }}動作には、スケールアップとスケールダウンの動作に関する仕様が含まれています(autoscaling/v2beta2以上が必要です)。
hpa.customMetrics[]カスタムメトリクスには、目的のレプリカ数を計算するために使用する仕様が含まれています(targetAverageUtilizationで構成された平均CPU使用率のデフォルト使用をオーバーライドします)。
hpa.cpu.targetTypeAverageValueオートスケールCPUターゲットタイプを設定します。UtilizationまたはAverageValueのいずれかである必要があります。
hpa.cpu.targetAverageValue350mオートスケールCPUターゲット値を設定します。
hpa.cpu.targetAverageUtilizationオートスケールCPUターゲット使用率を設定します。
hpa.memory.targetTypeオートスケールメモリターゲットタイプを設定します。UtilizationまたはAverageValueのいずれかである必要があります。
hpa.memory.targetAverageValueオートスケールメモリターゲット値を設定します。
hpa.memory.targetAverageUtilizationオートスケールメモリターゲット使用率を設定します。
hpa.targetAverageValueDEPRECATEDオートスケールCPUターゲット値を設定します。
keda.enabledfalseHorizontalPodAutoscalersの代わりにKEDA ScaledObjectsを使用します
keda.pollingInterval30各トリガーを確認する間隔
keda.cooldownPeriod300最後にアクティブと報告されたトリガーの後、リソースを0にスケールダウンするまでの待機期間
keda.minReplicaCountKEDAがリソースをスケールダウンする最小レプリカ数。minReplicasがデフォルトです。
keda.maxReplicaCountKEDAがリソースをスケールアップする最大レプリカ数。maxReplicasがデフォルトです。
keda.fallbackKEDAフォールバック構成。ドキュメントを参照してください。
keda.hpaNameKEDAが作成するHPAリソースの名前。keda-hpa-{scaled-object-name}がデフォルトです。
keda.restoreToOriginalReplicaCountScaledObjectが削除された後、ターゲットリソースを元のレプリカ数にスケールバックするかどうかを指定します。
keda.behaviorスケールアップおよびスケールダウン動作の仕様。hpa.behaviorがデフォルトです。
keda.triggersターゲットリソースのスケールをアクティブ化するトリガーのリスト。hpa.cpuおよびhpa.memoryから計算されたトリガーがデフォルトです。
minReplicas2最小レプリカ数
maxReplicas10最大レプリカ数
maxUnavailable1利用できないポッドの最大数
image.pullPolicyAlwaysSidekiqイメージプルポリシー
image.pullSecretsイメージリポジトリのシークレット
image.repositoryregistry.gitlab.com/gitlab-org/build/cng/gitlab-sidekiq-eeSidekiqイメージリポジトリ
image.tagSidekiqイメージタグ
init.image.repositoryinitコンテナイメージ
init.image.taginitコンテナイメージタグ
init.containerSecurityContextinitコンテナ固有のsecurityContext
init.containerSecurityContext.runAsUser1000initコンテナ固有: コンテナを起動するユーザーID
init.containerSecurityContext.allowPrivilegeEscalationfalseinitコンテナ固有: プロセスが親プロセスよりも多くの権限を取得できるかどうかを制御します
init.containerSecurityContext.runAsNonRoottrueinitコンテナ固有: コンテナが非ルートユーザーで実行されるかどうかを制御します
init.containerSecurityContext.capabilities.drop[ "ALL" ]initコンテナ固有: コンテナのLinux機能を削除します
logging.formatjson非JSONログの場合はtextに設定します
metrics.enabledtrueメトリクスエンドポイントをスクレイプに利用可能にする場合
metrics.port3807メトリクスエンドポイントのポート
metrics.listenAddr*メトリクスエンドポイントのリッスンアドレス。
metrics.path/metricsメトリクスエンドポイントのパス
metrics.log_enabledfalsesidekiq_exporter.logに書き込まれるメトリクスサーバーログを有効または無効にします
metrics.podMonitor.enabledfalsePrometheus Operatorがメトリクスのスクレイプを管理できるようにPodMonitorを作成する場合
metrics.podMonitor.additionalLabels{}PodMonitorに追加する追加のラベル
metrics.podMonitor.endpointConfig{}PodMonitorの追加のエンドポイント構成
metrics.annotationsDEPRECATED明示的なメトリクスアノテーションを設定します。テンプレートコンテンツに置き換えられます。
metrics.tls.enabledfalsemetrics/sidekiq_exporterエンドポイントでTLSが有効になっています
metrics.tls.secretName{Release.Name}-sidekiq-metrics-tlsmetrics/sidekiq_exporterエンドポイントTLS証明書とキーのシークレット
psql.password.keypsql-passwordpsqlシークレット内のpsqlパスワードへのキー
psql.password.secretgitlab-postgrespsqlパスワードシークレット
psql.portPostgreSQLサーバーポートを設定します。global.psql.portよりも優先されます。
redis.serviceNameredisRedisサービス名
resources.requests.cpu900mSidekiqの最小必要CPU
resources.requests.memory2GSidekiqの最小必要メモリ
resources.limits.memorySidekiqの最大許容メモリ
timeout25Sidekiqジョブタイムアウト
tolerations[]ポッド割り当てのトレランスラベル
memoryKiller.daemonModetruefalseの場合、レガシーメモリキラーモードを使用します
memoryKiller.maxRss2000000キロバイトで表現される、遅延シャットダウンがトリガーされる前の最大RSS
memoryKiller.graceTime900トリガーされたシャットダウンの前に待機する時間(秒単位)
memoryKiller.shutdownWait30トリガーされたシャットダウン後に既存のジョブが完了するまでの時間(秒単位)
memoryKiller.hardLimitRssデーモンモードで即時シャットダウンがトリガーされる前の最大RSS(キロバイト単位)
memoryKiller.checkInterval3メモリチェック間の時間量
livenessProbe.initialDelaySeconds20ライブネスプローブが開始されるまでの遅延
livenessProbe.periodSeconds60ライブネスプローブを実行する頻度
livenessProbe.timeoutSeconds30ライブネスプローブがタイムアウトするとき
livenessProbe.successThreshold1ライブネスプローブが失敗した後に成功と見なされる最小連続成功数
livenessProbe.failureThreshold3ライブネスプローブが成功した後に失敗したと見なされる最小連続失敗数
readinessProbe.initialDelaySeconds0レディネスプローブが開始されるまでの遅延
readinessProbe.periodSeconds10レディネスプローブを実行する頻度
readinessProbe.timeoutSeconds2レディネスプローブがタイムアウトするとき
readinessProbe.successThreshold1レディネスプローブが失敗した後に成功と見なされる最小連続成功数
readinessProbe.failureThreshold3レディネスプローブが成功した後に失敗したと見なされる最小連続失敗数
securityContext.fsGroup1000ポッドを起動するグループID
securityContext.runAsUser1000ポッドを起動するユーザーID
securityContext.fsGroupChangePolicyボリュームの所有権と権限を変更するためのポリシー(Kubernetes 1.23が必要)
securityContext.seccompProfile.typeRuntimeDefault使用するSeccompプロファイル
containerSecurityContextコンテナが起動されるコンテナsecurityContextをオーバーライドします
containerSecurityContext.runAsUser1000コンテナが起動される特定のセキュリティコンテキストを上書きすることを許可します
containerSecurityContext.allowPrivilegeEscalationfalseコンテナのプロセスが親プロセスよりも多くの権限を取得できるかどうかを制御します
containerSecurityContext.runAsNonRoottrueコンテナが非ルートユーザーで実行されるかどうかを制御します
containerSecurityContext.capabilities.drop[ "ALL" ]GitalyコンテナのLinux機能を削除します
serviceAccount.annotations{}ServiceAccountアノテーション
serviceAccount.automountServiceAccountTokenfalseデフォルトのServiceAccountアクセストークンをポッドにマウントするかどうかを示します
serviceAccount.createfalseServiceAccountを作成するかどうかを示します
serviceAccount.enabledfalseServiceAccountを使用するかどうかを示します
serviceAccount.nameServiceAccountの名前。設定されていない場合、完全なチャート名が使用されます
priorityClassName""ポッドのpriorityClassNameを構成できるようにします。これは、削除の場合にポッドの優先度を制御するために使用されます。
antiAffinity""チャートグローバル値からのantiAffinity値を上書きすることを許可します。デフォルトはグローバルから読み取り込まれ、softまたはhardに設定できます。

チャート構成の例

リソース

resourcesを使用すると、Sidekiqポッドが消費できるリソース(メモリとCPU)の最小量と最大量を構成できます。

Sidekiqポッドのワークロードは、デプロイによって大きく異なります。一般的に、各Sidekiqプロセスは約1 vCPUと2 GBのメモリを消費すると理解されています。垂直スケールは、一般的に1:2のvCPU:Memory比率に合わせるべきです。

resourcesの使用例を以下に示します。

yaml
resources:
  limits:
    memory: 5G
  requests:
    memory: 2G
    cpu: 900m

extraEnv

extraEnvを使用して、依存関係コンテナに追加の環境変数を公開します。

たとえば、SOME_KEYとSOME_OTHER_KEYの環境変数を公開するには、次のようにします:

yaml
extraEnv:
  SOME_KEY: some_value
  SOME_OTHER_KEY: some_other_value

コンテナが起動したら、envコマンドを実行し、変数名をgrepして環境変数が公開されていることを確認します。例:

shell
env | grep SOME
SOME_KEY=some_value
SOME_OTHER_KEY=some_other_value

特定のポッドに対してextraEnvを設定することもできます。例:

yaml
extraEnv:
  SOME_KEY: some_value
  SOME_OTHER_KEY: some_other_value
pods:
  - name: mailers
    queues: mailers
    extraEnv:
      SOME_POD_KEY: some_pod_value
  - name: catchall

これにより、mailersポッド内のアプリケーションコンテナにのみSOME_POD_KEYが設定されます。ポッドレベルのextraEnv設定は、initコンテナに追加されません。

extraEnvFrom

extraEnvFromを使用すると、ポッド内のすべてのコンテナで他のデータソースから追加の環境変数を公開できます。その後の変数はSidekiqポッドごとにオーバーライドできます。

extraEnvFromの使用例を以下に示します。

yaml
extraEnvFrom:
  MY_NODE_NAME:
    fieldRef:
      fieldPath: spec.nodeName
  MY_CPU_REQUEST:
    resourceFieldRef:
      containerName: test-container
      resource: requests.cpu
  SECRET_THING:
    secretKeyRef:
      name: special-secret
      key: special_token
      # optional: boolean
pods:
  - name: immediate
    extraEnvFrom:
      CONFIG_STRING:
        configMapKeyRef:
          name: useful-config
          key: some-string
          # optional: boolean

extraVolumes

extraVolumesを使用すると、チャート全体で追加ボリュームを構成できます。

extraVolumesの使用例を以下に示します。

yaml
extraVolumes: |
  - name: example-volume
    persistentVolumeClaim:
      claimName: example-pvc

extraVolumeMounts

extraVolumeMountsを使用すると、チャート全体のすべてのコンテナにボリュームマウントを追加構成できます。

extraVolumeMountsの使用例を以下に示します。

yaml
extraVolumeMounts: |
  - name: example-volume-mount
    mountPath: /etc/example

image.pullSecrets

pullSecretsを使用すると、プライベートレジストリに対して認証し、ポッド用のイメージをプルできます。

プライベートレジストリとその認証方法に関する追加の詳細は、Kubernetesドキュメントで確認できます。

pullSecretsの使用例を以下に示します。

yaml
image:
  repository: my.sidekiq.repository
  pullPolicy: Always
  pullSecrets:
  - name: my-secret-name
  - name: my-secondary-secret-name

serviceAccount

このセクションでは、ServiceAccountを作成するかどうか、およびデフォルトのアクセストークンをポッドにマウントするかどうかを制御します。

名前型デフォルト説明
annotationsマップ{}ServiceAccountアノテーション。
automountServiceAccountTokenブール値falseデフォルトのServiceAccountアクセストークンをポッドにマウントするかどうかを制御します。これは、特定のサイドカーが正常に機能するために必要という場合(Istioなど)を除き、有効にしないようにしてください。
createブール値falseServiceAccountを作成するかどうかを示します。
enabledブール値falseServiceAccountを使用するかどうかを示します。
name文字列ServiceAccountの名前。設定されていない場合、完全なチャート名が使用されます。

トレランス

tolerationsは、汚染されたワーカーノードにポッドをスケジュールできるようにします

tolerationsの使用例を以下に示します。

yaml
tolerations:
- key: "node_label"
  operator: "Equal"
  value: "true"
  effect: "NoSchedule"
- key: "node_label"
  operator: "Equal"
  value: "true"
  effect: "NoExecute"

アノテーション

annotationsを使用すると、Sidekiqポッドにアノテーションを追加できます。

annotationsの使用例を以下に示します。

yaml
annotations:
  kubernetes.io/example-annotation: annotation-value

このチャートのCommunity Editionの使用

デフォルトの場合、HelmチャートではGitLabのEnterprise Editionを使用します。必要に応じて、Community Editionを使用できます。両者の違いについては、こちらをご覧ください。

Community Editionを使用するには、image.repositoryをregistry.gitlab.com/gitlab-org/build/cng/gitlab-sidekiq-ceに設定します。

外部サービス

このチャートは、Webserviceチャートと同じRedis、PostgreSQL、およびGitalyインスタンスにアタッチする必要があります。外部サービスの値は、すべてのSidekiqポッドで共有されるConfigMapに入力されます。

Redis

yaml
redis:
  host: rank-racoon-redis
  port: 6379
  sentinels:
    - host: sentinel1.example.com
      port: 26379
      ssl: false
  password:
    secret: gitlab-redis
    key: redis-password
名前型デフォルト説明
host文字列使用するデータベースが格納されているRedisサーバーのホスト名。serviceNameの代わりとして省略できます。Redis Sentinelsを使用している場合、host属性はsentinel.confで指定されているクラスター名に設定する必要があります。
password.key文字列Redisのpassword.key属性は、パスワードを含むシークレット(下記)内のキーの名前を定義します。
password.secret文字列Redisのpassword.secret属性は、プル元のKubernetes Secretの名前を定義します。
port整数6379Redisサーバーへの接続に使用するポート。
serviceName文字列redisRedisデータベースを操作しているserviceの名前。これが存在し、hostが存在しない場合、チャートはhost値の代わりにサービスのホスト名(および現在の.Release.Name)をテンプレート処理します。これは、RedisをGitLabチャート全体の一部として使用する場合に便利です。
sentinels.[].host文字列Redis HA設定用のRedis Sentinelサーバーのホスト名。
sentinels.[].port整数26379Redis Sentinelサーバーへの接続に使用するポート。

PostgreSQL

yaml
psql:
  host: rank-racoon-psql
  serviceName: pgbouncer
  port: 5432
  database: gitlabhq_production
  username: gitlab
  preparedStatements: false
  password:
    secret: gitlab-postgres
    key: psql-password
名前型デフォルト説明
host文字列使用するデータベースを持つPostgreSQLサーバーのホスト名。postgresql.install=true(デフォルトは非本番環境)の場合、これは省略できます。
serviceName文字列PostgreSQLデータベースを操作しているserviceの名前。これが存在し、hostが存在しない場合、チャートはhost値の代わりにサービスのホスト名をテンプレート処理します。
database文字列gitlabhq_productionPostgreSQLサーバーで使用するデータベースの名前。
password.key文字列PostgreSQLのpassword.key属性は、パスワードを含むシークレット(下記)内のキーの名前を定義します。
password.secret文字列PostgreSQLのpassword.secret属性は、プル元のKubernetes Secretの名前を定義します。
port整数5432PostgreSQLサーバーへの接続に使用するポート。
username文字列gitlabデータベースへの認証に使用するユーザー名。
preparedStatementsブール値falsePostgreSQLサーバーとの通信時にプリペアドステートメントを使用するかどうか。

Sidekiqデプロイのdependencies initContainerは、次のことを確認するスクリプトを実行します:

  • GitLabの依存関係が利用可能かどうか。
  • PostgreSQLのデータベース移行が実行されているかどうか。

SidekiqチャートのextraEnv構成キーを使用して、これらのスクリプトの動作を制御できます。次の2つの環境変数がサポートされています:

  • BYPASS_POST_DEPLOYMENT=true: すべての通常の移行が実行され、デプロイ後の移行のみが保留中の場合、依存関係チェックは合格します
  • BYPASS_SCHEMA_VERSION=true (非推奨): 通常の移行が実行されていなくても、依存関係チェックは合格します。この環境変数を使用すると、データベーススキーマがアプリケーションコードデプロイが起動後にエラーが発生する可能性があります。

Gitaly

yaml
gitaly:
  internal:
    names:
      - default
      - default2
  external:
    - name: node1
      hostname: node1.example.com
      port: 8079
  authToken:
    secret: gitaly-secret
    key: token
名前型デフォルト説明
host文字列使用するGitalyサーバーのホスト名。serviceNameの代わりとして省略できます。
serviceName文字列gitalyGitalyサーバーを操作しているserviceの名前。これが存在し、hostが存在しない場合、チャートはhost値の代わりにサービスのホスト名(および現在の.Release.Name)をテンプレート処理します。これは、GitalyをGitLabチャート全体の一部として使用する場合に便利です。
port整数8075Gitalyサーバーへの接続に使用するポート。
authToken.key文字列以下のシークレットでauthTokenを含むキーの名前。
authToken.secret文字列Kubernetes Secretの名前をプルします。

メトリクス

デフォルトでは、Prometheusメトリクスexporterはポッドごとに有効になっています。メトリクスは、GitLab Prometheusメトリクスが管理者エリアで有効になっている場合にのみ利用できます。exporterは/metricsエンドポイントをポート3807で公開します。メトリクスが有効になっている場合、アノテーションが各ポッドに追加され、Prometheusサーバーが公開されたメトリクスを検出してスクレイプできるようになります。

チャート全体のデフォルト

以下の値は、ポッドごとに値が提示されない場合、チャート全体で使用されます。

名前型デフォルト説明
concurrency整数25同時に処理するタスクの数。
timeout整数4Sidekiqシャットダウンタイムアウト。SidekiqがTERMシグナルを受け取ってから、プロセスが強制的にシャットダウンされるまでの秒数。
memoryKiller.checkInterval整数3メモリチェック間の時間(秒単位)
memoryKiller.maxRss整数2000000キロバイトで表現される、遅延シャットダウンがトリガーされる前の最大RSS
memoryKiller.graceTime整数900トリガーされたシャットダウンの前に待機する時間(秒単位)
memoryKiller.shutdownWait整数30トリガーされたシャットダウン後に既存のジョブが完了するまでの時間(秒単位)
minReplicas整数2最小レプリカ数
maxReplicas整数10最大レプリカ数
maxUnavailable整数1利用できないポッドの最大数

HPAスケールの無効化

デフォルトでは、Sidekiqチャートは水平ポッドオートスケール(HPA)を有効にして、CPU使用率に基づいてポッドを自動的にスケールします。HPAスケールを無効にし、代わりに固定レプリカ数を使用するには、チャートレベルでminReplicasをmaxReplicasと等しく設定して、すべてのポッドのHPAを無効にします:

yaml
gitlab:
  sidekiq:
    minReplicas: 3
    maxReplicas: 3  # Setting equal to minReplicas disables HPA scaling
    concurrency: 25
    pods:
      - name: default

ポッドごとの設定

pods宣言は、ワーカーポッドのすべての属性の宣言を提供します。これらは、Sidekiqインスタンスごとに個別のConfigMapとともに、Deploymentにテンプレート化されます。

[!note]

設定は、すべてのキューを監視するようにセットアップされた単一のポッドを含むことをデフォルトとします。ポッドセクションに変更を加えると、デフォルトポッドを上書きすることになり、別のポッド構成になります。デフォルトに加えて新しいポッドは追加されません。

名前型デフォルト説明
concurrency整数同時に処理するタスクの数。提供されていない場合は、チャート全体のデフォルトからプルされます。
name文字列このポッドのDeploymentとConfigMapに名前を付けるために使用されます。短く保ち、2つのエントリ間で重複させないでください。
queues文字列下記を参照。
timeout整数Sidekiqシャットダウンタイムアウト。SidekiqがTERMシグナルを受け取ってから、プロセスが強制的にシャットダウンされるまでの秒数。提供されていない場合は、チャート全体のデフォルトからプルされます。この値はmustterminationGracePeriodSecondsより小さくなければなりません。
resources各ポッドは独自のresources要件を提示できます。これは、存在する場合、そのために作成されたDeploymentに追加されます。これらはKubernetesドキュメントと一致します。
nodeSelector各ポッドは、存在する場合、そのために作成されたDeploymentに追加されるnodeSelector属性で構成できます。これらの定義はKubernetesドキュメントと一致します。
memoryKiller.checkInterval整数3メモリチェック間の時間量
memoryKiller.maxRss整数2000000特定のポッドの最大RSSをオーバーライドします。
memoryKiller.graceTime整数900特定のポッドのトリガーされたシャットダウンの前に待機する時間をオーバーライドします
memoryKiller.shutdownWait整数30特定のポッドに対して、トリガーされたシャットダウン後に既存のジョブが完了するまでの時間をオーバーライドします
minReplicas整数2最小レプリカ数
maxReplicas整数10最大レプリカ数
maxUnavailable整数1利用できないポッドの最大数
podLabelsマップ{}補足ポッドラベル。セレクターには使用されません。
strategy{}デプロイによって利用される更新戦略を構成できます
extraVolumes文字列特定のポッドの追加ボリュームを構成します。
extraVolumeMounts文字列特定のポッドの追加ボリュームマウントを構成します。
priorityClassName文字列""ポッドのpriorityClassNameを構成できるようにします。これは、削除の場合にポッドの優先度を制御するために使用されます。
hpa.customMetrics配列[]カスタムメトリクスには、目的のレプリカ数を計算するために使用する仕様が含まれています(targetAverageUtilizationで構成された平均CPU使用率のデフォルト使用をオーバーライドします)。
hpa.cpu.targetType文字列AverageValueオートスケールCPUターゲットタイプをオーバーライドします。UtilizationまたはAverageValueのいずれかである必要があります。
hpa.cpu.targetAverageValue文字列350mオートスケールCPUターゲット値をオーバーライドします
hpa.cpu.targetAverageUtilization整数オートスケールCPUターゲット使用率をオーバーライドします
hpa.memory.targetType文字列オートスケールメモリターゲットタイプをオーバーライドします。UtilizationまたはAverageValueのいずれかである必要があります。
hpa.memory.targetAverageValue文字列オートスケールメモリターゲット値をオーバーライドします
hpa.memory.targetAverageUtilization整数オートスケールメモリターゲット使用率をオーバーライドします
hpa.targetAverageValue文字列DEPRECATEDオートスケールCPUターゲット値をオーバーライドします
keda.enabledブール値falseKEDAの有効化をオーバーライドします
keda.pollingInterval整数30KEDAのポーリングの間隔をオーバーライドします
keda.cooldownPeriod整数300KEDAのクールダウン期間をオーバーライドします
keda.minReplicaCount整数KEDAの最小レプリカ数をオーバーライドします
keda.maxReplicaCount整数KEDAの最大レプリカ数をオーバーライドします
keda.fallbackマップKEDAフォールバック構成をオーバーライドします
keda.hpaName文字列KEDA HPA名をオーバーライドします
keda.restoreToOriginalReplicaCountブール値元のレプリカ数の復元を有効にすることをオーバーライドします
keda.behaviorマップKEDA HPA動作をオーバーライドします
keda.triggers配列KEDAトリガーをオーバーライドします
extraEnvマップ公開する追加の環境変数のリスト。チャート全体の値がこれにマージされ、ポッドからの値が優先されます
extraEnvFromマップ他のデータソースから公開する追加の環境変数のリスト
terminationGracePeriodSeconds整数30ポッドが正常に終了するために必要なオプションの時間(秒単位)。

キュー

queues値は、処理されるキューのコンマ区切りリストを含む文字列です。デフォルトでは、すべてのキューが処理されることを意味し、設定されていません。

文字列にはスペースを含めないでください。merge,post_receive,process_commitは機能しますが、merge, post_receive, process_commitは機能しません。

ジョブが追加されたが、少なくとも1つのポッドエントリの一部として表現されていないキューは、処理されません。すべてのキューの完全なリストについては、GitLabソースのこれらのファイルを参照してください:

  1. app/workers/all_queues.yml
  2. ee/app/workers/all_queues.yml

gitlab.sidekiq.pods[].queuesを構成することに加えて、global.appConfig.sidekiq.routingRulesも構成する必要があります。詳細については、Sidekiqルーティングルール設定を参照してください。

例podエントリ

yaml
pods:
  - name: immediate
    concurrency: 10
    minReplicas: 2  # defaults to inherited value
    maxReplicas: 10 # defaults to inherited value
    maxUnavailable: 5 # defaults to inherited value
    queues: merge,post_receive,process_commit
    extraVolumeMounts: |
      - name: example-volume-mount
        mountPath: /etc/example
    extraVolumes: |
      - name: example-volume
        persistentVolumeClaim:
          claimName: example-pvc
    resources:
      limits:
        cpu: 800m
        memory: 2Gi
    hpa:
      cpu:
        targetType: Value
        targetAverageValue: 350m

Sidekiq構成の完全な例

以下は、別のSidekiqポッドをインポート関連のジョブに、別のRedisインスタンスを使用したエクスポート関連のジョブに、そして別のポッドをその他すべてに使用するSidekiq構成の完全な例です。

yaml
...
global:
  appConfig:
    sidekiq:
      routingRules:
      - ["feature_category=importers", "import"]
      - ["feature_category=exporters", "export", "queues_shard_extra_shard"]
      - ["*", "default"]
  redis:
    redisYmlOverride:
      queues_shard_extra_shard: ...
...
gitlab:
  sidekiq:
    pods:
    - name: import
      queues: import
    - name: export
      queues: export
      extraEnv:
        SIDEKIQ_SHARD_NAME: queues_shard_extra_shard # to match key in global.redis.redisYmlOverride
    - name: default
...

networkpolicyの構成

このセクションでは、NetworkPolicyを制御します。この構成はオプションであり、ポッドのエグレスとIngressを特定のエンドポイントに制限するために使用されます。

名前型デフォルト説明
enabledブール値falseこの設定はネットワークポリシーを有効にします
ingress.enabledブール値falsetrueに設定すると、Ingressネットワークポリシーがアクティブになります。これにより、ルールが指定されていない限り、すべてのIngress接続がブロックされます。
ingress.rules配列[]Ingressポリシーのルール。詳細はhttps://kubernetes.io/docs/concepts/services-networking/network-policies/#the-networkpolicy-resourceと以下の例を参照してください
egress.enabledブール値falsetrueに設定すると、Egressネットワークポリシーがアクティブになります。これにより、ルールが指定されていない限り、すべてのエグレス接続がブロックされます。
egress.rules配列[]エグレスポリシーのルール。詳細はhttps://kubernetes.io/docs/concepts/services-networking/network-policies/#the-networkpolicy-resourceと以下の例を参照してください

ネットワークポリシーの例

Sidekiqサービスは、有効になっている場合はPrometheus exporterのみのIngress接続を必要とし、通常はさまざまな場所へのエグレス接続を必要とします。この例では、次のネットワークポリシーを追加します:

  • Ingressリクエストを許可します:
    • Prometheusポッドからポート3807へ
  • エグレスリクエストを許可します:
    • kube-dnsからポート53へ
    • gitalyポッドからポート8075へ
    • registryポッドからポート5000へ
    • kasポッドからポート8153へ
    • 外部データベース172.16.0.10/32からポート5432へ
    • 外部Redis 172.16.0.11/32からポート6379へ
    • 外部Elasticsearch 172.16.0.12/32からポート443へ
    • メールゲートウェイ172.16.0.13/32からポート587へ
    • AWS VPCエンドポイント(S3またはSTS用)172.16.1.0/24からポート443へ
    • 内部サブネット172.16.2.0/24からポート443へWebhookを送信します

提供されている例はあくまで例であり、完全ではない可能性があります。Sidekiqサービスは、ローカルエンドポイントが利用できない場合、外部オブジェクトストレージ上のイメージに対してパブリックインターネットへの送信接続を必要とします。この例は、kube-dnsがkube-systemネームスペースにデプロイされ、prometheusがmonitoringネームスペースにデプロイされ、nginx-ingressがnginx-ingressネームスペースにデプロイされたという前提に基づいています。

yaml
networkpolicy:
  enabled: true
  ingress:
    enabled: true
    rules:
      - from:
          - namespaceSelector:
              matchLabels:
                kubernetes.io/metadata.name: monitoring
            podSelector:
              matchLabels:
                app: prometheus
                component: server
                release: gitlab
        ports:
          - port: 3807
  egress:
    enabled: true
    rules:
      - to:
          - podSelector:
              matchLabels:
                app: gitaly
        ports:
          - port: 8075
      - to:
          - podSelector:
              matchLabels:
                app: kas
        ports:
          - port: 8153
      - to:
          - namespaceSelector:
              matchLabels:
                kubernetes.io/metadata.name: kube-system
            podSelector:
              matchLabels:
                k8s-app: kube-dns
        ports:
          - port: 53
            protocol: UDP
      - to:
          - ipBlock:
              cidr: 172.16.0.10/32
        ports:
          - port: 5432
      - to:
          - ipBlock:
              cidr: 172.16.0.11/32
        ports:
          - port: 6379
      - to:
          - ipBlock:
              cidr: 172.16.0.12/32
        ports:
          - port: 25
      - to:
          - ipBlock:
              cidr: 172.16.0.13/32
        ports:
          - port: 443
      - to:
          - ipBlock:
              cidr: 172.16.1.0/24
        ports:
          - port: 443
      - to:
          - ipBlock:
              cidr: 172.16.2.0/24
        ports:
          - port: 443

KEDAの構成

このkedaセクションでは、通常のHorizontalPodAutoscalersの代わりにKEDA ScaledObjectsのインストールを有効にします。この構成はオプションであり、カスタムメトリクスまたは外部メトリクスに基づくオートスケールが必要な場合に使用できます。

ほとんどの設定は、適用可能な場合はhpaセクションで設定された値にデフォルト設定されます。

以下が真の場合、CPUおよびメモリのトリガーは、hpaセクションで設定されたCPUおよびメモリのしきい値に基づいて自動的に追加されます:

  • triggersが設定されていません。
  • 対応するrequest.cpu.requestまたはrequest.memory.request設定もゼロ以外の値に設定されています。

トリガーが設定されていない場合、ScaledObjectは作成されません。

これらの設定の詳細については、KEDAドキュメントを参照してください。

名前型デフォルト説明
enabledブール値falseHorizontalPodAutoscalersの代わりにKEDA ScaledObjectsを使用します
pollingInterval整数30各トリガーを確認する間隔
cooldownPeriod整数300最後にアクティブと報告されたトリガーの後、リソースを0にスケールダウンするまでの待機期間
minReplicaCount整数KEDAがリソースをスケールダウンする最小レプリカ数。minReplicasがデフォルトです。
maxReplicaCount整数KEDAがリソースをスケールアップする最大レプリカ数。maxReplicasがデフォルトです。
fallbackマップKEDAフォールバック構成。ドキュメントを参照してください。
hpaName文字列KEDAが作成するHPAリソースの名前。keda-hpa-{scaled-object-name}がデフォルトです。
restoreToOriginalReplicaCountブール値ScaledObjectが削除された後、ターゲットリソースを元のレプリカ数にスケールバックするかどうかを指定します。
behaviorマップスケールアップおよびスケールダウン動作の仕様。hpa.behaviorがデフォルトです。
triggers配列ターゲットリソースのスケールをアクティブ化するトリガーのリスト。hpa.cpuおよびhpa.memoryから計算されたトリガーがデフォルトです。