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

GitLab Webserviceチャートを使用する

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

このwebserviceサブチャートは、GitLab Railsウェブサーバーにポッドごとに2つのWebserviceワーカーを提供します。これは、単一のポッドがGitLabであらゆるウェブリクエストを処理するために最低限必要な数です。

このチャートのポッドは、2つのコンテナ、gitlab-workhorsewebserviceを使用します。GitLab Workhorseはポート8181でリッスンし、ポッドへの受信トラフィックの_常に_宛先である必要があります。webserviceはGitLabのRailsコードベースを格納し、8080でリッスンしており、メトリクス収集の目的でアクセス可能です。webserviceは通常のトラフィックを直接受信すべきではありません。

要件

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

設定

このwebserviceチャートは次のように設定されます: グローバル設定デプロイ設定Ingress設定外部サービス 、およびチャート設定

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

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

パラメータデフォルト説明
annotationsポッドアノテーション
podLabels補足的なポッドラベル。セレクターには使用されません。
common.labelsこのチャートによって作成されたすべてのオブジェクトに適用される補足ラベル。
deployment.terminationGracePeriodSeconds30Kubernetesがポッドが終了するのを待つ秒数。これはshutdown.blackoutSecondsよりも長くする必要があります。
deployment.livenessProbe.initialDelaySeconds20ライブネスプローブが開始される前の遅延
deployment.livenessProbe.periodSeconds60ライブネスプローブを実行する頻度
deployment.livenessProbe.timeoutSeconds30ライブネスプローブがタイムアウトするとき
deployment.livenessProbe.successThreshold1ライブネスプローブが失敗した後に成功と見なされるための最小連続成功数
deployment.livenessProbe.failureThreshold3ライブネスプローブが成功した後に失敗と見なされるための最小連続失敗数
deployment.readinessProbe.initialDelaySeconds0レディネスプローブが開始される前の遅延
deployment.readinessProbe.periodSeconds10レディネスプローブを実行する頻度
deployment.readinessProbe.timeoutSeconds2レディネスプローブがタイムアウトするとき
deployment.readinessProbe.successThreshold1レディネスプローブが失敗した後に成功と見なされるための最小連続成功数
deployment.readinessProbe.failureThreshold3レディネスプローブが成功した後に失敗と見なされるための最小連続失敗数
deployment.strategy{}デプロイで使用される更新戦略を設定できます。指定しない場合、クラスターのデフォルトが使用されます。
enabledtrueWebservice有効化フラグ
extraContainers含めるコンテナのリストを含む複数行のリテラルスタイル文字列
extraInitContainers追加のinitコンテナのリスト
extras.google_analytics_idnilフロントエンド用のGoogle Analytics ID
extraVolumeMounts追加でマウントするボリュームのリスト
extraVolumes作成する追加ボリュームのリスト
extraEnv追加の環境変数のリスト
extraEnvFrom他のデータソースから公開する追加の環境変数のリスト
gitlab.webservice.workhorse.imageregistry.gitlab.com/gitlab-org/build/cng/gitlab-workhorse-eeWorkhorseイメージリポジトリ
gitlab.webservice.workhorse.tagWorkhorseイメージタグ
hpa.behavior{scaleDown: {stabilizationWindowSeconds: 300 }}動作は、スケールアップおよびスケールダウン動作の仕様を含みます(autoscaling/v2beta2以降が必要)。
hpa.customMetrics[]カスタムメトリクスには、目的のレプリカ数を計算するために使用する仕様が含まれます(targetAverageUtilizationで設定された平均CPU使用率のデフォルト使用をオーバーライドします)。
hpa.cpu.targetTypeAverageValueオートスケールCPUターゲットタイプを設定します。UtilizationまたはAverageValueのいずれかである必要があります。
hpa.cpu.targetAverageValue1オートスケールCPUターゲット値を設定します。
hpa.cpu.targetAverageUtilizationオートスケールCPUターゲット使用率を設定します。
hpa.memory.targetTypeオートスケールメモリターゲットタイプを設定します。UtilizationまたはAverageValueのいずれかである必要があります。
hpa.memory.targetAverageValueオートスケールメモリターゲット値を設定します。
hpa.memory.targetAverageUtilizationオートスケールメモリターゲット使用率を設定します。
hpa.targetAverageValueDEPRECATED:オートスケールCPUターゲット値を設定します。
sshHostKeys.mountfalse公開SSHキーを含むGitLab Shellのシークレットをマウントするかどうか。
sshHostKeys.mountNamessh-host-keysマウントされたボリュームの名前。
sshHostKeys.types[dsa,rsa,ecdsa,ed25519]マウントするSSHキータイプの一覧。
image.pullPolicyAlwaysWebserviceイメージプルポリシー
image.pullSecretsイメージリポジトリ用のシークレット
image.repositoryregistry.gitlab.com/gitlab-org/build/cng/gitlab-webservice-eeWebserviceイメージリポジトリ
image.tagWebserviceイメージタグ
init.image.repositoryinitContainerイメージ
init.image.taginitContainerイメージタグ
init.containerSecurityContext.runAsUser1000initContainer固有: コンテナを開始するユーザーID
init.containerSecurityContext.allowPrivilegeEscalationfalseinitContainer固有: プロセスが親プロセスよりも多くの権限を取得できるかどうかを制御します。
init.containerSecurityContext.runAsNonRoottrueinitContainer固有: コンテナが非rootユーザーで実行されるかどうかを制御します。
init.containerSecurityContext.capabilities.drop[ "ALL" ]initContainer固有: コンテナからLinuxケーパビリティを削除します。
keda.enabledfalseHorizontalPodAutoscalersの代わりにKEDA ScaledObjectsを使用します
keda.pollingInterval30各トリガーをチェックする間隔
keda.cooldownPeriod300最後のトリガーがアクティブを報告してから、リソースを0にスケールバックするまでの待機期間
keda.minReplicaCountminReplicasKEDAがリソースをスケールダウンする最小レプリカ数。
keda.maxReplicaCountmaxReplicasKEDAがリソースをスケールアップする最大レプリカ数。
keda.fallbackKEDAフォールバック設定。ドキュメントを参照してください。
keda.hpaNamekeda-hpa-{scaled-object-name}KEDAが作成するHPAリソースの名前。
keda.restoreToOriginalReplicaCountScaledObjectが削除された後、ターゲットリソースが元のレプリカ数にスケールバックされるべきかどうかを指定します。
keda.behaviorhpa.behaviorスケールアップおよびスケールダウン動作の仕様。
keda.triggersターゲットリソースのスケールをアクティブ化するトリガーのリスト。hpa.cpuhpa.memoryから計算されたトリガーにデフォルトで設定されます。
metrics.enabledtrueメトリクスエンドポイントをスクレイプ可能にするかどうか。
metrics.port8083メトリクスエンドポイントポート
metrics.listenAddr0.0.0.0メトリクスリスニングアドレス。
metrics.path/metricsメトリクスエンドポイントパス
metrics.serviceMonitor.enabledfalsePrometheus Operatorがメトリクスのスクレイプを管理できるようにServiceMonitorを作成する場合、これを有効にするとprometheus.ioのスクレイプアノテーションが削除されることに注意してください。
metrics.serviceMonitor.additionalLabels{}ServiceMonitorに追加する追加ラベル
metrics.serviceMonitor.endpointConfig{}ServiceMonitorの追加エンドポイント設定
metrics.annotationsDEPRECATED:明示的なメトリクスアノテーションを設定します。テンプレートコンテンツに置き換えられます。
metrics.tls.enabledメトリクス/web_exporterエンドポイントでTLSを有効にします。tls.enabledがデフォルトです。
metrics.tls.secretNameメトリクス/web_exporterエンドポイントのTLS証明書とキー用のシークレット。tls.secretNameがデフォルトです。
minio.bucketgit-lfsMinIO使用時のストレージバケット名
minio.port9000MinIOサービス用のポート
minio.serviceNameminio-svcMinIOサービス名
monitoring.ipWhitelist[0.0.0.0/0, ::/0]モニタリングエンドポイントでホワイトリストに登録するIPのリスト
monitoring.exporter.listenAddr0.0.0.0メトリクスリスニングアドレス。
monitoring.exporter.enabledfalseウェブサーバーがPrometheusメトリクスを公開できるようにします。メトリクスポートがモニタリングexporterポートに設定されている場合、これはmetrics.enabledによってオーバーライドされます。
monitoring.exporter.port8083メトリクスexporterに使用するポート番号
psql.password.keypsql-passwordpsqlシークレット内のpsqlパスワードへのキー
psql.password.secretgitlab-postgrespsqlシークレット名
psql.portPostgreSQLサーバーポートを設定します。global.psql.portよりも優先されます。
puma.disableWorkerKillertruePumaワーカーメモリキラーを無効にします。
puma.workerMaxMemoryPumaワーカーキラーの最大メモリ(メガバイト単位)
puma.threads.min4Pumaスレッドの最小数
puma.threads.max4Pumaスレッドの最大数
puma.bindIp6falsePumaでIPv6アドレスをバインドします。現在、レート制限に関連する既知の問題のため、デフォルトではfalseです。
rack_attack.git_basic_auth{}詳細はGitLabドキュメントを参照してください。
redis.serviceNameredisRedisサービス名
global.registry.api.port5000レジストリポート
global.registry.api.protocolhttpレジストリプロトコル
global.registry.api.serviceNameregistryレジストリサービス名
global.registry.enabledtrueすべてのプロジェクトメニューにレジストリリンクを追加/削除します。
global.registry.tokenIssuergitlab-issuerレジストリトークン発行者
replicaCount1Webserviceレプリカ数
resources.requests.cpu300mWebserviceの最小CPU
resources.requests.memory1.5GWebserviceの最小メモリ
service.externalPort8080Webservice公開ポート
securityContext.fsGroup1000ポッドを開始するグループID
securityContext.runAsUser1000ポッドを開始するユーザーID
securityContext.fsGroupChangePolicyボリュームの所有権と権限を変更するためのポリシー(Kubernetes 1.23が必要)
securityContext.seccompProfile.typeRuntimeDefault使用するSeccompプロファイル
containerSecurityContextコンテナが開始される際のコンテナsecurityContextをオーバーライドします。
containerSecurityContext.runAsUser1000コンテナが開始される特定のセキュリティコンテキストユーザーIDを上書きすることができます。
containerSecurityContext.allowPrivilegeEscalationfalseGitalyコンテナのプロセスがその親プロセスよりも多くの権限を取得できるかどうかを制御します。
containerSecurityContext.runAsNonRoottrueGitalyコンテナが非rootユーザーで実行されるかどうかを制御します。
containerSecurityContext.capabilities.drop[ "ALL" ]GitalyコンテナからLinuxケーパビリティを削除します。
serviceAccount.automountServiceAccountTokenfalseデフォルトのServiceAccountアクセストークンをポッドにマウントするかどうかを示します。
serviceAccount.createfalseServiceAccountを作成する必要があるかどうかを示します。
serviceAccount.enabledfalseServiceAccountを使用するかどうかを示します。
serviceAccount.nameServiceAccountの名前。設定されていない場合、完全なチャート名が使用されます。
serviceLabels{}補足的なサービスラベル
service.internalPort8080Webservice内部ポート
service.typeClusterIPWebserviceサービスタイプ
service.workhorseExternalPort8181Workhorse公開ポート
service.workhorseInternalPort8181Workhorse内部ポート
service.loadBalancerIPLoadBalancerに割り当てるIPアドレス(クラウドプロバイダーがサポートしている場合)
service.loadBalancerSourceRangesLoadBalancerへのアクセスを許可するIP CIDRのリスト(サポートされている場合)。service.type = LoadBalancerに必要です。
shell.authToken.keysecretshellシークレット内のshellトークンへのキー
shell.authToken.secret{Release.Name}-gitlab-shell-secretShellトークンシークレット
shell.portnilGitLab UIによって生成されるSSH URLで使用するポート番号
shutdown.blackoutSeconds10シャットダウンを受信後、Webserviceの実行を継続する秒数。deployment.terminationGracePeriodSecondsより短くなければなりません。また、Workhorseヘルスチェックリスナーが有効になっている場合は、そのシャットダウン遅延を設定します。
tls.enabledfalseWebservice TLSを有効にします。
tls.secretName{Release.Name}-webservice-tlsWebservice TLSシークレット。secretNameKubernetes TLSシークレットを指す必要があります。
tolerations[]ポッド割り当て用のラベル。
trusted_proxies[]詳細はGitLabドキュメントを参照してください。
workhorse.logFormatjsonログ形式。有効な形式:jsonstructuredtext
workerProcesses2Webserviceワーカー数
workhorse.keywatchertrueWorkhorseをRedisにサブスクライブします。これは/api/*へのリクエストを処理するすべてのデプロイでrequiredですが、他のデプロイでは安全に無効にできます。
workhorse.shutdownTimeoutglobal.webservice.workerTimeout + 1(秒)すべてのウェブリクエストがWorkhorseからクリアされるのを待つ時間。例:1min65s
workhorse.adoptCfRayHeaderfalse着信Cf-Rayヘッダーが存在する場合、それを相関IDとして採用します。詳細はWorkhorseドキュメントを参照してください。
workhorse.trustedCIDRsForPropagation相関IDの伝播に信頼できるCIDRブロックのリスト。これが機能するには、workhorse.extraArgsでも-propagateCorrelationIDオプションを使用する必要があります。詳細はWorkhorseドキュメントを参照してください。
workhorse.trustedCIDRsForXForwardedForX-Forwarded-For HTTPヘッダーを介して実際のクライアントIPを解決するために使用できるCIDRブロックのリスト。これはworkhorse.trustedCIDRsForPropagationとともに使用されます。詳細はWorkhorseドキュメントを参照してください。
workhorse.metadata.zipReaderLimitByteszipリーダーを制限するオプションのバイト数。GitLab 16.9で導入されました。詳細はWorkhorseドキュメントを参照してください。
workhorse.containerSecurityContextコンテナが開始される際のコンテナsecurityContextをオーバーライドします。
workhorse.containerSecurityContext.runAsUser1000コンテナを開始するユーザーID
workhorse.containerSecurityContext.allowPrivilegeEscalationfalseコンテナのプロセスがその親プロセスよりも多くの権限を取得できるかどうかを制御します。
workhorse.containerSecurityContext.runAsNonRoottrueコンテナが非rootユーザーで実行されるかどうかを制御します。
workhorse.containerSecurityContext.capabilities.drop[ "ALL" ]GitalyコンテナからLinuxケーパビリティを削除します。
workhorse.livenessProbe.initialDelaySeconds20ライブネスプローブが開始される前の遅延
workhorse.livenessProbe.periodSeconds60ライブネスプローブを実行する頻度
workhorse.livenessProbe.timeoutSeconds30ライブネスプローブがタイムアウトするとき
workhorse.livenessProbe.successThreshold1ライブネスプローブが失敗した後に成功と見なされるための最小連続成功数
workhorse.livenessProbe.failureThreshold3ライブネスプローブが成功した後に失敗と見なされるための最小連続失敗数
workhorse.healthcheckListener.enabledfalseWorkhorseヘルスチェックリスナーを有効にし、デフォルトのPumaレディネスプローブを無効にします。レディネスヘルスステータスをより信頼性が高く、Flakyさが少なく検出できます。GitLab 18.5で導入されました。
workhorse.healthcheckListener.port8182ヘルスチェックリスナーに使用するポート番号。
workhorse.healthcheckListener.pumaControltruePumaレディネスエンドポイントの代わりにPumaコントロールアプリケーションをクエリする。
workhorse.healthcheckListener.checkInterval10sアップストリームPumaサーバーの連続したヘルスステータスチェック間の時間間隔。
workhorse.healthcheckListener.timeout5sPumaチェックリクエストのタイムアウト。
workhorse.healthcheckListener.maxConsecutiveFailures1Workhorseを準備ができていないとマークするまでの失敗回数。
workhorse.healthcheckListener.minSuccessfullProbes1Workhorseが準備完了と見なされるまでの成功プローブ数。
workhorse.healthcheckListener.railsSkipInterval0sリクエストが正常に処理された後、Pumaレディネスチェックを再開するまでの時間遅延。デフォルトでは無効になっています。
workhorse.loadShedding.enabledfalsePumaのリクエストバックログがしきい値を超えたときに503を返すようにロードシェディングを有効にします。
workhorse.loadShedding.backlogThreshold50ロードシェディングを開始するバックログしきい値。
workhorse.loadShedding.backlogHysteresis0.8非アクティブ化のヒステリシス係数(0.0~1.0)。バックログがしきい値 * ヒステリシスを下回ると、ロードシェディングは非アクティブ化されます。
workhorse.loadShedding.retryAfterSeconds0ロードシェディング時のレスポンス内のRetry-Afterヘッダー値(秒単位)。即時リトライには0を使用します(Kubernetesに推奨)。
workhorse.loadShedding.statusCode503ロードシェディング時に返すHTTPステータスコード。ロードシェディングを他の503エラーと区別するために、529のようなカスタムコードを使用します。
workhorse.loadShedding.strategymax実効バックログを計算する戦略:「max」(デフォルト)または「sum」。
workhorse.loadShedding.checkInterval1sPumaのバックログメトリクスをサンプリングする頻度。ヘルスチェック間隔とは独立しています。
workhorse.loadShedding.timeout5sコントロールサーバーリクエストのタイムアウト。
workhorse.monitoring.exporter.enabledfalseWorkhorseがPrometheusメトリクスを公開できるようにします。これはworkhorse.metrics.enabledによってオーバーライドされます。
workhorse.monitoring.exporter.port9229Workhorse Prometheusメトリクスに使用するポート番号
workhorse.monitoring.exporter.tls.enabledfalsetrueに設定すると、メトリクスエンドポイントでTLSを有効にします。WorkhorseでTLSが有効になっている必要があります。
workhorse.metrics.enabledtrueWorkhorseメトリクスエンドポイントをスクレイプ可能にするかどうか。
workhorse.metrics.port8083Workhorseメトリクスエンドポイントポート
workhorse.metrics.path/metricsWorkhorseメトリクスエンドポイントパス
workhorse.metrics.serviceMonitor.enabledfalsePrometheus OperatorがWorkhorseメトリクスのスクレイプを管理できるようにServiceMonitorを作成するかどうか。
workhorse.metrics.serviceMonitor.additionalLabels{}Workhorse ServiceMonitorに追加する追加ラベル
workhorse.metrics.serviceMonitor.endpointConfig{}Workhorse ServiceMonitorの追加エンドポイント設定
workhorse.readinessProbe.initialDelaySeconds0レディネスプローブが開始される前の遅延
workhorse.readinessProbe.periodSeconds10レディネスプローブを実行する頻度
workhorse.readinessProbe.timeoutSeconds2レディネスプローブがタイムアウトするとき
workhorse.readinessProbe.successThreshold1レディネスプローブが失敗した後に成功と見なされるための最小連続成功数
workhorse.readinessProbe.failureThreshold3レディネスプローブが成功した後に失敗と見なされるための最小連続失敗数
workhorse.imageScaler.maxProcs2同時に実行できるイメージスケールプロセスの最大数
workhorse.imageScaler.maxFileSizeBytes250000スケーラーによって処理される画像の最大ファイルサイズ(バイト単位)
workhorse.tls.verifytruetrueに設定すると、NGINX IngressはWorkhorseのTLS証明書を強制的に検証します。カスタム認証局の場合、workhorse.tls.caSecretNameも設定する必要があります。自己署名証明書の場合はfalseに設定する必要があります。
workhorse.tls.secretName{Release.Name}-workhorse-tlsTLSキーと証明書のペアを含むTLSシークレットの名前。これはWorkhorse TLSが有効な場合に必要です。
workhorse.tls.caSecretNameCA証明書を含むシークレットの名前。これは等しくない TLSシークレットであり、ca.crtキーのみを持つ必要があります。これはNGINXによるTLS検証に使用されます。
workhorse.circuitBreaker.enabledfalseサーキットブレーカーが有効になっているかどうか
workhorse.circuitBreaker.timeout60オープン時にサーキットブレーカーをハーフオープンに移行する期間(秒)
workhorse.circuitBreaker.interval180クローズ時にサーキットブレーカーが連続失敗をクリアするまでの期間(秒)
workhorse.circuitBreaker.maxRequests1ハーフオープン時にサーキットブレーカーをオープンにするための失敗リクエスト数
workhorse.circuitBreaker.consecutiveFailures5クローズ時にサーキットブレーカーをオープンにするための連続失敗リクエスト数
webServerpumaリクエスト処理に使用されるウェブサーバー(Webservice/Puma)を選択します。
priorityClassName""ポッドのpriorityClassNameを設定できます。これは立ち退きの場合にポッドの優先順位を制御するために使用されます。
antiAffinity""チャートのグローバル値からantiAffinity値を上書きすることができます。デフォルトはグローバルから読み取られ、softまたはhardに設定できます。

チャート設定例

extraEnv

extraEnvを使用すると、ポッド内のすべてのコンテナで追加の環境変数を公開できます。

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

extraEnvFrom

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

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
deployments:
  default:
    extraEnvFrom:
      CONFIG_STRING:
        configMapKeyRef:
          name: useful-config
          key: some-string
          # optional: boolean

image.pullSecrets

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

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

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

image:
  repository: my.webservice.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を使用すると、汚染されたワーカーノードにポッドをスケジュールできます。

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

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

annotations

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

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

strategy

deployment.strategyを使用すると、デプロイの更新戦略を変更できます。デプロイが更新されたときにポッドがどのように再作成されるかを定義します。指定しない場合、クラスターのデフォルトが使用されます。たとえば、ローリングアップデート開始時に追加のポッドを作成せず、最大利用不可ポッドを50%に変更したい場合:

deployment:
  strategy:
    rollingUpdate:
      maxSurge: 0
      maxUnavailable: 50%

更新戦略のタイプをRecreateに変更することもできますが、これは新しいポッドをスケジュールする前にすべてのポッドを強制終了するため、新しいポッドが起動するまでウェブUIが利用できなくなることに注意してください。この場合、rollingUpdateを定義する必要はなく、typeのみで構いません:

deployment:
  strategy:
    type: Recreate

詳細については、Kubernetesドキュメントを参照してください。

TLS

Webserviceポッドは2つのコンテナを実行します:

  • gitlab-workhorse
  • webservice

gitlab-workhorse

Workhorseはウェブおよびメトリクスエンドポイントの両方でTLSをサポートします。これにより、Workhorseと他のコンポーネント、特にnginx-ingressgitlab-shell、およびgitaly間の通信が保護されます。TLS証明書には、Workhorseサービスのホスト名(例:RELEASE-webservice-default.default.svc)をCommon Name(CN)またはSubject Alternate Name(SAN)に含める必要があります。

Webserviceの複数のデプロイが存在する可能性があるため、異なるサービス名に対応するTLS証明書を準備する必要があることに注意してください。これは複数のSANまたはワイルドカード証明書によって実現できます。

TLS証明書が生成されたら、それ用のKubernetes TLSシークレットを作成します。また、TLS証明書のCA証明書のみを含む別のシークレットをca.crtキーで作成する必要があります。

global.workhorse.tls.enabledtrueに設定することで、gitlab-workhorseコンテナでTLSを有効にできます。カスタムシークレット名をgitlab.webservice.workhorse.tls.secretNameおよびglobal.certificates.customCAsにそれぞれ渡すことができます。

gitlab.webservice.workhorse.tls.verifytrue(デフォルト)の場合、CA証明書のシークレット名をgitlab.webservice.workhorse.tls.caSecretNameに渡す必要もあります。これは自己署名証明書およびカスタム認証局に必要です。このシークレットは、NGINXがWorkhorseのTLS証明書を検証するために使用します。

global:
  workhorse:
    tls:
      enabled: true
  certificates:
    customCAs:
      - secret: gitlab-workhorse-ca
gitlab:
  webservice:
    workhorse:
      tls:
        verify: true
        # secretName: gitlab-workhorse-tls
        caSecretName: gitlab-workhorse-ca
      monitoring:
        exporter:
          enabled: true
          tls:
            enabled: true

gitlab-workhorseコンテナのメトリクスエンドポイントにおけるTLSはglobal.workhorse.tls.enabledから継承されます。メトリクスエンドポイントにおけるTLSは、WorkhorseでTLSが有効な場合にのみ利用可能であることに注意してください。このメトリクスリスナーは、gitlab.webservice.workhorse.tls.secretNameで指定されたものと同じTLS証明書を使用します。

メトリクスエンドポイントに使用されるTLS証明書は、特に含まれるPrometheus Helmチャートを使用する場合、含まれるSubject Alternative Names(SANs)について追加の考慮事項を必要とする場合があります。詳細については、Prometheusをスクレイプ可能なTLS有効エンドポイントに設定するを参照してください。

webservice

TLSを有効にする主なユースケースは、PrometheusメトリクスをスクレイプするためのHTTPS経由の暗号化を提供することです。

PrometheusがHTTPSを使用して/metrics/エンドポイントをスクレイプするには、証明書のCommonName属性またはSubjectAlternativeNameエントリに追加の設定が必要です。これらの要件については、Prometheusをスクレイプ可能なTLS有効エンドポイントに設定するを参照してください。

gitlab.webservice.tls.enabled設定により、webserviceコンテナでTLSを有効にできます:

gitlab:
  webservice:
    tls:
      enabled: true
      # secretName: gitlab-webservice-tls

secretNameKubernetes TLSシークレットを指す必要があります。例えば、ローカル証明書とキーを持つTLSシークレットを作成するには:

kubectl create secret tls <secret name> --cert=path/to/puma.crt --key=path/to/puma.key

このチャートのCommunity Editionを使用する

デフォルトの場合、HelmチャートではGitLabのEnterprise Editionを使用します。必要であれば、代わりにCommunity Editionを使用できます。両者の違いについて詳しくはこちら。

Community Editionを使用するには、image.repositoryregistry.gitlab.com/gitlab-org/build/cng/gitlab-webservice-ceに、workhorse.imageregistry.gitlab.com/gitlab-org/build/cng/gitlab-workhorse-ceに設定します。

グローバル設定

いくつかの一般的なグローバル設定をチャート間で共有しています。共通の設定オプション(GitLabやレジストリのホスト名など)については、Globalsドキュメントを参照してください。

デプロイ設定

このチャートは、複数のデプロイオブジェクトとそれに関連するリソースを作成する機能を持っています。この機能により、GitLabアプリケーションへのリクエストは、パスベースのルーティングを使用して複数のポッドセット間で分散されます。

このマップのキー(この例ではdefault)は、それぞれの「名前」です。defaultには、デプロイ、サービス、HorizontalPodAutoscaler、PodDisruptionBudget、およびオプションでRELEASE-webservice-defaultで作成されたIngressが設定されます。

提供されていないプロパティは、gitlab-webserviceチャートのデフォルトから継承されます。

deployments:
  default:
    ingress:
      path: # Does not inherit or default. Leave blank to disable Ingress.
      pathType: Prefix
      provider: nginx
      annotations:
        # inherits `ingress.anntoations`
      proxyConnectTimeout: # inherits `ingress.proxyConnectTimeout`
      proxyReadTimeout:    # inherits `ingress.proxyReadTimeout`
      proxyBodySize:       # inherits `ingress.proxyBodySize`
    deployment:
      annotations: # map
      labels: # map
      # inherits `deployment`
    pod:
      labels: # additional labels to .podLabels
      annotations: # map
        # inherit from .Values.annotations
    service:
      labels: # additional labels to .serviceLabels
      annotations: # additional annotations to .service.annotations
        # inherits `service.annotations`
    hpa:
      minReplicas: # defaults to .minReplicas
      maxReplicas: # defaults to .maxReplicas
      metrics: # optional replacement of HPA metrics definition
      # inherits `hpa`
    pdb:
      maxUnavailable: # inherits `maxUnavailable`
    resources: # `resources` for `webservice` container
      # inherits `resources`
    workhorse: # map
      # inherits `workhorse`
    extraEnv: #
      # inherits `extraEnv`
    extraEnvFrom: #
      # inherits `extraEnvFrom`
    puma: # map
      # inherits `puma`
    workerProcesses: # inherits `workerProcesses`
    shutdown:
      # inherits `shutdown`
    nodeSelector: # map
      # inherits `nodeSelector`
    tolerations: # array
      # inherits `tolerations`
    priorityClassName: # inherits `priorityClassName`

デプロイIngress

deploymentsエントリは、チャート全体のIngress設定を継承します。ここで提示される値は、そちらで提供される値をオーバーライドします。pathを除き、すべての設定は同じです。

webservice:
  deployments:
    default:
      ingress:
        path: /
    api:
      ingress:
        path: /api

pathプロパティはIngressのpathプロパティに直接入力され、各サービスに送信されるURIパスを制御できます。上記の例では、defaultがキャッチオールパスとして機能し、api/api以下のすべてのトラフィックを受信しました。

pathを空に設定することで、特定のデプロイに関連付けられたIngressリソースが作成されないように無効にできます。以下を参照してください。internal-apiは外部トラフィックを受信しません。

webservice:
  deployments:
    default:
      ingress:
        path: /
    api:
      ingress:
        path: /api
    internal-api:
      ingress:
        path:

Ingress設定

名前デフォルト説明
ingress.apiVersion文字列apiVersionフィールドで使用する値。
ingress.annotationsマップ下記を参照これらのアノテーションはすべてのIngressに使用されます。例: ingress.annotations."nginx\.ingress\.kubernetes\.io/enable-access-log"=true
ingress.configureCertmanagerブール値Ingressアノテーションcert-manager.io/issueracme.cert-manager.io/http01-edit-in-placeを切り替えます。詳細については、GitLab PagesのTLS要件を参照してください。
ingress.enabledブール値falseサポートするサービス用のIngressオブジェクトを作成するかどうかを制御する設定。falseの場合、global.ingress.enabled設定値が使用されます。
ingress.proxyBodySize文字列512m下記を参照
ingress.serviceUpstreamブール値true下記を参照
ingress.tls.enabledブール値truefalseに設定すると、GitLab WebserviceのTLSが無効になります。これは主に、IngressレベルでTLS終端を使用できない場合(Ingressコントローラーの前にTLS終端プロキシがある場合など)に有用です。
ingress.tls.secretName文字列(空)GitLab URLの有効な証明書とキーを含むKubernetes TLSシークレットの名前。設定されていない場合、代わりにglobal.ingress.tls.secretName値が使用されます。
ingress.tls.smardcardSecretName文字列(空)有効な場合、GitLabスマートカードURLの有効な証明書とキーを含むKubernetes TLSシークレットの名前。設定されていない場合、代わりにglobal.ingress.tls.secretName値が使用されます。
ingress.tls.useGeoClassブール値falseIngressClassをGeo Ingressクラス(global.geo.ingressClass)でオーバーライドします。プライマリGeoサイトに必要です。

アノテーション

annotationsはWebservice Ingressにアノテーションを設定するために使用されます。

serviceUpstream

これにより、NGINXにサービス自体をアップストリームとして直接コンタクトさせることで、Webserviceポッドへのトラフィックをより均等に分散するのに役立ちます。詳細については、NGINXドキュメントを参照してください。

これをオーバーライドするには、以下を設定します:

gitlab:
  webservice:
    ingress:
      serviceUpstream: "false"

proxyBodySize

proxyBodySizeは、NGINXプロキシの最大ボディサイズを設定するために使用されます。これは、デフォルトよりも大きなDockerイメージを許可するために一般的に必要です。これはLinuxパッケージインストールにおけるnginx['client_max_body_size']設定と同等です。代替オプションとして、以下の2つのパラメータのいずれかでもボディサイズを設定できます:

  • gitlab.webservice.ingress.annotations."nginx\.ingress\.kubernetes\.io/proxy-body-size"
  • global.ingress.annotations."nginx\.ingress\.kubernetes\.io/proxy-body-size"

追加Ingress

extraIngress.enabled=trueを設定することで、追加のIngressをデプロイできます。このIngressは、デフォルトのIngressに-extraサフィックスを付けて命名され、デフォルトのIngressと同じ設定をサポートします。

ゲートウェイAPI

GitLabチャートがGateway API経由で公開されるように設定されている場合、各デプロイはwebserviceチャートのHTTPRouteへのルールとして追加されます。

.rules=[]をデプロイに設定することで、特定のデプロイがHTTPRouteにルールを持つことを無効にできます。

webservice:
  deployments:
    default:
      gatewayRoute:
        rules:
        - matches:
          - path:
              type: PathPrefix
              value: /
            timeouts:
              request: "20s"
              backendRequest: "20s"
    api:
      gatewayRoute:
        rules:
        - matches:
          - path:
              type: PathPrefix
              value: /api
    internal-api:
      gatewayRoute:
        rules: []

リソース

メモリリクエスト/制限

各ポッドはworkerProcessesに等しい数のワーカーを起動し、それぞれが一定量のメモリを使用します。推奨事項:

  • ワーカーあたり最小1.25GB(requests.memory
  • ワーカーあたり最大1.5GB、プライマリ用に1GB追加(limits.memory

必要なリソースは、ユーザーによって生成されるワークロードに依存し、将来、GitLabアプリケーションの変更やアップグレードに基づいて変更される可能性があることに注意してください。

デフォルト:

workerProcesses: 2
resources:
  requests:
    memory: 2.5G # = 2 * 1.25G
# limits:
#   memory: 4G   # = (2 * 1.5G) + 950M

4つのワーカーが設定されている場合:

workerProcesses: 4
resources:
  requests:
    memory: 5G   # = 4 * 1.25G
# limits:
#   memory: 7G   # = (4 * 1.5G) + 950M

外部サービス

Redis

Redisドキュメントはグローバルページに統合されました。最新のRedis設定オプションについては、このページを参照してください。

PostgreSQL

PostgreSQLドキュメントはグローバルページに統合されました。最新のPostgreSQL設定オプションについては、このページを参照してください。

Webserviceデプロイ内のdependencies initContainerは、スクリプトを実行して以下をチェックします:

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

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

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

Gitaly

global:
  gitaly:
    ## These settings are used by Gitaly clients: GitLab Rails, GitLab Shell, Workhorse.
    client:
      maxAttempts: 4
      maxBackoff: '1.4s'
名前デフォルト説明
maxAttempts整数4失敗した場合に、Gitalyクライアントがクライアントにエラーを返す前に、リクエストを再送信しようとする最大回数。
maxBackoff文字列'1.4s'Gitalyクライアントがクライアントにエラーを返す前に、リクエストを再試行する最大時間(秒単位)。

その他のGitaly設定は、グローバル設定によって設定されます。Gitaly設定ドキュメントを参照してください。

MinIO

minio:
  serviceName: 'minio-svc'
  port: 9000
名前デフォルト説明
port整数9000MinIO Serviceに到達するためのポート番号。
serviceName文字列minio-svcMinIOポッドによって公開されるServiceの名前。

レジストリ

registry:
  host: registry.example.com
  port: 443
  api:
    protocol: http
    host: registry.example.com
    serviceName: registry
    port: 5000
  tokenIssuer: gitlab-issuer
  certificate:
    secret: gitlab-registry
    key: registry-auth.key
名前デフォルト説明
api.host文字列使用するレジストリサーバーのホスト名。api.serviceNameの代わりとして省略できます。
api.port整数5000レジストリAPIに接続するためのポート。
api.protocol文字列WebserviceがレジストリAPIに到達するために使用すべきプロトコル。
api.serviceName文字列registryレジストリサーバーを操作しているserviceの名前。これが存在し、api.hostが存在しない場合、チャートはapi.host値の代わりにサービスのホスト名(および現在の.Release.Name)をテンプレート処理します。これは、レジストリをGitLabチャート全体の一部として使用する場合に便利です。
certificate.key文字列レジストリコンテナにauth.token.rootcertbundleとして提供される証明書バンドルを格納するSecret内のkeyの名前。
certificate.secret文字列GitLabインスタンスによって作成されたトークンを検証するために使用される証明書バンドルを格納するKubernetes TLSシークレットの名前。
host文字列GitLab UIでユーザーにDockerコマンドを提供するために使用する外部ホスト名。registry.hostnameテンプレートで設定された値にフォールバックします。global.hostsで設定された値に基づいてレジストリホスト名を決定します。詳細については、Globalsドキュメントを参照してください。
port整数ホスト名で使用される外部ポート。ポート80または443を使用すると、URLはhttp/httpsで形成されます。他のポートはすべてhttpを使用し、ホスト名の最後にポートを追加します。例:http://registry.example.com:8443
tokenIssuer文字列gitlab-issuer認証トークン発行者の名前。これは、送信時にトークンに組み込まれるため、レジストリの設定で使用されている名前と一致する必要があります。gitlab-issuerのデフォルトは、レジストリチャートで私たちが使用するデフォルトと同じです。

チャート設定

以下の値はWebserviceポッドを設定するために使用されます。

名前デフォルト説明
workerProcesses整数2ポッドごとに実行するWebserviceワーカーの数。GitLabが正しく機能するには、クラスター内に少なくとも2のワーカーが利用可能である必要があります。workerProcessesを増やすと、ワーカーあたり約400MBのメモリが必要になるため、ポッドresourcesをそれに応じて更新する必要があることに注意してください。
minReplicas整数2最小レプリカ数
maxReplicas整数10最大レプリカ数
maxUnavailable整数1利用不可となるポッドの最大数の制限

メトリクス

メトリクスはmetrics.enabledの値で有効にでき、GitLabモニタリングexporterを使用してメトリクスポートを公開します。ポッドにはPrometheusアノテーションが与えられるか、metrics.serviceMonitor.enabledtrueの場合はPrometheus Operator ServiceMonitorが作成されます。メトリクスは代わりに/-/metricsエンドポイントからスクレイプできますが、これには管理者エリアでGitLab Prometheusメトリクスが有効になっている必要があります。GitLab Workhorseメトリクスもworkhorse.metrics.enabledを介して公開できますが、これらはPrometheusアノテーションを使用して収集できないため、workhorse.metrics.serviceMonitor.enabledtrueであるか、または外部Prometheus設定が必要です。

GitLab Shell

GitLab Shellは、Webserviceとの通信で認証トークンを使用します。共有シークレットを使用して、トークンをGitLab ShellとWebserviceで共有します。

shell:
  authToken:
    secret: gitlab-shell-secret
    key: secret
  port:
名前デフォルト説明
authToken.key文字列authTokenを含むシークレット(下記)内のキーの名前を定義します。
authToken.secret文字列プルするKubernetes Secretの名前を定義します。
port整数22GitLab UI内でSSH URLを生成する際に使用するポート番号。global.shell.portによって制御されます。

ウェブサーバーオプション

現在のバージョンのチャートはPumaウェブサーバーをサポートしています。

Puma固有のオプション:

名前デフォルト説明
puma.workerMaxMemory整数Pumaワーカーキラーの最大メモリ(メガバイト単位)
puma.threads.min整数4Pumaスレッドの最小数
puma.threads.max整数4Pumaスレッドの最大数

Workhorseロードシェディング

ロードシェディングは、リクエストバックログが設定されたしきい値を超えたときに設定されたHTTPステータスコードを返すことでPumaが過負荷になるのを防ぎ、リバースプロキシが他のインスタンスへのリクエストを再試行できるようにします。

ロードシェディングを有効にするには、loadSheddingパラメータを設定します:

gitlab:
  webservice:
    workhorse:
      loadShedding:
        enabled: true
        backlogThreshold: 50
        retryAfterSeconds: 0
        statusCode: 503
        strategy: max
  • backlogThresholdは、ロードシェディングをトリガーする滞留リクエストの数を指定します。
  • retryAfterSecondsは、レスポンスのRetry-Afterヘッダーの値を設定します。
  • statusCodeは、ロードシェディング時に返すHTTPステータスコードを設定します(デフォルト:503)。データベースのタイムアウトやGitalyの問題によって引き起こされる他の503エラーからロードシェディングを区別するために、529のようなカスタムコードを使用します。
  • strategyは、実効バックログがどのように計算されるかを決定します:
    • max: すべてのPumaワーカーにおける最大バックログを使用します(デフォルト)。
    • sum: すべてのPumaワーカーにおけるすべてのバックログの合計を使用します。

プロキシ設定

ロードシェディングを効果的に機能させるには、リバースプロキシが503レスポンスを受信したときにリクエストを再試行するように設定されている必要があります。これにより、リクエストが正常なインスタンスに分散されることが保証されます。

NGINXの例として、Ingressに次のアノテーションを設定します:

ingress:
  annotations:
    nginx.ingress.kubernetes.io/proxy-next-upstream: "http_503"
    nginx.ingress.kubernetes.io/proxy-next-upstream-tries: "3"
    nginx.ingress.kubernetes.io/proxy-next-upstream-timeout: "10s"

これらの設定はNGINXに以下を指示します:

  • 503レスポンスで再試行します(ロードシェディングが生成します)。
  • 諦めるまでに3回まで試行します。
  • 再試行のために最大10秒待ちます。

ロードシェディングが生成する特定のシグナルである503レスポンスでのみ再試行すべきです。他のステータスコード(504など)やエラー条件での再試行は避けてください。これらは、すべてのバックエンドで失敗する可能性のあるリクエストを再試行することで、停止中の負荷を増幅させる可能性があります。

他のリバースプロキシについては、同等の再試行設定についてそれぞれのドキュメントを参照してください。重要なキーは、503レスポンスが他のバックエンドインスタンスへの再試行をトリガーすることを保証することです。

このnetworkpolicyを設定する

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

名前デフォルト説明
enabledブール値falseこの設定によりNetworkPolicyが有効になります。
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と以下の例を参照してください。

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

webserviceサービスは、有効な場合はPrometheus exporter用のIngress接続、NGINX Ingressからのトラフィック、およびいくつかのGitLabポッドを必要とします。通常、さまざまな場所へのエグレス接続が必要です。この例では、以下のネットワークポリシーを追加します:

  • Ingressリクエストを許可します:
    • ポッドgitalygitlab-pagesgitlab-shellkasmailroom、およびnginx-ingressからポート8181
    • Prometheusポッドからポート808080839229
  • エグレスリクエストを許可します:
    • gitalyポッドへのポート8075
    • kasポッドへのポート8153
    • kube-dnsへのポート53
    • registryポッドへのポート5000
    • 外部データベース172.16.0.10/32へのポート5432
    • 外部Redis 172.16.0.11/32へのポート6379
    • インターネット0.0.0.0/0へのポート443
    • AWS VPCエンドポイント(S3またはSTS用)などのエンドポイント172.16.1.0/24へのポート443

提供されている例は単なる例であり、完全ではない可能性があります。Webserviceは、外部オブジェクトストレージ上のイメージのために、パブリックインターネットへの送信接続を必要とします。この例は、kube-dnskube-systemネームスペースにデプロイされ、prometheusmonitoringネームスペースにデプロイされ、nginx-ingressnginx-ingressネームスペースにデプロイされたという前提に基づいています。

networkpolicy:
  enabled: true
  ingress:
    enabled: true
    rules:
      - from:
          - podSelector:
              matchLabels:
                app: gitaly
        ports:
          - port: 8181
      - from:
          - podSelector:
              matchLabels:
                app: gitlab-pages
        ports:
          - port: 8181
      - from:
          - podSelector:
              matchLabels:
                app: gitlab-shell
        ports:
          - port: 8181
      - from:
          - podSelector:
              matchLabels:
                app: kas
        ports:
          - port: 8181
      - from:
          - podSelector:
              matchLabels:
                app: mailroom
        ports:
          - port: 8181
      - from:
          - namespaceSelector:
              matchLabels:
                kubernetes.io/metadata.name: nginx-ingress
            podSelector:
              matchLabels:
                app: nginx-ingress
                component: controller
        ports:
          - port: 8181
      - from:
          - namespaceSelector:
              matchLabels:
                kubernetes.io/metadata.name: monitoring
            podSelector:
              matchLabels:
                app: prometheus
                component: server
                release: gitlab
        ports:
          - port: 9229
          - port: 8080
          - port: 8083
  egress:
    enabled: true
    rules:
      - to:
          - podSelector:
              matchLabels:
                app: gitaly
        ports:
          - port: 8075
      - to:
          - podSelector:
              matchLabels:
                app: kas
        ports:
          - port: 8153
      - to:
          - ipBlock:
              cidr: 0.0.0.0/0
              except:
                - 10.0.0.0/8
        ports:
          - port: 443
      - to:
          - ipBlock:
              cidr: 172.16.0.10/32
        ports:
          - port: 5432
      - to:
          - ipBlock:
              cidr: 172.16.0.11/32
        ports:
          - port: 6379
      - to:
          - namespaceSelector:
              matchLabels:
                kubernetes.io/metadata.name: kube-system
            podSelector:
              matchLabels:
                k8s-app: kube-dns
        ports:
          - port: 53
            protocol: UDP

LoadBalancerサービス

service.typeLoadBalancerに設定されている場合、オプションでservice.loadBalancerIPを指定して、ユーザー指定のIPを持つLoadBalancerを作成できます(クラウドプロバイダーがサポートしている場合)。

service.typeLoadBalancerに設定されている場合、LoadBalancerにアクセスできるCIDR範囲を制限するためにservice.loadBalancerSourceRangesも設定する必要があります(クラウドプロバイダーがサポートしている場合)。これは、メトリクスポートが公開されている問題により現在必要です。

LoadBalancerサービスタイプに関する追加情報は、Kubernetesドキュメントで確認できます。

service:
  type: LoadBalancer
  loadBalancerIP: 1.2.3.4
  loadBalancerSourceRanges:
  - 10.0.0.0/8

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整数minReplicasKEDAがリソースをスケールダウンする最小レプリカ数。
maxReplicaCount整数maxReplicasKEDAがリソースをスケールアップする最大レプリカ数。
fallbackマップKEDAフォールバック設定。ドキュメントを参照してください。
hpaName文字列keda-hpa-{scaled-object-name}KEDAが作成するHPAリソースの名前。
restoreToOriginalReplicaCountブール値ScaledObjectが削除された後、ターゲットリソースが元のレプリカ数にスケールバックされるべきかどうかを指定します。
behaviorマップhpa.behaviorスケールアップおよびスケールダウン動作の仕様。
triggers配列ターゲットリソースのスケールをアクティブ化するトリガーのリスト。hpa.cpuhpa.memoryから計算されたトリガーにデフォルトで設定されます。