GitLab kas 차트 사용하기

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

kas 서브 차트는 GitLab 에이전트 서버 (KAS)의 구성 가능한 배포를 제공합니다. 에이전트 서버는 GitLab과 함께 설치하는 구성 요소로, Kubernetes용 GitLab 에이전트를 관리하는 데 필요합니다.

이 차트는 GitLab API 및 Gitaly 서버에 액세스해야 합니다. 차트를 활성화하면 Ingress가 배포됩니다.

kas 컨테이너는 리소스를 최소한으로 사용하기 위해 distroless 이미지를 사용합니다. 배포된 서비스는 통신을 위해 WebSocket 프록시를 사용하는 Ingress에 의해 노출됩니다. 이 프록시를 통해 외부 구성 요소와의 장기간 연결이 가능해지며, agentk가 Kubernetes 클러스터 측 에이전트의 상대입니다.

서비스에 액세스하는 경로는 Ingress 구성에 따라 달라집니다.

더 많은 정보는 GitLab 에이전트 for Kubernetes 아키텍처를 참조하세요.

에이전트 서버 비활성화

GitLab 에이전트 서버 (kas)는 기본적으로 활성화되어 있습니다. GitLab에서 이를 비활성화하려면 Helm 속성 global.kas.enabledfalse로 설정하세요.

예시: shell helm upgrade --install kas --set global.kas.enabled=false

Ingress 지정

기본 구성을 사용하여 차트의 Ingress를 사용하는 경우 에이전트 서버의 서비스는 서브도메인에 도달할 수 있습니다. 예를 들어, global.hosts.domain: example.com의 경우 에이전트 서버는 kas.example.com에서 도달할 수 있습니다.

KAS Ingressglobal.hosts.domain과 다른 도메인을 사용할 수 있습니다.

예시: shell global.hosts.kas.name: kas.my-other-domain.com

이 예시에서는 kas.my-other-domain.com을 KAS Ingress의 호스트로 사용합니다. 기타 서비스(GitLab, Registry, MinIO 등)는 global.hosts.domain에서 지정된 도메인을 사용합니다.

설치 명령줄 옵션

이러한 매개변수를 helm install 명령에 --set 플래그를 사용하여 전달할 수 있습니다.

Parameter Default Description
... ...

(표 계속)

이와 같은 형식으로 몇 가지 옵션이 더 추가되어 있지만, 문맥에 따라 주제가 달라지므로, 그 전까지의 번역으로 마무리하겠습니다.

TLS 통신 활성화

다른 GitLab 차트 구성 요소와의 kas 팟 간 TLS 통신을 활성화합니다. 글로벌 KAS 속성을 통해 이루어집니다.

kas 차트 테스트

차트를 설치하려면:

  1. 고유한 Kubernetes 클러스터를 생성합니다.
  2. 병합 요청의 작업 브랜치를 확인합니다.
  3. 로컬 차트 브랜치에서 기본으로 활성화된 kas로 GitLab을 설치(또는 업그레이드)합니다. 다음을 사용합니다:

    helm upgrade --force --install gitlab . \
      --timeout 600s \
      --set global.hosts.domain=your.domain.com \
      --set global.hosts.externalIP=XYZ.XYZ.XYZ.XYZ \
      --set certmanager-issuer.email=your@email.com
    
  4. GDK를 사용하여 다음 프로세스를 실행하여 GitLab Kubernetes 에이전트를 구성하고 사용합니다. (에이전트를 수동으로 구성하고 사용하는 단계를 따를 수도 있습니다.)

    1. GDK GitLab 리포지토리에서 QA 폴더로 이동합니다: cd qa.
    2. QA 테스트를 실행하려면 다음 명령을 실행합니다:

      GITLAB_USERNAME=$ROOT_USER
      GITLAB_PASSWORD=$ROOT_PASSWORD
      GITLAB_ADMIN_USERNAME=$ROOT_USER
      GITLAB_ADMIN_PASSWORD=$ROOT_PASSWORD
      bundle exec bin/qa Test::Instance::All https://your.gitlab.domain/ -- --tag orchestrated --tag quarantine qa/specs/features/ee/api/7_configure/kubernetes/kubernetes_agent_spec.rb
      

      또한 환경 변수를 사용하여 설치할 agentk 버전을 사용자 정의할 수도 있습니다: GITLAB_AGENTK_VERSION=v13.7.1

