使用 GitLab-Spamcheck chart

spamcheck 子 chart 提供了 Spamcheck 的部署,这是一个反垃圾邮件引擎。

要求

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

配置

启用 Spamcheck

spamcheck 默认被禁用。要在实例上启用它,请将 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

配置使用 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 配置。

参数 默认值 描述
annotations {} Pod annotations
common.labels {} 应用于此 chart 创建的所有对象的补充标签。
deployment.livenessProbe.initialDelaySeconds 20 启动 liveness 探测前的延迟时间
deployment.livenessProbe.periodSeconds 60 多久执行一次 liveness 探测
deployment.livenessProbe.timeoutSeconds 30 liveness 探测超时时间
deployment.livenessProbe.successThreshold 1 liveness 探测失败后,被视为成功的最小连续成功次数
deployment.livenessProbe.failureThreshold 3 liveness 探测成功后,被视为失败的最小连续失败次数
deployment.readinessProbe.initialDelaySeconds 0 启动 readiness 探测前的延迟时间
deployment.readinessProbe.periodSeconds 10 多久执行一次 readiness 探测
deployment.readinessProbe.timeoutSeconds 2 readiness 探测超时时间
deployment.readinessProbe.successThreshold 1 readiness 探测失败后,被视为成功的最小连续成功次数
deployment.readinessProbe.failureThreshold 3 readiness 探测成功后,被视为失败的最小连续失败次数
deployment.strategy {} 允许配置部署使用的更新策略。如果未提供,则使用集群默认值。
hpa.targetAverageValue 100m 设置自动缩放目标值(CPU)
image.repository registry.gitlab.com/gitlab-com/gl-security/engineering-and-research/automation-team/spam/spamcheck Spamcheck 镜像仓库
logging.format json 日志格式
logging.level info 日志级别
metrics.enabled true 切换 Prometheus 指标导出器
metrics.port 8003 用于指标导出器的端口号
metrics.path /metrics 用于指标导出器的路径
maxReplicas 10 HPA maxReplicas
maxUnavailable 1 HPA maxUnavailable
minReplicas 2 HPA maxReplicas
podLabels {} 补充 Pod 标签,不用于选择器。
resources.requests.cpu 100m Spamcheck 最小 CPU
resources.requests.memory 100M Spamcheck 最小内存
securityContext.fsGroup 1000 在其下启动 Pod 的 Group ID
securityContext.runAsUser 1000 在其下启动 Pod 的 User ID
serviceLabels {} 补充服务标签
service.externalPort 8001 Spamcheck 外部端口
service.internalPort 8001 Spamcheck 内部端口
service.type ClusterIP Spamcheck 服务类型
serviceAccount.enabled 使用 ServiceAccount 标志 false
serviceAccount.create 创建 ServiceAccount 标志 false
tolerations [] pod 分配的容忍标签
extraEnvFrom {} 要暴露的其它数据源的额外环境变量列表

Chart 配置示例

tolerations

tolerations 允许您调度 pod 到受污染的工作节点上。

下面是一个使用 tolerations 的示例:

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

annotations

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

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

resources

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

例如:

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

livenessProbe/readinessProbe

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

例如:

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

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