GitLab-Spamcheckチャートの使い方

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

要件

このChartは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

GitLabでスパムチェックを使う設定

  1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
  2. Admin Areaを選択します。
  3. 設定 > レポートを選択します。
  4. スパムとボット対策を展開します。
  5. スパムチェックの設定を更新します:
    1. 外部APIエンドポイント経由のスパムチェックを有効にする」チェックボックスにチェックを入れてください。
    2. 外部スパムチェックエンドポイントのURLはgrpc://gitlab-spamcheck.default.svc:8001 を使用します。default は GitLab がデプロイされている Kubernetes ネームスペースに置き換えてください。
    3. Spam Check API key」は空欄のままにしてください。
  6. 変更を保存を選択します。

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

以下の表は、--set フラグを使用してhelm install コマンドに提供できるすべての可能な Chart 設定です。

パラメータデフォルト説明
annotations{}ポッド注釈
common.labels{}このChartで作成されたすべてのオブジェクトに適用される補助ラベル。
deployment.livenessProbe.initialDelaySeconds20Liveness Probeが開始されるまでの遅延時間
deployment.livenessProbe.periodSeconds60Livenessプローブの実行頻度
deployment.livenessProbe.timeoutSeconds30Livenessプローブがタイムアウトした場合
deployment.livenessProbe.successThreshold1一度失敗したプローブが成功したとみなされるための最小連続成功回数
deployment.livenessProbe.failureThreshold3成功した後に失敗したとみなされるための連続した失敗の最小値
deployment.readinessProbe.initialDelaySeconds0Readiness Probeが開始されるまでの遅延。
deployment.readinessProbe.periodSeconds10Readinessプローブの実行頻度
deployment.readinessProbe.timeoutSeconds2準備完了プローブがタイムアウトした場合
deployment.readinessProbe.successThreshold1Readinessプローブが失敗した後、成功したとみなされるための最小連続成功回数
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.registry スパムチェック画像レジストリ
image.repositoryregistry.gitlab.com/gitlab-com/gl-security/engineering-and-research/automation-team/spam/spamcheckSpamcheck イメージレポジトリ
image.tag スパムチェック画像タグ
image.digest スパムチェック画像ダイジェスト
keda.enabledfalseの代わりにKEDA ScaledObjects を使用します。HorizontalPodAutoscalers
keda.pollingInterval30各トリガーを
keda.cooldownPeriod300リソースを0にスケールバックする前に、最後のトリガがアクティブであると報告された後、待機する期間。
keda.minReplicaCount KEDAがリソースをスケールダウンする最小レプリカ数。hpa.minReplicas
keda.maxReplicaCount KEDAがリソースをスケールアップする際の最大レプリカ数。hpa.maxReplicas
keda.fallback KEDAフォールバック設定。
keda.hpaName KEDAが作成するHPAリソースの名前。keda-hpa-{scaled-object-name}
keda.restoreToOriginalReplicaCount  ScaledObject が削除された後、ターゲットリソースを元のレプリカ数にスケールバックするかどうかを指定します。
keda.behavior アップスケーリングとダウンスケーリングの動作を指定します。hpa.behavior
keda.triggers 対象リソースのスケーリングを有効にするトリガーのリスト。デフォルトはhpa.cpuhpa.memory
logging.levelinfoログレベル
maxReplicas10HPAmaxReplicas
maxUnavailable1HPAmaxUnavailable
minReplicas2HPAmaxReplicas
podLabels{}ポッドの補足ラベル。セレクタには使用されません。
resources.requests.cpu100mスパムチェックの最小CPU
resources.requests.memory100Mスパムチェックの最小メモリ
securityContext.fsGroup1000ポッドを起動するグループID
securityContext.runAsUser1000ポッドを起動するユーザーID
securityContext.fsGroupChangePolicy ボリュームの所有権と権限を変更するためのポリシー (Kubernetes 1.23 が必要)
serviceLabels{}補足サービスラベル
service.externalPort8001スパムチェック外部ポート
service.internalPort8001スパムチェック内部ポート
service.typeClusterIPスパムチェックサービスタイプ
serviceAccount.enabledServiceAccountの使用フラグfalse
serviceAccount.createServiceAccountを作成するフラグfalse
tolerations[]ポッド割り当て用のトレラベル
extraEnvFrom{}公開する他のデータソースの追加環境変数のリスト
priorityClassName ポッドに割り当てられる優先度クラス

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がリソースをスケールダウンする最小レプリカ数。hpa.minReplicas
maxReplicaCount整数 KEDAがリソースをスケールアップする際の最大レプリカ数。hpa.maxReplicas
fallbackマップ KEDAフォールバック設定。
hpaName文字列 KEDAが作成するHPAリソースの名前。keda-hpa-{scaled-object-name}
restoreToOriginalReplicaCountブール値  ScaledObject が削除された後、ターゲットリソースを元のレプリカ数にスケールバックするかどうかを指定します。
behaviorマップ アップスケーリングとダウンスケーリングの動作を指定します。hpa.behavior
triggers配列 対象リソースのスケーリングを有効にするトリガーのリスト。デフォルトはhpa.cpuhpa.memory

Chart設定例

許容範囲

tolerations 汚染されたワーカーノードでポッドのスケジューリングが可能

以下は、tolerations の使用例です:

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

注釈

annotations では、スパムチェックのポッドに注釈を追加できます。例えば

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

リソース

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

使用例:

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

livenessProbe/readinessProbe

deployment.livenessProbe およびdeployment.readinessProbe は、コンテナが壊れた状態など、特定のシナリオにおいてスパムチェックポッドの終了を制御するのに役立つメカニズムを提供します。

使用例:

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

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