Kubernetes executor
GitLab Runner에서 Kubernetes executor를 사용하여 빌드를 실행하는 방법을 설명합니다.
Kubernetes executor를 사용하여 빌드에 Kubernetes 클러스터를 활용합니다. executor는 Kubernetes 클러스터 API를 호출하고 각 GitLab CI 작업에 대해 파드를 생성합니다. Kubernetes executor는 빌드를 여러 단계로 나눕니다: Prepare : Kubernetes 클러스터에 파드를 생성합니다. 빌드 및 서비스 실행에 필요한 컨테이너를 생성합니다. Pre-build : 이전 스테이지에서 클론, 캐시 복원, 아티팩트 다운로드를 수행합니다. 이 단계는 파드의 일부인 특수 컨테이너에서 실행됩니다. Build : 사용자 빌드. Post-build : 캐시 생성, GitLab에 아티팩트 업로드. 이 단계도 파드의 일부인 특수 컨테이너를 사용합니다. Runner가 Kubernetes 파드를 생성하는 방법 # 다음 다이어그램은 GitLab 인스턴스와 Kubernetes 클러스터에 호스팅된 Runner 간의 상호 작용을 보여줍니다. Runner는 Kubernetes API를 호출하여 클러스터에 파드를 생성합니다. 파드는 .gitlab-ci.yml 또는 config.toml 파일에 정의된 각 service 에 대해 다음 컨테이너로 구성됩니다: build 으로 정의된 빌드 컨테이너. helper 로 정의된 헬퍼 컨테이너. 다음 로직을 사용하여 이름이 지정된 서비스 컨테이너: 서비스에 유효한 DNS 레이블 이름 인 별칭이 있고 다른 서비스 컨테이너에서 이미 사용되지 않은 경우, 해당 별칭이 컨테이너 이름으로 사용됩니다. 유효한 별칭이 없으면 컨테이너는 svc-N 으로 이름이 지정됩니다. 여기서 N 은 0부터 시작하는 순차 인덱스입니다. 히스토리 별칭 기반 이름 지정은 GitLab Runner 17.9에서 도입 되었습니다. 서비스와 컨테이너는 동일한 Kubernetes 파드에서 실행되며 동일한 localhost 주소를 공유합니다. 다음 제한 사항이 적용됩니다: 서비스는 DNS 이름을 통해 접근할 수 있습니다. 이전 버전을 사용하는 경우 localhost 를 사용해야 합니다. 동일한 포트를 사용하는 여러 서비스를 사용할 수 없습니다. 예를 들어, 두 개의 mysql 서비스를 동시에 사용할 수 없습니다. Mermaid 다이어그램 (16줄) 소스 코드 보기 sequenceDiagram participant G as GitLab instance participant R as Runner on Kubernetes cluster participant Kube as Kubernetes API participant P as POD R->>+G: Get a CI job. loop G-->R: ; end Note over R,G: POST /api/v4/jobs/request G->>+R: CI job data. R-->>-Kube: Create a POD to run the CI job. Note over R,Kube: POST to Kube API P->>+P: Execu
