GitLab-Exporter 차트 사용하기
gitlab-exporter
서브 차트는 GitLab 애플리케이션 특정 데이터에 대한 Prometheus 메트릭을 제공합니다. PostgreSQL과 직접 통신하여 CI 빌드, 풀 미러 등의 데이터를 검색하기 위한 쿼리를 수행합니다. 또한, Sidekiq API를 사용하여 Sidekiq 큐의 상태와 관련된 다양한 메트릭(예: 작업 수)을 수집하기 위해 Redis와 통신합니다.
요구 사항
이 차트는 Redis 및 PostgreSQL 서비스에 의존하며, 이는 전체 GitLab 차트의 일부이거나 이 차트를 배포하는 Kubernetes 클러스터에서 접근할 수 있는 외부 서비스로 제공됩니다.
구성
gitlab-exporter
차트는 다음과 같이 구성됩니다:
Global settings 및 Chart settings.
설치 명령줄 옵션
아래 표는 --set
플래그를 사용하여 helm install
명령에 제공할 수 있는 모든 가능한 차트 구성을 포함합니다.
매개변수 | 기본값 | 설명 |
---|---|---|
affinity |
{} |
포드 할당에 대한 Affinity 규칙 |
annotations |
포드 주석 | |
common.labels |
{} |
이 차트에서 생성된 모든 객체에 적용되는 보조 레이블. |
podLabels |
보조 포드 레이블. 선택자에는 사용되지 않습니다. | |
common.labels |
이 차트에서 생성된 모든 객체에 적용되는 보조 레이블. | |
deployment.strategy |
{} |
배포에 사용되는 업데이트 전략을 구성할 수 있도록 합니다. |
enabled |
true |
GitLab Exporter 활성화 플래그 |
extraContainers |
포함할 추가 컨테이너 목록 | |
extraInitContainers |
포함할 추가 초기화 컨테이너 목록 | |
extraVolumeMounts |
수행할 추가 볼륨 마운트 목록 | |
extraVolumes |
생성할 추가 볼륨 목록 | |
extraEnv |
노출할 추가 환경 변수 목록 | |
extraEnvFrom |
노출할 기타 데이터 소스에서의 추가 환경 변수 목록 | |
image.pullPolicy |
IfNotPresent |
GitLab 이미지 풀 정책 |
image.pullSecrets |
이미지 저장소의 비밀 | |
image.repository |
registry.gitlab.com/gitlab-org/build/cng/gitlab-exporter |
GitLab Exporter 이미지 저장소 |
image.tag |
이미지 태그 | |
init.image.repository |
초기화 컨테이너 이미지 | |
init.image.tag |
초기화 컨테이너 이미지 태그 | |
init.containerSecurityContext |
초기화 컨테이너 특정 securityContext | |
init.containerSecurityContext.allowPrivilegeEscalation |
false |
초기화 컨테이너 특정: 프로세스가 부모 프로세스보다 더 많은 권한을 획득할 수 있는지 여부를 제어합니다. |
init.containerSecurityContext.runAsNonRoot |
true |
초기화 컨테이너 특정: 컨테이너가 비 루트 사용자로 실행되는지 여부를 제어합니다. |
init.containerSecurityContext.capabilities.drop |
[ "ALL" ] |
초기화 컨테이너 특정: 컨테이너에 대해 Linux capabilities를 제거합니다. |
metrics.enabled |
true |
메트릭 엔드포인트가 스크래핑을 위해 사용 가능한지 여부 |
metrics.port |
9168 |
메트릭 엔드포인트 포트 |
metrics.path |
/metrics |
메트릭 엔드포인트 경로 |
metrics.serviceMonitor.enabled |
false |
메트릭 스크래핑을 관리하도록 Prometheus Operator가 ServiceMonitor를 생성해야 하는지 여부. 이 기능을 활성화하면 prometheus.io 스크래핑 주석이 제거됩니다. |
metrics.serviceMonitor.additionalLabels |
{} |
ServiceMonitor에 추가할 레이블 |
metrics.serviceMonitor.endpointConfig |
{} |
ServiceMonitor에 대한 추가 엔드포인트 구성 |
metrics.annotations |
DEPRECATED 명확한 메트릭 주석을 설정합니다. 템플릿 콘텐츠로 대체되었습니다. | |
priorityClassName |
포드에 할당되는 우선 순위 클래스입니다. | |
resources.requests.cpu |
75m |
GitLab Exporter 최소 CPU |
resources.requests.memory |
100M |
GitLab Exporter 최소 메모리 |
serviceLabels |
{} |
보조 서비스 레이블 |
service.externalPort |
9168 |
GitLab Exporter 공개 포트 |
service.internalPort |
9168 |
GitLab Exporter 내부 포트 |
service.name |
gitlab-exporter |
GitLab Exporter 서비스 이름 |
service.type |
ClusterIP |
GitLab Exporter 서비스 유형 |
serviceAccount.annotations |
{} |
ServiceAccount 주석 |
serviceAccount.automountServiceAccountToken |
false |
기본 ServiceAccount 접근 토큰이 포드에 마운트되어야 하는지 여부를 나타냅니다. |
serviceAccount.create |
false |
ServiceAccount를 생성해야 하는지 여부를 나타냅니다. |
serviceAccount.enabled |
false |
ServiceAccount를 사용할 것인지 여부를 나타냅니다. |
serviceAccount.name |
ServiceAccount의 이름. 설정되지 않으면 전체 차트 이름이 사용됩니다. | |
securityContext.fsGroup |
1000 |
포드가 시작될 때 사용할 그룹 ID |
securityContext.runAsUser |
1000 |
포드가 시작될 때 사용할 사용자 ID |
securityContext.fsGroupChangePolicy |
볼륨의 소유권 및 권한 변경 정책 (Kubernetes 1.23 필요) | |
securityContext.seccompProfile.type |
RuntimeDefault |
사용할 Seccomp 프로필 |
containerSecurityContext |
컨테이너가 시작되는 securityContext를 재정의합니다. | |
containerSecurityContext.runAsUser |
1000 |
컨테이너가 시작되는 특정 보안 컨텍스트 사용자 ID를 오버라이드할 수 있습니다. |
containerSecurityContext.allowPrivilegeEscalation |
false |
컨테이너의 프로세스가 부모 프로세스보다 더 많은 권한을 얻을 수 있는지 제어합니다. |
containerSecurityContext.runAsNonRoot |
false |
컨테이너가 비 루트 사용자로 실행되는지 여부를 제어합니다. |
containerSecurityContext.capabilities.drop |
[ "ALL" ] |
Gitaly 컨테이너에 대한 Linux capabilities를 제거합니다. |
tolerations |
[] |
포드 할당을 위한 내성 레이블 |
psql.port |
PostgreSQL 서버 포트를 설정합니다. global.psql.port 보다 우선합니다. |
|
tls.enabled |
false |
GitLab Exporter TLS 활성화 |
tls.secretName |
{Release.Name}-gitlab-exporter-tls |
GitLab Exporter TLS 비밀. Kubernetes TLS 비밀를 가리켜야 합니다. |
차트 구성 예시
extraEnv
extraEnv
는 모든 컨테이너에서 추가 환경 변수를 노출할 수 있게 해줍니다.
다음은 extraEnv
의 사용 예입니다:
extraEnv:
SOME_KEY: some_value
SOME_OTHER_KEY: some_other_value
컨테이너가 시작될 때 환경 변수가 노출되었는지 확인할 수 있습니다:
env | grep SOME
SOME_KEY=some_value
SOME_OTHER_KEY=some_other_value
extraEnvFrom
extraEnvFrom
는 다른 데이터 출처에서 모든 컨테이너에 대해 추가 환경 변수를 노출할 수 있게 해줍니다.
다음은 extraEnvFrom
의 사용 예입니다:
extraEnvFrom:
MY_NODE_NAME:
fieldRef:
fieldPath: spec.nodeName
MY_CPU_REQUEST:
resourceFieldRef:
containerName: test-container
resource: requests.cpu
SECRET_THING:
secretKeyRef:
name: special-secret
key: special_token
# 선택 사항: boolean
CONFIG_STRING:
configMapKeyRef:
name: useful-config
key: some-string
# 선택 사항: boolean
image.pullSecrets
pullSecrets
는 pod에 대한 이미지 풀을 위해 비공개 레지스트리에 인증할 수 있게 해줍니다.
비공식 레지스트리 및 해당 인증 방법에 대한 추가 정보는 Kubernetes 문서에서 확인할 수 있습니다.
다음은 pullSecrets
의 사용 예입니다:
image:
repository: my.image.repository
pullPolicy: Always
pullSecrets:
- name: my-secret-name
- name: my-secondary-secret-name
serviceAccount
이 섹션은 ServiceAccount가 생성되어야 하는지와 기본 액세스 토큰이 pods에 마운트되어야 하는지를 제어합니다.
이름 | 유형 | 기본값 | 설명 |
---|---|---|---|
annotations |
맵 | {} |
ServiceAccount 주석. |
automountServiceAccountToken |
불린 | false |
기본 ServiceAccount 액세스 토큰이 pods에 마운트되어야 하는지를 제어합니다. 특정 사이드카가 정상적으로 작동하기 위해 필요하지 않는 한 이 기능을 활성화하지 않는 것이 좋습니다 (예: Istio). |
create |
불린 | false |
ServiceAccount를 생성해야 하는지 여부를 나타냅니다. |
enabled |
불린 | false |
ServiceAccount를 사용할지 여부를 나타냅니다. |
name |
문자열 | ServiceAccount의 이름입니다. 설정하지 않으면 전체 차트 이름이 사용됩니다. |
affinity
자세한 정보는 affinity
를 참조하세요.
annotations
annotations
는 GitLab Exporter pods에 주석을 추가할 수 있게 해줍니다. 예를 들어:
annotations:
kubernetes.io/example-annotation: annotation-value
글로벌 설정
우리는 차트 간에 일부 일반 글로벌 설정을 공유합니다. GitLab 및 Registry 호스트명과 같은 일반 구성 옵션은 Globals Documentation에서 확인하세요.
차트 설정
다음 값은 GitLab Exporter pod를 구성하는 데 사용됩니다.
metrics.enabled
기본적으로 pod는 /metrics
에서 메트릭 엔드포인트를 노출합니다.
메트릭이 활성화되면 각 pod에 주석이 추가되어 Prometheus 서버가 노출된 메트릭을 발견하고 스크랩할 수 있도록 합니다.