GitLab-Spamcheckチャートの使い方
spamcheck
サブチャートはSpamcheckのデプロイを提供します。SpamcheckはもともとGitLab.comで増加するスパムに対抗するためにGitLabによって開発されたアンチスパムエンジンで、後に自己管理GitLabインスタンスで使用するために公開されました。
要件
このChartはGitLab APIへのアクセスに依存します。
設定
Spamcheckの有効化
spamcheck
はデフォルトでは無効になっています。GitLab インスタンスで有効にするには、Helm プロパティglobal.spamcheck.enabled
をtrue
に設定します:
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でスパムチェックを使う設定
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- 設定 > レポートを選択します。
- スパムとボット対策を展開します。
- スパムチェックの設定を更新します:
- 外部APIエンドポイント経由のスパムチェックを有効にする」チェックボックスにチェックを入れてください。
- 外部スパムチェックエンドポイントのURLは
grpc://gitlab-spamcheck.default.svc:8001
を使用します。default
は GitLab がデプロイされている Kubernetes ネームスペースに置き換えてください。 - Spam Check API key」は空欄のままにしてください。
- 変更を保存を選択します。
インストールのコマンドラインオプション
以下の表は、--set
フラグを使用してhelm install
コマンドに提供できるすべての可能な Chart 設定です。
パラメータ | デフォルト | 説明 |
---|---|---|
annotations | {} | ポッド注釈 |
common.labels | {} | このChartで作成されたすべてのオブジェクトに適用される補助ラベル。 |
deployment.livenessProbe.initialDelaySeconds | 20 | Liveness Probeが開始されるまでの遅延時間 |
deployment.livenessProbe.periodSeconds | 60 | Livenessプローブの実行頻度 |
deployment.livenessProbe.timeoutSeconds | 30 | Livenessプローブがタイムアウトした場合 |
deployment.livenessProbe.successThreshold | 1 | 一度失敗したプローブが成功したとみなされるための最小連続成功回数 |
deployment.livenessProbe.failureThreshold | 3 | 成功した後に失敗したとみなされるための連続した失敗の最小値 |
deployment.readinessProbe.initialDelaySeconds | 0 | Readiness Probeが開始されるまでの遅延。 |
deployment.readinessProbe.periodSeconds | 10 | Readinessプローブの実行頻度 |
deployment.readinessProbe.timeoutSeconds | 2 | 準備完了プローブがタイムアウトした場合 |
deployment.readinessProbe.successThreshold | 1 | Readinessプローブが失敗した後、成功したとみなされるための最小連続成功回数 |
deployment.readinessProbe.failureThreshold | 3 | 成功した後、レディネス・プローブが失敗したとみなされるには、最低連続失敗回数が必要です。 |
deployment.strategy | {} | デプロイで使用される更新ストラテジを設定できます。指定しない場合は、クラスターのデフォルトが使用されます。 |
hpa.behavior | {scaleDown: {stabilizationWindowSeconds: 300 }} | ビヘイビアには、アップスケーリングとダウンスケーリングのビヘイビアの仕様が含まれます(autoscaling/v2beta2 以上が必要です)。 |
hpa.customMetrics | [] | カスタム・メトリクスには、希望するレプリカ数を計算するために使用するメトリクスの設定が含まれます(targetAverageUtilization で設定された平均CPU使用率をデフォルトで上書きします)。 |
hpa.cpu.targetType | AverageValue | オートスケーリングCPUターゲット・タイプを設定します。Utilization またはAverageValue
|
hpa.cpu.targetAverageValue | 100m | オートスケーリングCPUターゲット値の設定 |
hpa.cpu.targetAverageUtilization | オートスケーリングCPUターゲット使用率の設定 | |
hpa.memory.targetType |
Utilization 、またはAverageValue
| |
hpa.memory.targetAverageValue | オートスケーリング・メモリ・ターゲットの値を設定します。 | |
hpa.memory.targetAverageUtilization | オートスケーリングメモリ使用率の設定 | |
hpa.targetAverageValue | 自動スケーリングCPU目標値の設定 | |
image.registry | スパムチェック画像レジストリ | |
image.repository | registry.gitlab.com/gitlab-com/gl-security/engineering-and-research/automation-team/spam/spamcheck | Spamcheck イメージレポジトリ |
image.tag | スパムチェック画像タグ | |
image.digest | スパムチェック画像ダイジェスト | |
keda.enabled | false | の代わりにKEDA ScaledObjects を使用します。HorizontalPodAutoscalers
|
keda.pollingInterval | 30 | 各トリガーを |
keda.cooldownPeriod | 300 | リソースを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.cpu とhpa.memory
| |
logging.level | info | ログレベル |
maxReplicas | 10 | HPAmaxReplicas
|
maxUnavailable | 1 | HPAmaxUnavailable
|
minReplicas | 2 | HPAmaxReplicas
|
podLabels | {} | ポッドの補足ラベル。セレクタには使用されません。 |
resources.requests.cpu | 100m | スパムチェックの最小CPU |
resources.requests.memory | 100M | スパムチェックの最小メモリ |
securityContext.fsGroup | 1000 | ポッドを起動するグループID |
securityContext.runAsUser | 1000 | ポッドを起動するユーザーID |
securityContext.fsGroupChangePolicy | ボリュームの所有権と権限を変更するためのポリシー (Kubernetes 1.23 が必要) | |
serviceLabels | {} | 補足サービスラベル |
service.externalPort | 8001 | スパムチェック外部ポート |
service.internalPort | 8001 | スパムチェック内部ポート |
service.type | ClusterIP | スパムチェックサービスタイプ |
serviceAccount.enabled | ServiceAccountの使用フラグ | false |
serviceAccount.create | ServiceAccountを作成するフラグ | 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.cpu とhpa.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の公式ドキュメントを参照してください。