InfoGrab Docs

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 로 정의된 헬퍼 컨테이너. svc-X 로 정의된 서비스 컨테이너, 여기서 X 는 [0-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: Execute job. Note over P: CI build job = Prepare + Pre-build + Build + Post-build P->>+G: Job logs 다이어그램의 상호 작용은 모든 Kubernetes 클러스터에 유효합니다. 예를 들어, 주요 퍼블릭 클라우드 제공업체에서 호스팅되는 턴키 솔루션이나 자체 관리