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 | このチャートによって作成されたすべてのオブジェクトに適用される補足ラベル。 | |
concurrency | 20 | Sidekiqデフォルトの並行処理 |
deployment.strategy | {} | デプロイによって利用される更新戦略を構成できます |
deployment.terminationGracePeriodSeconds | 30 | ポッドが正常に終了するために必要なオプションの時間(秒単位)。 |
enabled | true | Sidekiq有効フラグ |
extraContainers | 含めるコンテナのリストを含む複数行のリテラルスタイル文字列 | |
extraInitContainers | 含める追加のinitコンテナのリスト | |
extraVolumeMounts | 追加のボリュームマウントを構成するための文字列テンプレート | |
extraVolumes | 追加のボリュームを構成するための文字列テンプレート | |
extraEnv | 公開する追加の環境変数のリスト | |
extraEnvFrom | 他のデータソースから公開する追加の環境変数のリスト | |
gitaly.serviceName | gitaly | Gitalyサービス名 |
health_checks.port | 3808 | ヘルスチェックサーバーポート |
health_checks.listenAddr | * | ヘルスチェックリスニングアドレス。 |
hpa.behaviour | {scaleDown: {stabilizationWindowSeconds: 300 }} | 動作には、スケールアップとスケールダウンの動作に関する仕様が含まれています(autoscaling/v2beta2以上が必要です)。 |
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 | false | HorizontalPodAutoscalersの代わりにKEDA ScaledObjectsを使用します |
keda.pollingInterval | 30 | 各トリガーを確認する間隔 |
keda.cooldownPeriod | 300 | 最後にアクティブと報告されたトリガーの後、リソースを0にスケールダウンするまでの待機期間 |
keda.minReplicaCount | KEDAがリソースをスケールダウンする最小レプリカ数。minReplicasがデフォルトです。 | |
keda.maxReplicaCount | KEDAがリソースをスケールアップする最大レプリカ数。maxReplicasがデフォルトです。 | |
keda.fallback | KEDAフォールバック構成。ドキュメントを参照してください。 | |
keda.hpaName | KEDAが作成するHPAリソースの名前。keda-hpa-{scaled-object-name}がデフォルトです。 | |
keda.restoreToOriginalReplicaCount | ScaledObjectが削除された後、ターゲットリソースを元のレプリカ数にスケールバックするかどうかを指定します。 | |
keda.behavior | スケールアップおよびスケールダウン動作の仕様。hpa.behaviorがデフォルトです。 | |
keda.triggers | ターゲットリソースのスケールをアクティブ化するトリガーのリスト。hpa.cpuおよびhpa.memoryから計算されたトリガーがデフォルトです。 | |
minReplicas | 2 | 最小レプリカ数 |
maxReplicas | 10 | 最大レプリカ数 |
maxUnavailable | 1 | 利用できないポッドの最大数 |
image.pullPolicy | Always | Sidekiqイメージプルポリシー |
image.pullSecrets | イメージリポジトリのシークレット | |
image.repository | registry.gitlab.com/gitlab-org/build/cng/gitlab-sidekiq-ee | Sidekiqイメージリポジトリ |
image.tag | Sidekiqイメージタグ | |
init.image.repository | initコンテナイメージ | |
init.image.tag | initコンテナイメージタグ | |
init.containerSecurityContext | initコンテナ固有のsecurityContext | |
init.containerSecurityContext.runAsUser | 1000 | initコンテナ固有: コンテナを起動するユーザーID |
init.containerSecurityContext.allowPrivilegeEscalation | false | initコンテナ固有: プロセスが親プロセスよりも多くの権限を取得できるかどうかを制御します |
init.containerSecurityContext.runAsNonRoot | true | initコンテナ固有: コンテナが非ルートユーザーで実行されるかどうかを制御します |
init.containerSecurityContext.capabilities.drop | [ "ALL" ] | initコンテナ固有: コンテナのLinux機能を削除します |
logging.format | json | 非JSONログの場合はtextに設定します |
metrics.enabled | true | メトリクスエンドポイントをスクレイプに利用可能にする場合 |
metrics.port | 3807 | メトリクスエンドポイントのポート |
metrics.listenAddr | * | メトリクスエンドポイントのリッスンアドレス。 |
metrics.path | /metrics | メトリクスエンドポイントのパス |
metrics.log_enabled | false | sidekiq_exporter.logに書き込まれるメトリクスサーバーログを有効または無効にします |
metrics.podMonitor.enabled | false | Prometheus Operatorがメトリクスのスクレイプを管理できるようにPodMonitorを作成する場合 |
metrics.podMonitor.additionalLabels | {} | PodMonitorに追加する追加のラベル |
metrics.podMonitor.endpointConfig | {} | PodMonitorの追加のエンドポイント構成 |
metrics.annotations | DEPRECATED明示的なメトリクスアノテーションを設定します。テンプレートコンテンツに置き換えられます。 | |
metrics.tls.enabled | false | metrics/sidekiq_exporterエンドポイントでTLSが有効になっています |
metrics.tls.secretName | {Release.Name}-sidekiq-metrics-tls | metrics/sidekiq_exporterエンドポイントTLS証明書とキーのシークレット |
psql.password.key | psql-password | psqlシークレット内のpsqlパスワードへのキー |
psql.password.secret | gitlab-postgres | psqlパスワードシークレット |
psql.port | PostgreSQLサーバーポートを設定します。global.psql.portよりも優先されます。 | |
redis.serviceName | redis | Redisサービス名 |
resources.requests.cpu | 900m | Sidekiqの最小必要CPU |
resources.requests.memory | 2G | Sidekiqの最小必要メモリ |
resources.limits.memory | Sidekiqの最大許容メモリ | |
timeout | 25 | Sidekiqジョブタイムアウト |
tolerations | [] | ポッド割り当てのトレランスラベル |
memoryKiller.daemonMode | true | falseの場合、レガシーメモリキラーモードを使用します |
memoryKiller.maxRss | 2000000 | キロバイトで表現される、遅延シャットダウンがトリガーされる前の最大RSS |
memoryKiller.graceTime | 900 | トリガーされたシャットダウンの前に待機する時間(秒単位) |
memoryKiller.shutdownWait | 30 | トリガーされたシャットダウン後に既存のジョブが完了するまでの時間(秒単位) |
memoryKiller.hardLimitRss | デーモンモードで即時シャットダウンがトリガーされる前の最大RSS(キロバイト単位) | |
memoryKiller.checkInterval | 3 | メモリチェック間の時間量 |
livenessProbe.initialDelaySeconds | 20 | ライブネスプローブが開始されるまでの遅延 |
livenessProbe.periodSeconds | 60 | ライブネスプローブを実行する頻度 |
livenessProbe.timeoutSeconds | 30 | ライブネスプローブがタイムアウトするとき |
livenessProbe.successThreshold | 1 | ライブネスプローブが失敗した後に成功と見なされる最小連続成功数 |
livenessProbe.failureThreshold | 3 | ライブネスプローブが成功した後に失敗したと見なされる最小連続失敗数 |
readinessProbe.initialDelaySeconds | 0 | レディネスプローブが開始されるまでの遅延 |
readinessProbe.periodSeconds | 10 | レディネスプローブを実行する頻度 |
readinessProbe.timeoutSeconds | 2 | レディネスプローブがタイムアウトするとき |
readinessProbe.successThreshold | 1 | レディネスプローブが失敗した後に成功と見なされる最小連続成功数 |
readinessProbe.failureThreshold | 3 | レディネスプローブが成功した後に失敗したと見なされる最小連続失敗数 |
securityContext.fsGroup | 1000 | ポッドを起動するグループID |
securityContext.runAsUser | 1000 | ポッドを起動するユーザーID |
securityContext.fsGroupChangePolicy | ボリュームの所有権と権限を変更するためのポリシー(Kubernetes 1.23が必要) | |
securityContext.seccompProfile.type | RuntimeDefault | 使用するSeccompプロファイル |
containerSecurityContext | コンテナが起動されるコンテナsecurityContextをオーバーライドします | |
containerSecurityContext.runAsUser | 1000 | コンテナが起動される特定のセキュリティコンテキストを上書きすることを許可します |
containerSecurityContext.allowPrivilegeEscalation | false | コンテナのプロセスが親プロセスよりも多くの権限を取得できるかどうかを制御します |
containerSecurityContext.runAsNonRoot | true | コンテナが非ルートユーザーで実行されるかどうかを制御します |
containerSecurityContext.capabilities.drop | [ "ALL" ] | GitalyコンテナのLinux機能を削除します |
serviceAccount.annotations | {} | ServiceAccountアノテーション |
serviceAccount.automountServiceAccountToken | false | デフォルトのServiceAccountアクセストークンをポッドにマウントするかどうかを示します |
serviceAccount.create | false | ServiceAccountを作成するかどうかを示します |
serviceAccount.enabled | false | ServiceAccountを使用するかどうかを示します |
serviceAccount.name | ServiceAccountの名前。設定されていない場合、完全なチャート名が使用されます | |
priorityClassName | "" | ポッドのpriorityClassNameを構成できるようにします。これは、削除の場合にポッドの優先度を制御するために使用されます。 |
antiAffinity | "" | チャートグローバル値からのantiAffinity値を上書きすることを許可します。デフォルトはグローバルから読み取り込まれ、softまたはhardに設定できます。 |
チャート構成の例
リソース
resourcesを使用すると、Sidekiqポッドが消費できるリソース(メモリとCPU)の最小量と最大量を構成できます。
Sidekiqポッドのワークロードは、デプロイによって大きく異なります。一般的に、各Sidekiqプロセスは約1 vCPUと2 GBのメモリを消費すると理解されています。垂直スケールは、一般的に1:2のvCPU:Memory比率に合わせるべきです。
resourcesの使用例を以下に示します。
resources:
limits:
memory: 5G
requests:
memory: 2G
cpu: 900mextraEnv
extraEnvを使用して、依存関係コンテナに追加の環境変数を公開します。
たとえば、SOME_KEYとSOME_OTHER_KEYの環境変数を公開するには、次のようにします:
extraEnv:
SOME_KEY: some_value
SOME_OTHER_KEY: some_other_valueコンテナが起動したら、envコマンドを実行し、変数名をgrepして環境変数が公開されていることを確認します。例:
env | grep SOME
SOME_KEY=some_value
SOME_OTHER_KEY=some_other_value特定のポッドに対してextraEnvを設定することもできます。例:
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の使用例を以下に示します。
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: booleanextraVolumes
extraVolumesを使用すると、チャート全体で追加ボリュームを構成できます。
extraVolumesの使用例を以下に示します。
extraVolumes: |
- name: example-volume
persistentVolumeClaim:
claimName: example-pvcextraVolumeMounts
extraVolumeMountsを使用すると、チャート全体のすべてのコンテナにボリュームマウントを追加構成できます。
extraVolumeMountsの使用例を以下に示します。
extraVolumeMounts: |
- name: example-volume-mount
mountPath: /etc/exampleimage.pullSecrets
pullSecretsを使用すると、プライベートレジストリに対して認証し、ポッド用のイメージをプルできます。
プライベートレジストリとその認証方法に関する追加の詳細は、Kubernetesドキュメントで確認できます。
pullSecretsの使用例を以下に示します。
image:
repository: my.sidekiq.repository
pullPolicy: Always
pullSecrets:
- name: my-secret-name
- name: my-secondary-secret-nameserviceAccount
このセクションでは、ServiceAccountを作成するかどうか、およびデフォルトのアクセストークンをポッドにマウントするかどうかを制御します。
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
annotations | マップ | {} | ServiceAccountアノテーション。 |
automountServiceAccountToken | ブール値 | false | デフォルトのServiceAccountアクセストークンをポッドにマウントするかどうかを制御します。これは、特定のサイドカーが正常に機能するために必要という場合(Istioなど)を除き、有効にしないようにしてください。 |
create | ブール値 | false | ServiceAccountを作成するかどうかを示します。 |
enabled | ブール値 | false | ServiceAccountを使用するかどうかを示します。 |
name | 文字列 | ServiceAccountの名前。設定されていない場合、完全なチャート名が使用されます。 |
トレランス
tolerationsは、汚染されたワーカーノードにポッドをスケジュールできるようにします
tolerationsの使用例を以下に示します。
tolerations:
- key: "node_label"
operator: "Equal"
value: "true"
effect: "NoSchedule"
- key: "node_label"
operator: "Equal"
value: "true"
effect: "NoExecute"アノテーション
annotationsを使用すると、Sidekiqポッドにアノテーションを追加できます。
annotationsの使用例を以下に示します。
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
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 | 整数 | 6379 | Redisサーバーへの接続に使用するポート。 |
serviceName | 文字列 | redis | Redisデータベースを操作しているserviceの名前。これが存在し、hostが存在しない場合、チャートはhost値の代わりにサービスのホスト名(および現在の.Release.Name)をテンプレート処理します。これは、RedisをGitLabチャート全体の一部として使用する場合に便利です。 |
sentinels.[].host | 文字列 | Redis HA設定用のRedis Sentinelサーバーのホスト名。 | |
sentinels.[].port | 整数 | 26379 | Redis Sentinelサーバーへの接続に使用するポート。 |
PostgreSQL
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_production | PostgreSQLサーバーで使用するデータベースの名前。 |
password.key | 文字列 | PostgreSQLのpassword.key属性は、パスワードを含むシークレット(下記)内のキーの名前を定義します。 | |
password.secret | 文字列 | PostgreSQLのpassword.secret属性は、プル元のKubernetes Secretの名前を定義します。 | |
port | 整数 | 5432 | PostgreSQLサーバーへの接続に使用するポート。 |
username | 文字列 | gitlab | データベースへの認証に使用するユーザー名。 |
preparedStatements | ブール値 | false | PostgreSQLサーバーとの通信時にプリペアドステートメントを使用するかどうか。 |
Sidekiqデプロイのdependencies initContainerは、次のことを確認するスクリプトを実行します:
- GitLabの依存関係が利用可能かどうか。
- PostgreSQLのデータベース移行が実行されているかどうか。
SidekiqチャートのextraEnv構成キーを使用して、これらのスクリプトの動作を制御できます。次の2つの環境変数がサポートされています:
BYPASS_POST_DEPLOYMENT=true: すべての通常の移行が実行され、デプロイ後の移行のみが保留中の場合、依存関係チェックは合格しますBYPASS_SCHEMA_VERSION=true(非推奨): 通常の移行が実行されていなくても、依存関係チェックは合格します。この環境変数を使用すると、データベーススキーマがアプリケーションコードデプロイが起動後にエラーが発生する可能性があります。
Gitaly
gitaly:
internal:
names:
- default
- default2
external:
- name: node1
hostname: node1.example.com
port: 8079
authToken:
secret: gitaly-secret
key: token| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
host | 文字列 | 使用するGitalyサーバーのホスト名。serviceNameの代わりとして省略できます。 | |
serviceName | 文字列 | gitaly | Gitalyサーバーを操作しているserviceの名前。これが存在し、hostが存在しない場合、チャートはhost値の代わりにサービスのホスト名(および現在の.Release.Name)をテンプレート処理します。これは、GitalyをGitLabチャート全体の一部として使用する場合に便利です。 |
port | 整数 | 8075 | Gitalyサーバーへの接続に使用するポート。 |
authToken.key | 文字列 | 以下のシークレットでauthTokenを含むキーの名前。 | |
authToken.secret | 文字列 | Kubernetes Secretの名前をプルします。 |
メトリクス
デフォルトでは、Prometheusメトリクスexporterはポッドごとに有効になっています。メトリクスは、GitLab Prometheusメトリクスが管理者エリアで有効になっている場合にのみ利用できます。exporterは/metricsエンドポイントをポート3807で公開します。メトリクスが有効になっている場合、アノテーションが各ポッドに追加され、Prometheusサーバーが公開されたメトリクスを検出してスクレイプできるようになります。
チャート全体のデフォルト
以下の値は、ポッドごとに値が提示されない場合、チャート全体で使用されます。
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
concurrency | 整数 | 25 | 同時に処理するタスクの数。 |
timeout | 整数 | 4 | Sidekiqシャットダウンタイムアウト。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を無効にします:
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 | ブール値 | false | KEDAの有効化をオーバーライドします |
keda.pollingInterval | 整数 | 30 | KEDAのポーリングの間隔をオーバーライドします |
keda.cooldownPeriod | 整数 | 300 | KEDAのクールダウン期間をオーバーライドします |
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ソースのこれらのファイルを参照してください:
gitlab.sidekiq.pods[].queuesを構成することに加えて、global.appConfig.sidekiq.routingRulesも構成する必要があります。詳細については、Sidekiqルーティングルール設定を参照してください。
例podエントリ
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: 350mSidekiq構成の完全な例
以下は、別のSidekiqポッドをインポート関連のジョブに、別のRedisインスタンスを使用したエクスポート関連のジョブに、そして別のポッドをその他すべてに使用するSidekiq構成の完全な例です。
...
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 | ブール値 | false | trueに設定すると、Ingressネットワークポリシーがアクティブになります。これにより、ルールが指定されていない限り、すべてのIngress接続がブロックされます。 |
ingress.rules | 配列 | [] | Ingressポリシーのルール。詳細はhttps://kubernetes.io/docs/concepts/services-networking/network-policies/#the-networkpolicy-resourceと以下の例を参照してください |
egress.enabled | ブール値 | false | trueに設定すると、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ネームスペースにデプロイされたという前提に基づいています。
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: 443KEDAの構成
このkedaセクションでは、通常のHorizontalPodAutoscalersの代わりにKEDA ScaledObjectsのインストールを有効にします。この構成はオプションであり、カスタムメトリクスまたは外部メトリクスに基づくオートスケールが必要な場合に使用できます。
ほとんどの設定は、適用可能な場合はhpaセクションで設定された値にデフォルト設定されます。
以下が真の場合、CPUおよびメモリのトリガーは、hpaセクションで設定されたCPUおよびメモリのしきい値に基づいて自動的に追加されます:
triggersが設定されていません。- 対応する
request.cpu.requestまたはrequest.memory.request設定もゼロ以外の値に設定されています。
トリガーが設定されていない場合、ScaledObjectは作成されません。
これらの設定の詳細については、KEDAドキュメントを参照してください。
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
enabled | ブール値 | false | HorizontalPodAutoscalersの代わりに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から計算されたトリガーがデフォルトです。 |