GitLab_가이드

컨테이너에서 GitLab Runner 실행

구일칠구 2022. 8. 2. 16:01

일반 GitLab Runner Docker 이미지 사용

GitLab Runner Docker 이미지( Ubuntu 또는 Alpine Linuxgitlab-runner 기반)는 GitLab Runner가 호스트에 직접 설치된 경우와 같이 표준 명령을 둘러싼 래퍼로 설계되었습니다 .

일반적인 규칙은 일반적으로 다음과 같이 실행되는 모든 GitLab Runner 명령입니다.

gitlab-runner <runner command and options...>
    

다음과 같이 실행할 수 있습니다.

docker run <chosen docker options...> gitlab/gitlab-runner <runner command and options...>
    

예를 들어 GitLab Runner 명령에 대한 최상위 도움말 정보를 가져오는 것은 다음과 같이 실행할 수 있습니다.

docker run --rm -t -i gitlab/gitlab-runner --help
    
    NAME:
    gitlab-runner - a GitLab Runner
    
    USAGE:
    gitlab-runner <global options> command <command options> <arguments...>
    
    VERSION:
    10.7.0 (7c273476)
    
    (...)
    

간단히 말해서 명령의 gitlab-runner일부는 로 대체되고 docker run [docker options] gitlab/gitlab-runner나머지 명령은 레지스터 문서 에 설명된 대로 유지됩니다 . 유일한 차이점은 gitlab-runner명령이 Docker 컨테이너 내부에서 실행된다는 것입니다.

Docker 이미지 설치 및 컨테이너 시작

시작하기 전에 Docker가 설치되어 있는지 확인하십시오 .

Docker 컨테이너 내에서 실행하려면 gitlab-runner컨테이너를 다시 시작할 때 구성이 손실되지 않는지 확인해야 합니다. 이를 위해 아래에 설명된 두 가지 옵션이 있습니다.

GitLab Runner와 관련된 가장 일반적인 문제에 대해 설명 하는 FAQ 섹션 을 반드시 읽으십시오 .

  • 를 사용하는 경우 명령 에 추가 하여 session_server포트도 노출해야 합니다 .8093-p 8093:8093docker run
  • 자동 크기 조정 기능에 Docker Machine 실행기를 사용하려면 Docker Machine 스토리지 경로도 마운트해야 합니다 /root/.docker/machine.
    • -v /srv/gitlab-runner/docker-machine-config:/root/.docker/machine시스템 볼륨 마운트용 으로 추가
    • -v docker-machine-config:/root/.docker/machineDocker 명명된 볼륨 에 추가하여

옵션 1: 로컬 시스템 볼륨 마운트를 사용하여 Runner 컨테이너 시작

이 예에서는 gitlab-runner컨테이너에 탑재된 구성 볼륨에 대해 로컬 시스템을 사용합니다. 이 볼륨은 구성 및 기타 리소스에 사용됩니다.

   docker run -d --name gitlab-runner --restart always \
    -v /srv/gitlab-runner/config:/etc/gitlab-runner \
    -v /var/run/docker.sock:/var/run/docker.sock \
    gitlab/gitlab-runner:latest
    
macOS에서는 /Users/Shared대신 /srv.

옵션 2: Docker 볼륨을 사용하여 Runner 컨테이너 시작

이 예에서는 구성 컨테이너를 사용하여 사용자 지정 데이터 볼륨을 탑재할 수 있습니다.

  1. Docker 볼륨을 생성합니다.
  2. docker volume create gitlab-runner-config
          
  3. 방금 생성한 볼륨을 사용하여 GitLab Runner 컨테이너를 시작합니다.
  4. docker run -d --name gitlab-runner --restart always \
          -v /var/run/docker.sock:/var/run/docker.sock \
          -v gitlab-runner-config:/etc/gitlab-runner \
          gitlab/gitlab-runner:latest
          
컨테이너의 시간대를 설정하려면 docker run명령에서 플래그를 사용합니다 --env TZ=<TIMEZONE>. 사용 가능한 시간대 목록을 봅니다.

