GitLab-Exporter 차트 사용
gitlab-exporter
하위 차트는 GitLab 응용 프로그램별 데이터에 대한 프로메테우스 지표를 제공합니다. 이는 PostgreSQL에 직접 연결하여 CI 빌드, 풀 미러 등의 데이터를 검색하기 위해 쿼리를 수행합니다. 또한 이는 Sidekiq API를 사용하여 Redis와 통신하여 Sidekiq 대기열의 상태에 대한 다양한 메트릭을 수집합니다 (예: 작업 수 등).
요구 사항
이 차트는 완전한 GitLab 차트의 일부로 제공되는 Redis 및 PostgreSQL 서비스에 의존하거나, 배치될 차트가 있는 Kubernetes 클러스터에서 도달 가능한 외부 서비스를 제공해야 합니다.
구성
gitlab-exporter
차트는 다음과 같이 구성됩니다:
전역 설정 및 차트 설정.
설치 명령 줄 옵션
아래 표에는 helm install
명령에 --set
플래그를 사용하여 제공할 수 있는 모든 가능한 차트 구성이 포함되어 있습니다.
매개변수 | 기본값 | 설명 |
---|---|---|
affinity
| {}
| 포드 할당을 위한 Affinity 규칙 |
annotations
| 포드 주석 | |
common.labels
| {}
| 이 차트에 의해 생성된 모든 개체에 적용되는 보충 레이블 |
podLabels
| 보충 Pod 레이블. 선택기에는 사용되지 않음. | |
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
| initContainer 이미지 | |
init.image.tag
| initContainer 이미지 태그 | |
init.containerSecurityContext
| initContainer 특정 securityContext | |
init.containerSecurityContext.allowPrivilegeEscalation
| false
| initContainer 특정: 프로세스가 부모 프로세스보다 더 많은 권한을 얻을 수 있는지 제어 |
init.containerSecurityContext.runAsNonRoot
| true
| initContainer 특정: 컨테이너가 루트가 아닌 사용자로 실행되는지 제어 |
init.containerSecurityContext.capabilities.drop
| [ "ALL" ]
| initContainer 특정: 컨테이너의 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
| 폐기 예정 명시적 메트릭 주석 설정. 템플릿 내용으로 대체됨 | |
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
| Pod가 시작될 때 사용되는 그룹 ID |
securityContext.runAsUser
| 1000
| Pod가 시작될 때 사용되는 사용자 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
# optional: boolean
CONFIG_STRING:
configMapKeyRef:
name: useful-config
key: some-string
# optional: boolean
image.pullSecrets
pullSecrets
를 사용하면 파드에서 이미지를 끌어오기 위해 개인 레지스트리에 인증할 수 있습니다.
개인 레지스트리 및 해당 인증 방법에 대한 자세한 내용은 Kubernetes 문서에서 확인할 수 있습니다.
아래는 pullSecrets
의 예시입니다:
image:
repository: my.image.repository
pullPolicy: Always
pullSecrets:
- name: my-secret-name
- name: my-secondary-secret-name
serviceAccount
이 섹션은 ServiceAccount가 생성되어야 하는지, 기본 액세스 토큰이 파드에 마운트되어야 하는지를 제어합니다.
이름 | 유형 | 기본값 | 설명 |
---|---|---|---|
annotations
| Map | {}
| ServiceAccount 주석 |
automountServiceAccountToken
| Boolean | false
| 기본 ServiceAccount 액세스 토큰을 파드에 마운트할지 여부를 제어합니다. 특정 사이드카가 제대로 작동하도록 필요한 경우를 제외하고 이 값을 활성화해서는 안 됩니다 (예: Istio). |
create
| Boolean | false
| ServiceAccount가 생성되어야 하는지 표시합니다. |
enabled
| Boolean | false
| ServiceAccount를 사용해야 하는지 표시합니다. |
name
| String | ServiceAccount의 이름. 설정되지 않은 경우 전체 차트 이름을 사용합니다. |
affinity
자세한 내용은 affinity
를 참조하세요.
annotations
annotations
를 사용하면 GitLab Exporter 파드에 주석을 추가할 수 있습니다. 예를 들면:
annotations:
kubernetes.io/example-annotation: annotation-value
Global settings
우리 차트 사이에서 몇 가지 공통 전역 설정을 공유합니다. Globals Documentation에서 GitLab 및 Registry 호스트 이름과 같은 공통 구성 옵션을 확인할 수 있습니다.
Chart settings
다음 값은 GitLab Exporter 파드를 구성하는 데 사용됩니다.
metrics.enabled
기본적으로 파드는 /metrics
에 메트릭 엔드포인트를 노출합니다. 메트릭이 활성화되면 각 파드에 주석이 추가되어 Prometheus 서버가 노출된 메트릭을 탐색하고 스크레이핑할 수 있습니다.