GitLab-Spamcheck 차트 사용하기
spamcheck
서브 차트는 Spamcheck의 배포를 제공합니다. 이는 GitLab에서 개발한 반 스팸 엔진으로, GitLab.com에서 증가하는 스팸을 막기 위해 최초로 개발되었으며, 이후 자가 관리 GitLab 인스턴스에서 사용할 수 있도록 공개되었습니다.
요구 사항
이 차트는 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에서 Spamcheck 사용하도록 구성
- 왼쪽 사이드바에서 맨 아래에 있는 Admin Area를 선택합니다.
- Settings > Reporting을 선택합니다.
- Spam and Anti-bot Protection을 확장합니다.
- Spam Check 설정을 업데이트합니다:
- “Enable Spam Check via external API endpoint” 체크박스를 선택합니다.
- 외부 Spam Check 엔드 포인트의 URL로
grpc://gitlab-spamcheck.default.svc:8001
을 사용합니다. 여기서default
는 GitLab이 배포된 Kubernetes 네임스페이스로 교체됩니다. - “Spam Check API key”는 비워둡니다.
- Save changes를 선택합니다.
설치 명령줄 옵션
아래 표는 --set
플래그를 사용하여 helm install
명령에 제공될 수 있는 모든 가능한 차트 구성을 포함하고 있습니다.
매개변수 | 기본값 | 설명 |
---|---|---|
affinity |
{} |
포드 할당을 위한 Affinity 규칙 |
annotations |
{} |
포드 주석 |
common.labels |
{} |
이 차트에 의해 생성된 모든 객체에 적용되는 보조 레이블입니다. |
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 }} |
동적 축소 및 확대 동작을 위한 사양 (requires autoscaling/v2beta2 or higher) |
hpa.customMetrics |
[] |
원하는 복제 수를 계산하는 데 사용할 사용자 지정 메트릭 사양 (default average CPU Utilization 사용을 재정의) |
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 |
DEPRECATED 자동확장 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 |
{} |
보조 포드 레이블. 선택기에 사용되지 않습니다. |
resources.requests.cpu |
100m |
Spamcheck 최소 CPU |
resources.requests.memory |
100M |
Spamcheck 최소 메모리 |
securityContext.fsGroup |
1000 |
포드가 시작되어야 하는 그룹 ID |
securityContext.runAsUser |
1000 |
포드가 시작되어야 하는 사용자 ID |
securityContext.fsGroupChangePolicy |
볼륨의 소유권 및 권한을 변경하는 정책 (requires Kubernetes 1.23) | |
serviceLabels |
{} |
보조 서비스 레이블 |
service.externalPort |
8001 |
Spamcheck 외부 포트 |
service.internalPort |
8001 |
Spamcheck 내부 포트 |
service.type |
ClusterIP |
Spamcheck 서비스 유형 |
serviceAccount.automountServiceAccountToken |
false |
기본 ServiceAccount 접근 토큰이 포드에 마운트되어야 하는지 여부를 나타냅니다. |
serviceAccount.create |
false |
ServiceAccount를 생성해야 하는지 여부를 나타냅니다. |
serviceAccount.enabled |
false |
ServiceAccount를 사용해야 하는지 여부를 나타냅니다. |
tolerations |
[] |
포드 할당을 위한 내성 레이블 |
extraEnvFrom |
{} |
노출할 추가 환경 변수 목록 |
priorityClassName |
우선 순위 클래스 포드에 할당됩니다. |
KEDA 구성
이 keda
섹션은 일반 HorizontalPodAutoscalers
대신 KEDA ScaledObjects
의 설치를 가능하게 합니다.
이 구성은 선택 사항이며 사용자 정의 또는 외부 메트릭에 따라 자동 스케일링이 필요할 때 사용할 수 있습니다.
대부분의 설정은 가능한 경우 hpa
섹션에 설정된 값으로 기본값이 설정됩니다.
다음이 참인 경우, CPU 및 메모리 트리거는 hpa
섹션에 설정된 CPU 및 메모리 임계값에 따라 자동으로 추가됩니다:
-
triggers
가 설정되어 있지 않습니다. - 해당
request.cpu.request
또는request.memory.request
설정도 0이 아닌 값으로 설정되어 있습니다.
트리거가 설정되지 않으면 ScaledObject
가 생성되지 않습니다.
자세한 설정에 대해서는 KEDA 문서를 참조하세요.
이름 | 유형 | 기본값 | 설명 |
---|---|---|---|
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 에서 계산된 트리거로 설정됩니다. |
차트 구성 예제
serviceAccount
이 섹션은 ServiceAccount를 생성해야 하는지, 기본 액세스 토큰이 포드에 마운트되어야 하는지를 제어합니다.
이름 | 유형 | 기본값 | 설명 |
---|---|---|---|
automountServiceAccountToken |
Boolean | false |
기본 ServiceAccount 액세스 토큰이 포드에 마운트되어야 하는지를 제어합니다. 특정 사이드카가 올바르게 작동하기 위해 요구되지 않는 한 이를 활성화하지 않아야 합니다 (예: Istio). |
create |
Boolean | false |
ServiceAccount를 생성해야 하는지를 나타냅니다. |
enabled |
Boolean | false |
ServiceAccount를 사용할 것인지 여부를 나타냅니다. |
tolerations
tolerations
는 오염된 워커 노드에 포드를 스케줄할 수 있도록 허용합니다.
아래는 tolerations
의 사용 예입니다:
tolerations:
- key: "node_label"
operator: "Equal"
value: "true"
effect: "NoSchedule"
- key: "node_label"
operator: "Equal"
value: "true"
effect: "NoExecute"
affinity
자세한 정보는 affinity
를 참조하세요.
annotations
annotations
는 Spamcheck 포드에 주석을 추가할 수 있도록 해줍니다. 예를 들어:
annotations:
kubernetes.io/example-annotation: annotation-value
resources
resources
는 Spamcheck 포드가 소모할 수 있는 최소 및 최대 리소스(메모리 및 CPU)를 구성할 수 있도록 해줍니다.
예를 들어:
resources:
requests:
memory: 100m
cpu: 100M
livenessProbe/readinessProbe
deployment.livenessProbe
와 deployment.readinessProbe
는 특정 시나리오에서 Spamcheck 포드의 종료를 제어하는 데 도움이 되는 메커니즘을 제공합니다.
예를 들어, 컨테이너가 고장난 상태일 때입니다.
deployment:
livenessProbe:
initialDelaySeconds: 10
periodSeconds: 20
timeoutSeconds: 3
successThreshold: 1
failureThreshold: 10
readinessProbe:
initialDelaySeconds: 10
periodSeconds: 5
timeoutSeconds: 2
successThreshold: 1
failureThreshold: 3
이 구성에 대한 추가 세부정보는 공식 Kubernetes Documentation를 참조하세요.