使用极狐GitLab-Spamcheck chart
- Tier: 专业版,旗舰版
- Offering: 私有化部署
spamcheck 子 chart 提供了 Spamcheck 的部署,这是一种由极狐GitLab 开发的反垃圾引擎,最初是为了应对 JihuLab.com 中不断增长的垃圾信息,后来公开供极狐GitLab 私有化部署使用。
要求
此 chart 依赖于对极狐GitLab API 的访问。
配置
启用 Spamcheck
默认情况下,spamcheck 是禁用的。要在您的极狐GitLab 实例上启用它,请将 Helm 属性 global.spamcheck.enabled 设置为 true,例如:
shellhelm 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
- 在左侧边栏底部,选择 管理员区域。
- 选择 设置 > 报告。
- 展开 垃圾信息和反机器人保护。
- 更新垃圾检查设置:
- 勾选“通过外部 API 端点启用垃圾检查”复选框。
- 外部垃圾检查端点的 URL 使用 grpc://gitlab-spamcheck.default.svc:8001,其中 default 替换为部署极狐GitLab 的 Kubernetes 命名空间。
- 将“垃圾检查 API 密钥”留空。
- 选择 保存更改。
安装命令行选项
下表包含可以通过 --set 标志提供给 helm install 命令的所有可能的 chart 配置。
| 参数 | 默认值 | 描述 |
|---|---|---|
| affinity | {} | 亲和性规则 用于 pod 分配 |
| annotations | {} | Pod 注解 |
| common.labels | {} | 应用于此 chart 创建的所有对象的补充标签。 |
| deployment.livenessProbe.initialDelaySeconds | 20 | 启动活动性探测之前的延迟 |
| deployment.livenessProbe.periodSeconds | 60 | 执行活动性探测的频率 |
| deployment.livenessProbe.timeoutSeconds | 30 | 活动性探测超时时间 |
| deployment.livenessProbe.successThreshold | 1 | 活动性探测被认为成功的最小连续成功次数 |
| deployment.livenessProbe.failureThreshold | 3 | 活动性探测被认为失败的最小连续失败次数 |
| deployment.readinessProbe.initialDelaySeconds | 0 | 启动准备探测之前的延迟 |
| deployment.readinessProbe.periodSeconds | 10 | 执行准备探测的频率 |
| deployment.readinessProbe.timeoutSeconds | 2 | 准备探测超时时间 |
| deployment.readinessProbe.successThreshold | 1 | 准备探测被认为成功的最小连续成功次数 |
| 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 | Spamcheck 镜像注册表 | |
| image.repository | registry.gitlab.com/gitlab-com/gl-security/engineering-and-research/automation-team/spam/spamcheck | Spamcheck 镜像仓库 |
| image.tag | Spamcheck 镜像标签 | |
| image.digest | Spamcheck 镜像摘要 | |
| 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 | 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 时使用的组 ID |
| securityContext.runAsUser | 1000 | 启动 pod 时使用的用户 ID |
| securityContext.fsGroupChangePolicy | 更改卷的所有权和权限的策略(需要 Kubernetes 1.23) | |
| serviceLabels | {} | 补充服务标签 |
| service.externalPort | 8001 | Spamcheck 外部端口 |
| service.internalPort | 8001 | Spamcheck 内部端口 |
| service.type | ClusterIP | Spamcheck 服务类型 |
| serviceAccount.automountServiceAccountToken | false | 指示是否应在 pod 中挂载默认 ServiceAccount 访问令牌 |
| serviceAccount.create | false | 指示是否应创建 ServiceAccount |
| serviceAccount.enabled | false | 指示是否使用 ServiceAccount |
| tolerations | [] | 用于 pod 分配的容忍标签 |
| extraEnvFrom | {} | 从其他数据源公开的额外环境变量列表 |
| priorityClassName | 分配给 pod 的 优先级类。 |
配置 KEDA
此 keda 部分启用 KEDA ScaledObjects 的安装,而不是常规的 HorizontalPodAutoscalers。此配置是可选的,可以在需要基于自定义或外部指标进行自动缩放时使用。
大多数设置默认使用 hpa 部分中设置的值(如果适用)。
如果以下条件为真,则根据 hpa 部分中设置的 CPU 和内存阈值,自动添加 CPU 和内存触发器:
- triggers 未设置。
- 相应的 request.cpu.request 或 request.memory.request 设置也设置为非零值。
如果未设置任何触发器,则不会创建 ScaledObject。
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| enabled | Boolean | false | 使用 KEDA ScaledObjects 代替 HorizontalPodAutoscalers |
| pollingInterval | Integer | 30 | 检查每个触发器的时间间隔 |
| cooldownPeriod | Integer | 300 | 在最后一个触发器报告为活动状态后等待的时间段,然后将资源缩放回 0 |
| minReplicaCount | Integer | KEDA 将资源缩小到的最小副本数,默认为 hpa.minReplicas | |
| maxReplicaCount | Integer | KEDA 将资源扩展到的最大副本数,默认为 hpa.maxReplicas | |
| fallback | Map | KEDA 回退配置,请参阅 文档 | |
| hpaName | String | KEDA 将创建的 HPA 资源的名称,默认为 keda-hpa-{scaled-object-name} | |
| restoreToOriginalReplicaCount | Boolean | 指定是否在删除 ScaledObject 后将目标资源缩放回原始副本计数 | |
| behavior | Map | 上升和下降缩放行为的规范,默认为 hpa.behavior | |
| triggers | Array | 触发器列表,用于激活目标资源的缩放,默认为从 hpa.cpu 和 hpa.memory 计算的触发器 |
chart 配置示例
serviceAccount
此部分控制是否应创建 ServiceAccount 以及默认访问令牌是否应挂载在 pod 中。
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| automountServiceAccountToken | Boolean | false | 控制是否应在 pod 中挂载默认 ServiceAccount 访问令牌。您不应启用此选项,除非某些辅助容器需要此选项正常工作(例如 Istio)。 |
| create | Boolean | false | 指示是否应创建 ServiceAccount。 |
| enabled | Boolean | false | 指示是否使用 ServiceAccount。 |
容忍度
容忍度 允许您在污染的工作节点上调度 pod。
以下是 容忍度 的示例用法:
yaml1tolerations: 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 添加注解。例如:
yamlannotations: kubernetes.io/example-annotation: annotation-value
资源
资源 允许您配置 Spamcheck pod 可以消耗的最小和最大资源量(内存和 CPU)。
例如:
yamlresources: requests: memory: 100m cpu: 100M
活跃性探测/准备性探测
deployment.livenessProbe 和 deployment.readinessProbe 提供了一种机制,以帮助在某些情况下控制 Spamcheck Pods 的终止,例如当容器处于损坏状态时。
例如:
yaml1deployment: 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 文档。