주자 등록

마지막 단계는 새 주자를 등록하는 것 입니다. GitLab Runner 컨테이너는 등록될 때까지 작업을 선택하지 않습니다.

구성 업데이트

에서 구성을 변경하는 경우 변경 사항 config.toml을 적용하려면 실행기를 다시 시작해야 할 수 있습니다. 다음 을 사용하는 대신 전체 컨테이너를 다시 시작해야 합니다 gitlab-runner restart.

docker restart gitlab-runner
    

업그레이드 버전

최신 버전(또는 특정 태그)을 가져옵니다.

docker pull gitlab/gitlab-runner:latest
    

기존 컨테이너를 중지하고 제거합니다.

docker stop gitlab-runner && docker rm gitlab-runner
    

원래와 같이 컨테이너를 시작합니다.

docker run -d --name gitlab-runner --restart always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /srv/gitlab-runner/config:/etc/gitlab-runner \
    gitlab/gitlab-runner:latest
    
-v /srv/gitlab-runner/config:/etc/gitlab-runner데이터 볼륨을 마운트하는 데 원래( 또는 ) 와 동일한 방법을 사용해야 합니다 --volumes-from gitlab-runner-config.

GitLab Runner 로그 읽기

GitLab Runner가 포그라운드 작업으로 시작되면(로컬로 설치된 바이너리이든 Docker 컨테이너 내부이든 상관없이) 로그가 표준 출력으로 인쇄됩니다. GitLab Runner가 시스템 서비스(예: Systemd 사용)로 시작되면 대부분의 경우 Syslog 또는 기타 시스템 로깅 메커니즘을 통해 로그가 기록됩니다.

GitLab Runner를 Docker 기반 서비스로 시작한 경우, gitlab-runner ...명령어가 컨테이너의 주요 프로세스이기 때문에 명령어를 사용하여 로그를 읽을 수 있습니다 docker logs.

예를 들어 GitLab Runner가 다음 명령으로 시작된 경우:

docker run -d --name gitlab-runner --restart always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /srv/gitlab-runner/config:/etc/gitlab-runner \
    gitlab/gitlab-runner:latest
    

다음을 사용하여 로그를 얻을 수 있습니다.

docker logs gitlab-runner
    

여기서 은 첫 번째 명령으로 gitlab-runner설정된 컨테이너의 이름입니다 .--name gitlab-runner

Docker 설명서 페이지 에서 컨테이너 로그 처리에 대한 자세한 정보를 찾을 수 있습니다 .

신뢰할 수 있는 SSL 서버 인증서 설치

GitLab CI 서버가 자체 서명된 SSL 인증서를 사용하는 경우 GitLab CI 서버 인증서가 서로 통신할 수 있도록 GitLab Runner 컨테이너에서 신뢰할 수 있는지 확인해야 합니다.

이미지 는 gitlab/gitlab-runner에서 신뢰할 수 있는 SSL 인증서를 찾도록 구성되어 있지만 구성 옵션 /etc/gitlab-runner/certs/ca.crt을 사용하여 변경할 수 있습니다 .-e "CA_CERTIFICATES_PATH=/DIR/CERT"

ca.crt파일을 certs데이터 볼륨(또는 컨테이너)의 디렉터리에 복사합니다 . 파일 에는 ca.crtGitLab Runner가 신뢰하도록 하려는 모든 서버의 루트 인증서가 포함되어야 합니다. GitLab Runner 컨테이너 ca.crt는 시작 시 파일을 가져오므로 컨테이너가 이미 실행 중인 경우 변경 사항을 적용하려면 컨테이너를 다시 시작해야 할 수 있습니다.

도커 이미지

다음 다중 플랫폼 Docker 이미지를 사용할 수 있습니다.

  • gitlab/gitlab-runner:latest 우분투 기반.
  • gitlab/gitlab-runner:alpine 훨씬 더 작은 설치 공간(~160/350MB Ubuntu 대 ~45/130MB Alpine 압축/압축 해제)으로 Alpine을 기반으로 합니다.

