- 要件
- 設計の選択
- 設定
- インストールのコマンドラインオプション
- Chart設定例
- このChartのCommunity Editionを使用する場合
- 外部サービス
- メトリクス
- チャート全体のデフォルト
- ポッドごとの設定
-
設定
networkpolicy
- KEDAの設定
GitLab-Sidekiqチャートの使い方
sidekiq
サブチャートはSidekiqワーカーの設定可能なデプロイを提供し、個々のスケーラビリティと設定で複数のDeployment
sに渡るキューの分離を提供するように明確に設計されています。
このChartはデフォルトのpods:
宣言を提供しますが、空の定義を提供した場合、ワーカーは存在しません。
要件
このチャートは、Redis、PostgreSQL、Gitalyサービスへのアクセスに依存しています。これは、完全なGitLabチャートの一部として、またはこのチャートがデプロイされたKubernetesクラスターからアクセス可能な外部サービスとして提供されています。
設計の選択
このChartでは、複数のDeployment
sと関連するConfigMap
sが ConfigMap
作成さConfigMap
れます。 ConfigMap
コマンドの長さに関する懸念を避けるために、environment
属性やコンテナ用のcommand
への追加引数を使用する代わりに、ビヘイビアをConfigMap
使用する方が明確 ConfigMap
であると判断されました。この選択により、ConfigMap
sの数は多くなりますが、各ポッドが何をすべきかの定義が非常に明確になります。
設定
sidekiq
チャートは、チャート全体の外部サービス、チャート全体のデフォルト、ポッドごとの定義の3つの部分で設定されます。
インストールのコマンドラインオプション
以下の表は、--set
フラグを使用してhelm install
コマンドに提供できるすべての可能な Chart 設定です:
パラメータ | デフォルト | 説明 |
---|---|---|
annotations | ポッド注釈 | |
podLabels | ポッドラベルの補足。セレクタには使用されません。 | |
common.labels | このChartで作成されたすべてのオブジェクトに適用される補助ラベル。 | |
concurrency | 20 | Sidekiqデフォルトの同時実行数 |
deployment.strategy | {} | デプロイによって使用されるアップデート戦略を設定できます。 |
deployment.terminationGracePeriodSeconds | 30 | ポッドが優雅に終了するのに必要な秒数をオプションで指定します。 |
enabled | true | Sidekiq有効フラグ |
extraContainers | 追加コンテナのリスト | |
extraInitContainers | 追加コンテナのリスト | |
extraVolumeMounts | 設定する追加ボリュームマウントの文字列テンプレート | |
extraVolumes | 設定する追加ボリュームの文字列テンプレート | |
extraEnv | 公開する追加環境変数のリスト | |
extraEnvFrom | 公開する他のデータソースの追加環境変数のリスト | |
gitaly.serviceName | gitaly | Gitalyサービス名 |
health_checks.port | 3808 | ヘルスチェックサーバーポート |
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 | 自動スケーリングCPU目標値の設定 | |
keda.enabled | false | の代わりにKEDA ScaledObjects を使用します。HorizontalPodAutoscalers
|
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 | initContainer 画像 | |
init.image.tag | initContainer画像タグ | |
init.containerSecurityContext | initContainer コンテナ固有のsecurityContext | |
logging.format | json | JSON以外のログにはtext 。 |
metrics.enabled | true | メトリクスエンドポイントをスクレイピングのために利用可能にする場合 |
metrics.port | 3807 | メトリクス・エンドポイント・ポート |
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 | 廃止明示的なメトリクス・アノテーションを設定します。テンプレート・コンテンツに置き換えられました。 | |
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 | Liveness Probeが開始されるまでの遅延時間 |
livenessProbe.periodSeconds | 60 | Livenessプローブの実行頻度 |
livenessProbe.timeoutSeconds | 30 | Livenessプローブがタイムアウトした場合 |
livenessProbe.successThreshold | 1 | 一度失敗したプローブが成功したとみなされるための最小連続成功回数 |
livenessProbe.failureThreshold | 3 | 成功した後に失敗したとみなされるための連続した失敗の最小値 |
readinessProbe.initialDelaySeconds | 0 | Readiness Probeが開始されるまでの遅延。 |
readinessProbe.periodSeconds | 10 | Readinessプローブの実行頻度 |
readinessProbe.timeoutSeconds | 2 | 準備完了プローブがタイムアウトした場合 |
readinessProbe.successThreshold | 1 | Readinessプローブが失敗した後、成功したとみなされるための最小連続成功回数 |
readinessProbe.failureThreshold | 3 | 成功した後、レディネス・プローブが失敗したとみなされるには、最低連続失敗回数が必要です。 |
securityContext.fsGroup | 1000 | ポッドを起動するグループID |
securityContext.runAsUser | 1000 | ポッドを起動するユーザーID |
securityContext.fsGroupChangePolicy | ボリュームの所有権と権限を変更するためのポリシー (Kubernetes 1.23 が必要) | |
containerSecurityContext | コンテナが起動するコンテナsecurityContext をオーバーライドします。 | |
containerSecurityContext.runAsUser | 1000 | コンテナが起動される特定のセキュリティコンテキストを上書きできるようにします。 |
priorityClassName | "" | ポッドの設定を許可priorityClassName 、これは立ち退き時にポッドの優先度を制御するために使用されます。 |
Chart設定例
リソース
resources
では、Sidekiqポッドが消費できるリソース(メモリとCPU)の最小量と最大量を設定できます。
Sidekiqポッドのワークロードは、デプロイによって大きく異なります。一般的に、各Sidekiqプロセスは約1 vCPUと2 GBのメモリを消費すると理解されています。vCPU:Memory
垂直スケーリングは、一般的にこの1:2
の比率に合わせる必要があります。
以下はresources
の使用例です:
resources:
limits:
memory: 5G
requests:
memory: 2G
cpu: 900m
extraEnv
extraEnv
を使うと、 dependencies コンテナで追加の環境変数を公開することができます。
以下は、extraEnv
の使用例です:
extraEnv:
SOME_KEY: some_value
SOME_OTHER_KEY: some_other_value
コンテナを起動すると、環境変数が公開されていることが確認できます:
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
negateQueues: mailers
これにより、mailers
ポッド内のアプリケーションコンテナに対してのみSOME_POD_KEY
が設定されます。ポッドレベルのextraEnv
設定はinit コンテナには追加されません。
追加EnvFrom
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: boolean
エクストラボリューム
extraVolumes
を使用すると、Chart 全体で追加ボリュームを設定できます。
以下は、extraVolumes
の使用例です:
extraVolumes: |
- name: example-volume
persistentVolumeClaim:
claimName: example-pvc
extraVolumeMounts
extraVolumeMounts
を使用すると、コンテナ全体で追加の VolumeMount を設定できます。
以下は、extraVolumeMounts
の使用例です:
extraVolumeMounts: |
- name: example-volume-mount
mountPath: /etc/example
画像.pullSecrets
pullSecrets
を使用すると、非公開レジストリで認証してポッドのイメージをプルできるようになります。
非公開レジストリとその認証方法の詳細については、Kubernetesのドキュメントを参照してください。
以下は、pullSecrets
の使用例です:
image:
repository: my.sidekiq.repository
pullPolicy: Always
pullSecrets:
- name: my-secret-name
- name: my-secondary-secret-name
許容範囲
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
このChartのCommunity Editionを使用する場合
デフォルトでは、HelmチャートはGitLabのEnterprise Editionを使用しています。必要であれば、代わりに Community Edition を使うこともできます。両者の違いについてはこちらをご覧ください。
コミュニティ版を使うには、image.repository
をregistry.gitlab.com/gitlab-org/build/cng/gitlab-sidekiq-ce
に設定します。
外部サービス
このChartは、WebサービスChartと同じRedis、PostgreSQL、Gitalyインスタンスにアタッチする必要があります。外部サービスの値は、すべてのSidekiqポッドで共有されるConfigMap
。
Redis
redis:
host: rank-racoon-redis
port: 6379
sentinels:
- host: sentinel1.example.com
port: 26379
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 属性は、プルするKubernetesSecret の名前を定義します。 | |
port | 整数 | 6379 | Redis サーバーに接続するポート。 |
serviceName | 文字列 | redis | Redisデータベースをオペレーションしているservice の名前。これが存在し、host が存在しない場合、Chart はhost の値の代わりにサービスのホスト名(および現在の.Release.Name )をテンプレート化します。RedisをGitLabチャート全体の一部として使用する場合に便利です。 |
sentinels.[].host | 文字列 | Redis HA セットアップ用の Redis Sentinel サーバーのホスト名。 | |
sentinels.[].port | 整数 | 26379 | Redis Sentinelサーバーに接続するポート。 |
redis.install=false
で無効にする必要があります。Redisのパスワードを含むシークレットは、GitLabチャートをデプロイする前に手動で作成する必要があります。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 の場合は省略可能です(デフォルトは non-production)。 | |
serviceName | 文字列 | PostgreSQLデータベースをオペレーションしているservice 。これが存在し、かつhost 存在しない場合、Chartは host この値のhost 代わりにサービスのホスト名をテンプレート化 host します。 | |
database | 文字列 | gitlabhq_production | PostgreSQL サーバで使用するデータベースの名前。 |
password.key | 文字列 | PostgreSQLのpassword.key 属性は、パスワードを含むsecret(以下)のキーの名前を定義します。 | |
password.secret | 文字列 | PostgreSQL のpassword.secret 属性は、KubernetesSecret からプルする名前を定義します。 | |
port | 整数 | 5432 | PostgreSQLサーバに接続するポート。 |
username | 文字列 | gitlab | データベースへの認証に使用するユーザ名。 |
preparedStatements | ブール値 | false | PostgreSQLサーバと通信する際に準備された文を使用するかどうか。 |
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 が存在しない場合、Chart はhost の値の代わりにサービスのホスト名(および現在の.Release.Name )をテンプレート化します。これはGitalyをGitLabチャート全体の一部として使うときに便利です。 |
port | 整数 | 8075 | Gitalyサーバーに接続するポート。 |
authToken.key | 文字列 | authToken を含む以下の秘密のキーの名前。 | |
authToken.secret | 文字列 | プルする KubernetesSecret の名前。 |
メトリクス
デフォルトでは、ポッドごとにPrometheusメトリクスエクスポーターが有効になっています。管理エリアでGitLab Prometheus メトリクスが有効になっている場合のみ、メトリクスを利用できます。Exporter は3807
ポートの/metrics
エンドポイントを公開します。メトリクスが有効になると、各ポッドにアノテーションが追加され、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 | 利用できないポッド数の上限 |
ポッドごとの設定
pods
宣言は、ワーカーポッドのすべての属性の宣言を提供します。これらはDeployment
にテンプレート化され、Sidekiq インスタンスには個別のConfigMap
が設定されます。
名前 | 種類 | デフォルト | 説明 |
---|---|---|---|
concurrency | 整数 | 同時に処理するタスクの数。指定されない場合は、Chart 全体のデフォルト値が使用されます。 | |
name | 文字列 | このポッドのDeployment およびConfigMap の名前に使用します。短く、2 つのエントリの間で重複しないようにします。 | |
queues | 文字列 | 以下を参照してください。 | |
negateQueues | 文字列 | DEPRECATED 下記参照。 | |
queueSelector | ブール値 | false | キューセレクタを使用します。 |
timeout | 整数 | Sidekiqのシャットダウンタイムアウト。SidekiqがTERMシグナルを取得した後、プロセスを強制シャットダウンするまでの秒数。指定されていない場合、Chart全体のデフォルト値が使用されます。この値は、terminationGracePeriodSeconds より小さくなければなりません。 | |
resources | 各ポッドは、独自のresources 要件を提示することができ、それが存在する場合は、そのために作成されたDeployment に追加されます。これらはKubernetesのドキュメントと一致します。 | ||
nodeSelector | 各ポッドは、nodeSelector 属性を設定できます。これは、存在する場合、そのために作成されたDeployment に追加されます。これらの定義は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 |
Utilization オートスケーリングCPUターゲットタイプを上書きします。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 | マップ | 公開する追加の環境変数のリスト。Chart全体の値がマージされ、ポッドの値が優先されます。 | |
extraEnvFrom | マップ | 公開する他のデータソースの追加環境変数のリスト | |
terminationGracePeriodSeconds | 整数 | 30 | ポッドが優雅に終了するのに必要な秒数をオプションで指定します。 |
キュー
queues
の値は、処理すべきキューをカンマ区切りで列挙した文字列です。デフォルトではこの値は設定されておらず、すべてのキューが処理されます。
文字列はスペースを含んではいけません。merge,post_receive,process_commit
は動作しますが、merge, post_receive, process_commit
は動作しません。
ジョブが追加されたものの、少なくとも一つのポッドアイテムの一部として表現されていないキューは処理されません。すべてのキューの完全なリストについては、GitLabソースのこれらのファイルを参照してください:
negateQueues
negateQueues
はqueues
と同じ形式ですが、処理されるのではなく無視されるキューを表します。
文字列はスペースを含んではいけません。merge,post_receive,process_commit
は動作しますが、merge, post_receive, process_commit
は動作しません。
queues
negateQueues
これは、あるポッドが重要なキューを処理し、別のポッドが他のキューを処理している場合に便利です。これらのポッドは、同じキューのリストを使用することができます。
negateQueues
をqueues
と一緒に提供negateQueues
すべきではありませんnegateQueues
。
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: 350m
設定networkpolicy
このセクションではNetworkPolicyを制御します。この設定はオプションで、ポッドの Egress および Ingress を特定のエンドポイントに制限するために使用します。
名前 | 種類 | デフォルト | 説明 |
---|---|---|---|
enabled | ブール値 | false | この設定は、ネットワーク ポリシーを有効にします。 |
ingress.enabled | ブール値 | false |
true に設定すると、Ingress ネットワーク ポリシーがアクティビティになります。これにより、ルールが指定されていない限り、すべての Ingress 接続がブロックされます。 |
ingress.rules | 配列 | [] | 詳細は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エクスポートのみにIngress接続を必要とし、通常は様々な場所にEgress接続を必要とします。この例では、次のネットワークポリシーを追加します:
- TCP
10.0.0.0/8
ポート 3807 のネットワークからのすべての Ingress 要求は、メトリクスのエクスポートに許可されます。 - UDP
10.0.0.0/8
ポート 53 のネットワークへのすべての Egress リクエストは、DNS のために許可されます。 - PostgreSQL では、TCP
10.0.0.0/8
ポート 5432 のネットワークへのすべての Egress リクエストが許可されます。 - Redis では、TCP
10.0.0.0/8
ポート 6379 でネットワークへのすべての Egress リクエストが許可されます。 -
10.0.0.0/8
の内部ネットワークへのその他の Egress リクエストは制限されています。 -
10.0.0.0/8
の外部へのリクエストは許可されます。
提供された例は単なる例であり、完全ではない可能性があることに注意してください。
Sidekiqサービスでは、外部オブジェクトストレージ上の画像に対して公開インターネットへのアウトバウンド接続が必要です。
networkpolicy:
enabled: true
ingress:
enabled: true
rules:
- from:
- ipBlock:
cidr: 10.0.0.0/8
ports:
- port: 3807
egress:
enabled: true
rules:
- to:
- ipBlock:
cidr: 10.0.0.0/8
ports:
- port: 53
protocol: UDP
- to:
- ipBlock:
cidr: 10.0.0.0/8
ports:
- port: 5432
protocol: TCP
- to:
- ipBlock:
cidr: 10.0.0.0/8
ports:
- port: 6379
protocol: TCP
- to:
- ipBlock:
cidr: 0.0.0.0/0
except:
- 10.0.0.0/8
KEDAの設定
このkeda
セクションでは、通常のHorizontalPodAutoscalers
の代わりにKEDA ScaledObjects
をインストールできるようにします。この設定はオプションで、カスタムまたは外部のメトリクスに基づいてオートスケーリングする必要がある場合に使用できます。
ほとんどの設定は、該当する場合はhpa
セクションで設定された値にデフォルト設定されます。
以下が真である場合、hpa
セクションで設定された CPU とメモリのしきい値に基づいて、CPU とメモリのトリガーが自動的に追加されます:
-
triggers
がセットされていません。 - 対応する
request.cpu.request
またはrequest.memory.request
の設定もゼロ以外の値に設定されます。
トリガーが設定されていない場合、ScaledObject
は作成されません。
これらの設定の詳細については、KEDAのドキュメントを参照してください。
名前 | 種類 | デフォルト | 説明 |
---|---|---|---|
enabled | ブール値 | false | の代わりにKEDA ScaledObjects を使用します。HorizontalPodAutoscalers
|
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
|