GitLab-Exporter 차트 사용

Tier: Free, Premium, Ultimate Offering: Self-Managed

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 서버가 노출된 메트릭을 탐색하고 스크레이핑할 수 있습니다.