Ubuntu 및 Alpine 이미지 모두에 대한 가능한 빌드 지침 은 GitLab Runner 소스를 참조하십시오 .

GitLab Runner Docker 이미지 만들기

2021-08-03 현재 Alpine 기반 GitLab Runner Docker 이미지는 Alpine 3.12.0을 사용합니다. 그러나 GitLab 리포지토리에서 사용할 수 있게 되기 전에 이미지의 OS를 업그레이드할 수 있습니다.

gitlab-runner최신 Alpine 버전용 Docker 이미지 를 빌드하려면 :

  1. 생성 alpine-upgrade/Dockerfile.
ARG GITLAB_RUNNER_IMAGE_TYPE
    ARG GITLAB_RUNNER_IMAGE_TAG
    FROM gitlab/${GITLAB_RUNNER_IMAGE_TYPE}:${GITLAB_RUNNER_IMAGE_TAG}
    
    RUN apk update
    RUN apk upgrade
    
  1. 업그레이드된 gitlab-runner이미지를 만듭니다.
GITLAB_RUNNER_IMAGE_TYPE=gitlab-runner GITLAB_RUNNER_IMAGE_TAG=alpine-v13.12.0 docker build -t $GITLAB_RUNNER_IMAGE_TYPE:$GITLAB_RUNNER_IMAGE_TAG --build-arg GITLAB_RUNNER_IMAGE_TYPE=$GITLAB_RUNNER_IMAGE_TYPE --build-arg GITLAB_RUNNER_IMAGE_TAG=$GITLAB_RUNNER_IMAGE_TAG -f alpine-upgrade/Dockerfile alpine-upgrade
    
  1. 업그레이드된 gitlab-runner-helper이미지를 만듭니다.
GITLAB_RUNNER_IMAGE_TYPE=gitlab-runner-helper GITLAB_RUNNER_IMAGE_TAG=x86_64-v13.12.0 docker build -t $GITLAB_RUNNER_IMAGE_TYPE:$GITLAB_RUNNER_IMAGE_TAG --build-arg GITLAB_RUNNER_IMAGE_TYPE=$GITLAB_RUNNER_IMAGE_TYPE --build-arg GITLAB_RUNNER_IMAGE_TAG=$GITLAB_RUNNER_IMAGE_TAG -f alpine-upgrade/Dockerfile alpine-upgrade
    
IBM Z 이미지는 docker-machineLinux s390x 또는 Linux ppc64le 플랫폼에 대해 아직 유지 관리되지 않기 때문에 종속성을 포함하지 않습니다. 현재 상태에 대한 문제 를 참조하십시오 .

SE리눅스

일부 배포판(CentOS, RedHat, Fedora)은 기본적으로 SELinux를 사용하여 기본 시스템의 보안을 강화합니다.

그러한 구성을 다룰 때는 특별한 주의를 기울여야 합니다.

  1. Docker 실행기 를 사용하여 컨테이너에서 빌드를 실행하려면 /var/run/docker.sock. 그러나 SELinux가 시행 모드인 Permission denied경우 액세스할 때 오류가 표시됩니다 /var/run/docker.sock. 이 문제를 해결 하려면 selinux-dockersock 을 설치 하십시오.
  2. 호스트에 영구 디렉토리가 생성되었는지 확인하십시오: mkdir -p /srv/gitlab-runner/config.
  3. :Z볼륨에서 Docker를 실행 합니다.
docker run -d --name gitlab-runner --restart always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /srv/gitlab-runner/config:/etc/gitlab-runner:Z \
    gitlab/gitlab-runner:latest

'GitLab_가이드' 카테고리의 다른 글

GitLab 러너 투구 차트  (0) 2022.08.02
FreeBSD에 GitLab Runner 설치  (0) 2022.08.02
Geo를 사용한 다중 노드/HA 배포  (0) 2022.08.02
Redis HA 사용(Sentinel 사용)  (0) 2022.08.02
PostgreSQL HA 사용  (0) 2022.08.02