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

GitLab-Spamcheckチャートの使用

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

spamcheckサブチャートは、元々GitLab.comでのスパムの増加に対抗するためにGitLabによって開発され、後にGitLab自己管理で使用するために公開されたアンチスパムエンジンであるSpamcheckのデプロイを提供します。

要件

このチャートは、GitLab APIへのアクセスに依存します。

設定

Spamcheckを有効にする

spamcheckは、デフォルトで無効になっています。GitLabインスタンスで有効にするには、Helmプロパティglobal.spamcheck.enabledtrueに設定します。以下に例を示します:

helm upgrade --force --install gitlab . \
--set global.hosts.domain='your.domain.com' \
--set global.hosts.externalIP=XYZ.XYZ.XYZ.XYZ \
--set certmanager-issuer.email='me@example.com' \
--set global.spamcheck.enabled=true

Spamcheckを使用するようにGitLabを設定する

  1. 左側のサイドバーの下部で、管理者エリアを選択します。
  2. 左側のサイドバーの下部にある設定 > レポートを選択します。
  3. スパムとアンチボット対策を展開します。
  4. スパムチェック設定を更新します:
    1. 「外部APIエンドポイント経由でスパムチェックを有効にする」チェックボックスをオンにします。
    2. 外部スパムチェックエンドポイントのURLには、grpc://gitlab-spamcheck.default.svc:8001を使用します。defaultは、GitLabがデプロイされているKubernetesネームスペースに置き換えられます。
    3. 「スパムチェックAPIキー」は空白のままにします。
  5. 変更を保存を選択します。

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

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

パラメータデフォルト説明
affinity{}ポッドの割り当てに対するアフィニティールール
annotations{}ポッド注釈
common.labels{}このチャートによって作成されたすべてのオブジェクトに適用される補足的なラベル。
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{}デプロイで使用される更新仕様を設定できます。指定されていない場合、クラスタリングのデフォルトが使用されます。
hpa.behavior{scaleDown: {stabilizationWindowSeconds: 300 }}動作には、スケールアップおよびダウンスケール動作の仕様が含まれています(autoscaling/v2beta2以降が必要です)。
hpa.customMetrics[]カスタムメトリクスには、目的のレプリカ数を計算するために使用する仕様が含まれています(targetAverageUtilizationで設定された平均CPU使用率のデフォルトの使用をオーバーライドします)。
hpa.cpu.targetTypeAverageValueオートスケールCPUターゲットタイプを設定します。UtilizationまたはAverageValueのいずれかである必要があります
hpa.cpu.targetAverageValue100mオートスケールCPUターゲット値を設定します
hpa.cpu.targetAverageUtilizationオートスケールCPUターゲット使用率を設定します
hpa.memory.targetTypeオートスケールメモリターゲットタイプを設定します。UtilizationまたはAverageValueのいずれかである必要があります
hpa.memory.targetAverageValueオートスケールメモリターゲット値を設定します
hpa.memory.targetAverageUtilizationオートスケールメモリターゲット使用率を設定します
hpa.targetAverageValue非推奨 オートスケールCPUターゲット値を設定します
image.registrySpamcheckイメージレジストリ
image.repositoryregistry.gitlab.com/gitlab-com/gl-security/engineering-and-research/automation-team/spam/spamcheckSpamcheckイメージリポジトリ
image.tagSpamcheckイメージタグ
image.digestSpamcheckイメージダイジェスト
keda.enabledfalseHorizontalPodAutoscalersの代わりにKEDA ScaledObjectsを使用します
keda.pollingInterval30各トリガーをチェックする間隔
keda.cooldownPeriod300リソースを0にスケールバックする前に、最後のトリガーがアクティブをレポートしてから待機する期間
keda.minReplicaCounthpa.minReplicasレプリカの最小数。KEDAはリソースをそれ以下にスケールダウンします。
keda.maxReplicaCounthpa.maxReplicasレプリカの最大数。KEDAはリソースをそれ以上にスケールアップします。
keda.fallbackKEDAフォールバック設定については、ドキュメントを参照してください
keda.hpaNamekeda-hpa-{scaled-object-name}KEDAが作成するHPAリソースの名前。
keda.restoreToOriginalReplicaCountScaledObjectが削除された後、ターゲットリソースを元のレプリカ数にスケールバックするかどうかを指定します
keda.behaviorhpa.behaviorスケールアップおよびスケールダウン動作の仕様。
keda.triggersターゲットリソースのスケールをアクティブ化するトリガーのリスト。hpa.cpuおよびhpa.memoryから計算されたトリガーがデフォルトです。
listenAddr[::]内部リッスンアドレス。
logging.levelinfoログレベル
maxReplicas10HPA maxReplicas
maxUnavailable1HPA maxUnavailable
minReplicas2HPA maxReplicas
podLabels{}補足的なポッドラベル。セレクターには使用されません。
resources.requests.cpu100mSpamcheckの最小CPU
resources.requests.memory100MSpamcheckの最小メモリ
securityContext.fsGroup1000ポッドを開始するグループID
securityContext.runAsUser1000ポッドを開始するユーザーID
securityContext.fsGroupChangePolicyボリュームの所有権と権限を変更するためのポリシー(Kubernetes 1.23が必要です)
serviceLabels{}補足的なサービスラベル
service.externalPort8001Spamcheckの外部ポート
service.internalPort8001Spamcheckの内部ポート
service.typeClusterIPSpamcheckサービスタイプ
serviceAccount.automountServiceAccountTokenfalseデフォルトのServiceAccountアクセストークンをポッドにマウントするかどうかを示します
serviceAccount.createfalseServiceAccountを作成するかどうかを示します
serviceAccount.enabledfalseServiceAccountを使用するかどうかを示します
tolerations[]ポッド割り当てのトレランスラベル
extraEnvFrom{}公開する他のデータソースからの追加の環境変数のリスト
priorityClassNameポッドに割り当てられる優先度クラス

KEDAの設定

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

ほとんどの設定は、該当する場合、hpaセクションで設定された値にデフォルト設定されます。

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

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

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

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

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

チャート設定の例

serviceAccount

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

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

トレランス

tolerationsを使用すると、汚染されたワーカーノードでポッドをスケジュールできます

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

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

affinity

詳細については、affinityを参照してください。

annotations

annotationsを使用すると、Spamcheckポッドに注釈を追加できます。例:

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

リソース

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

例:

resources:
  requests:
    memory: 100m
    cpu: 100M

活性プローブ/準備プローブ

deployment.livenessProbeおよびdeployment.readinessProbeは、コンテナが破損状態にある場合など、特定のシナリオでSpamcheckポッドの終了を制御するのに役立つメカニズムを提供します。

例:

deployment:
  livenessProbe:
    initialDelaySeconds: 10
    periodSeconds: 20
    timeoutSeconds: 3
    successThreshold: 1
    failureThreshold: 10
  readinessProbe:
    initialDelaySeconds: 10
    periodSeconds: 5
    timeoutSeconds: 2
    successThreshold: 1
    failureThreshold: 3

この設定に関する追加の詳細については、公式のKubernetesドキュメントを参照してください。