GitLab kas
차트 사용하기
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.enabled
를 false
로 설정하세요.
예시:
shell
helm upgrade --install kas --set global.kas.enabled=false
Ingress 지정
기본 구성을 사용하여 차트의 Ingress를 사용하는 경우 에이전트 서버의 서비스는 서브도메인에 도달할 수 있습니다. 예를 들어, global.hosts.domain: example.com
의 경우 에이전트 서버는 kas.example.com
에서 도달할 수 있습니다.
KAS Ingress는 global.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
차트 테스트
차트를 설치하려면:
- 고유한 Kubernetes 클러스터를 생성합니다.
- 병합 요청의 작업 브랜치를 확인합니다.
-
로컬 차트 브랜치에서 기본으로 활성화된
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
-
GDK를 사용하여 다음 프로세스를 실행하여 GitLab Kubernetes 에이전트를 구성하고 사용합니다. (에이전트를 수동으로 구성하고 사용하는 단계를 따를 수도 있습니다.)
- GDK GitLab 리포지토리에서 QA 폴더로 이동합니다:
cd qa
. -
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
- GDK GitLab 리포지토리에서 QA 폴더로 이동합니다:
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.cpu 및 hpa.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