KEDA 구성

keda 섹션은 정규 HorizontalPodAutoscalers 대신 KEDA ScaledObjects를 설치합니다. 이 구성은 선택 사항으로, 사용자 지정 또는 외부 메트릭을 기반으로 자동 스케일링이 필요한 경우 사용할 수 있습니다.

대부분의 설정은 해당되는 경우 hpa 섹션에 설정된 값으로 기본값을 갖습니다.

다음이 참인 경우 CPU 및 메모리 트리거가 hpa 섹션의 CPU 및 메모리 임계값에 따라 자동으로 추가됩니다:

  • triggers가 설정되지 않음.
  • 해당하는 request.cpu.request 또는 request.memory.request 설정도 0이 아닌 값으로 설정되어 있음.

트리거가 설정되어 있지 않으면 ScaledObject가 생성되지 않습니다.

이러한 설정에 대한 자세한 내용은 KEDA 문서를 참조하십시오.

이름 유형 기본값 설명
enabled 부울형 false KEDA ScaledObjects 대신 HorizontalPodAutoscalers를 사용합니다.
pollingInterval 정수 30 각 트리거를 확인하는 간격입니다.
cooldownPeriod 정수 300 스케일링을 다시 0으로 조정하기 전에 마지막 트리거가 활성 상태로 보고된 후 기다리는 기간입니다.
minReplicaCount 정수   KEDA가 리소스를 스케일링할 최소 레플리카 수로, 기본값은 minReplicas입니다.
maxReplicaCount 정수   KEDA가 리소스를 스케일링할 최대 레플리카 수로, 기본값은 maxReplicas입니다.
fallback   KEDA 폴백 구성, 문서를 참조하십시오.
hpaName 문자열   KEDA가 생성할 HPA 리소스의 이름으로, 기본값은 keda-hpa-{scaled-object-name}입니다.
restoreToOriginalReplicaCount 부울형   ScaledObject가 삭제된 후 대상 리소스를 원래 레플리카 수로 스케일링할지 여부를 지정합니다.
behavior   업-다운 스케일링 동작 사양으로, 기본값은 hpa.behavior입니다.
triggers 배열   대상 리소스의 스케일링을 활성화할 트리거 목록으로, 기본값은 hpa.cpuhpa.memory에서 계산된 트리거입니다.

serviceAccount

이 섹션에서는 ServiceAccount를 생성하고 기본 액세스 토큰을 팟에 장착해야 하는지를 제어합니다.

이름 유형 기본값 설명
annotations {} ServiceAccount 주석입니다.
automountServiceAccountToken 부울형 false 기본 ServiceAccount 액세스 토큰을 팟에 장착할지를 제어합니다. 특정 사이드카가 정상 작동하려면(예: Istio) 이 설정을 활성화해서는 안됩니다.
create 부울형 false ServiceAccount를 생성해야 하는지 여부를 나타냅니다.
enabled 부울형 false ServiceAccount를 사용해야 하는지 여부를 나타냅니다.
name 문자열   ServiceAccount의 이름입니다. 설정되지 않은 경우 전체 차트 이름이 사용됩니다.

affinity

더 많은 정보는 affinity를 참조하십시오.

디버그 로깅 활성화

KAS 하위 차트에 대해 디버그 로깅을 활성화하려면 values.yaml 파일의 kas 섹션에 다음을 추가하십시오:

customConfig:
   observability:
      logging:
         level: debug
         grpc_level: debug