使用极狐GitLab-Spamcheck chart

  • Tier: 专业版,旗舰版
  • Offering: 私有化部署

spamcheck 子 chart 提供了 Spamcheck 的部署,这是一种由极狐GitLab 开发的反垃圾引擎,最初是为了应对 JihuLab.com 中不断增长的垃圾信息,后来公开供极狐GitLab 私有化部署使用。

要求#

此 chart 依赖于对极狐GitLab API 的访问。

配置#

启用 Spamcheck#

默认情况下,spamcheck 是禁用的。要在您的极狐GitLab 实例上启用它,请将 Helm 属性 global.spamcheck.enabled 设置为 true,例如:

shell
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 使用 Spamcheck#

  1. 在左侧边栏底部,选择 管理员区域
  2. 选择 设置 > 报告
  3. 展开 垃圾信息和反机器人保护
  4. 更新垃圾检查设置:
    1. 勾选“通过外部 API 端点启用垃圾检查”复选框。
    2. 外部垃圾检查端点的 URL 使用 grpc://gitlab-spamcheck.default.svc:8001,其中 default 替换为部署极狐GitLab 的 Kubernetes 命名空间。
    3. 将“垃圾检查 API 密钥”留空。
  5. 选择 保存更改

安装命令行选项#

下表包含可以通过 --set 标志提供给 helm install 命令的所有可能的 chart 配置。

参数默认值描述
affinity{}亲和性规则 用于 pod 分配
annotations{}Pod 注解
common.labels{}应用于此 chart 创建的所有对象的补充标签。
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 目标类型,必须为 UtilizationAverageValue
hpa.cpu.targetAverageValue100m设置自动缩放 CPU 目标值
hpa.cpu.targetAverageUtilization设置自动缩放 CPU 目标利用率
hpa.memory.targetType设置自动缩放内存目标类型,必须为 UtilizationAverageValue
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.enabledfalse使用 KEDA ScaledObjects 代替 HorizontalPodAutoscalers
keda.pollingInterval30检查每个触发器的时间间隔
keda.cooldownPeriod300在最后一个触发器报告为活动状态后等待的时间段,然后将资源缩放回 0
keda.minReplicaCountKEDA 将资源缩小到的最小副本数,默认为 hpa.minReplicas
keda.maxReplicaCountKEDA 将资源扩展到的最大副本数,默认为 hpa.maxReplicas
keda.fallbackKEDA 回退配置
keda.hpaNameKEDA 将创建的 HPA 资源的名称,默认为 keda-hpa-{scaled-object-name}
keda.restoreToOriginalReplicaCount指定是否在删除 ScaledObject 后将目标资源缩放回原始副本计数
keda.behavior上升和下降缩放行为的规范,默认为 hpa.behavior
keda.triggers触发器列表,用于激活目标资源的缩放,默认为从 hpa.cpuhpa.memory 计算的触发器
logging.levelinfo日志级别
maxReplicas10HPA maxReplicas
maxUnavailable1HPA maxUnavailable
minReplicas2HPA maxReplicas
podLabels{}补充 Pod 标签。不用于选择器。
resources.requests.cpu100mSpamcheck 最小 CPU
resources.requests.memory100MSpamcheck 最小内存
securityContext.fsGroup1000启动 pod 时使用的组 ID
securityContext.runAsUser1000启动 pod 时使用的用户 ID
securityContext.fsGroupChangePolicy更改卷的所有权和权限的策略(需要 Kubernetes 1.23)
serviceLabels{}补充服务标签
service.externalPort8001Spamcheck 外部端口
service.internalPort8001Spamcheck 内部端口
service.typeClusterIPSpamcheck 服务类型
serviceAccount.automountServiceAccountTokenfalse指示是否应在 pod 中挂载默认 ServiceAccount 访问令牌
serviceAccount.createfalse指示是否应创建 ServiceAccount
serviceAccount.enabledfalse指示是否使用 ServiceAccount
tolerations[]用于 pod 分配的容忍标签
extraEnvFrom{}从其他数据源公开的额外环境变量列表
priorityClassName分配给 pod 的 优先级类

配置 KEDA#

keda 部分启用 KEDA ScaledObjects 的安装,而不是常规的 HorizontalPodAutoscalers。此配置是可选的,可以在需要基于自定义或外部指标进行自动缩放时使用。

大多数设置默认使用 hpa 部分中设置的值(如果适用)。

如果以下条件为真,则根据 hpa 部分中设置的 CPU 和内存阈值,自动添加 CPU 和内存触发器:

  • triggers 未设置。
  • 相应的 request.cpu.requestrequest.memory.request 设置也设置为非零值。

如果未设置任何触发器,则不会创建 ScaledObject

名称类型默认值描述
enabledBooleanfalse使用 KEDA ScaledObjects 代替 HorizontalPodAutoscalers
pollingIntervalInteger30检查每个触发器的时间间隔
cooldownPeriodInteger300在最后一个触发器报告为活动状态后等待的时间段,然后将资源缩放回 0
minReplicaCountIntegerKEDA 将资源缩小到的最小副本数,默认为 hpa.minReplicas
maxReplicaCountIntegerKEDA 将资源扩展到的最大副本数,默认为 hpa.maxReplicas
fallbackMapKEDA 回退配置,请参阅 文档
hpaNameStringKEDA 将创建的 HPA 资源的名称,默认为 keda-hpa-{scaled-object-name}
restoreToOriginalReplicaCountBoolean指定是否在删除 ScaledObject 后将目标资源缩放回原始副本计数
behaviorMap上升和下降缩放行为的规范,默认为 hpa.behavior
triggersArray触发器列表,用于激活目标资源的缩放,默认为从 hpa.cpuhpa.memory 计算的触发器

chart 配置示例#

serviceAccount#

此部分控制是否应创建 ServiceAccount 以及默认访问令牌是否应挂载在 pod 中。

名称类型默认值描述
automountServiceAccountTokenBooleanfalse控制是否应在 pod 中挂载默认 ServiceAccount 访问令牌。您不应启用此选项,除非某些辅助容器需要此选项正常工作(例如 Istio)。
createBooleanfalse指示是否应创建 ServiceAccount。
enabledBooleanfalse指示是否使用 ServiceAccount。

容忍度#

容忍度 允许您在污染的工作节点上调度 pod。

以下是 容忍度 的示例用法:

yaml
1tolerations: 2- key: "node_label" 3 operator: "Equal" 4 value: "true" 5 effect: "NoSchedule" 6- key: "node_label" 7 operator: "Equal" 8 value: "true" 9 effect: "NoExecute"

亲和性#

有关更多信息,请参阅 affinity

注解#

注解 允许您向 Spamcheck pod 添加注解。例如:

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

资源#

资源 允许您配置 Spamcheck pod 可以消耗的最小和最大资源量(内存和 CPU)。

例如:

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

活跃性探测/准备性探测#

deployment.livenessProbedeployment.readinessProbe 提供了一种机制,以帮助在某些情况下控制 Spamcheck Pods 的终止,例如当容器处于损坏状态时。

例如:

yaml
1deployment: 2 livenessProbe: 3 initialDelaySeconds: 10 4 periodSeconds: 20 5 timeoutSeconds: 3 6 successThreshold: 1 7 failureThreshold: 10 8 readinessProbe: 9 initialDelaySeconds: 10 10 periodSeconds: 5 11 timeoutSeconds: 2 12 successThreshold: 1 13 failureThreshold: 3

有关此配置的更多详细信息,请参阅官方 Kubernetes 文档