GitLab-Exporter 차트 사용하기

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

gitlab-exporter 서브 차트는 GitLab 애플리케이션 특정 데이터에 대한 Prometheus 메트릭을 제공합니다. PostgreSQL과 직접 통신하여 CI 빌드, 풀 미러 등의 데이터를 검색하기 위한 쿼리를 수행합니다. 또한, Sidekiq API를 사용하여 Sidekiq 큐의 상태와 관련된 다양한 메트릭(예: 작업 수)을 수집하기 위해 Redis와 통신합니다.

요구 사항

이 차트는 Redis 및 PostgreSQL 서비스에 의존하며, 이는 전체 GitLab 차트의 일부이거나 이 차트를 배포하는 Kubernetes 클러스터에서 접근할 수 있는 외부 서비스로 제공됩니다.

구성

gitlab-exporter 차트는 다음과 같이 구성됩니다:
Global settingsChart 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 서버가 노출된 메트릭을 발견하고 스크랩할 수 있도록 합니다.