• NCP(Naver Cloud Platform)을 활용하여 GitLab Runner로 CI/CD 구축

    2026. 5. 26.

    by. Daramu

    GitLab은 단순 코드 저장소로 사용할 수 있지만, GitLab Runner를 통해 CI/CD를 구현할 수도 있다.

     

    물론 Jenkins, ArgoCD, NCP의 Source 시리즈 등 여러 가지 CI/CD 도구가 있지만, GitLab으로 CI/CD를 구축하였을 경우 별도의 외부 CI/CD 전용 솔루션을 연동하거나 복잡한 관리 도구들을 추가로 띄우지 않아도 된다는 장점이 있다. (GitLab 하나로 소스 관리부터 빌드, 배포까지 올인원으로 해결이 가능하다.)

     

    이처럼 관리 포인트의 감소는 인프라의 구조 자체를 단순하고 관리를 편하게 해주므로, 이번 글에서는 GitLab Runner(GitLab의 CI/CD를 실제로 수행하는 에이전트)를 사용하여 CI/CD 구축을 테스트해 보겠다.

     

    이해가 어렵다면, 일반적으로 CI/CD는 아래의 구조를 따른다.

    1. ㄹ개발자가 코드 저장소에 코드를 Push한다. (ex. GitLab, GitHub)
    2. CI 도구가 이를 감지하여 코드를 가져오고, 애플리케이션 빌드와 새로운 이미지로 만들어 Registry에 Push한다.
    3. CD 도구가 이를 감지하여 새로운 서비스를 서버에 올린다.

    여기서 GitLab Runner가 GitLab의 명령을 받아 위의 2, 3번 동작을 자동으로 수행하게 만들겠다는 것이다.

     

    우선 GitLab에 대한 설치가 필요한데, 설치가 되어있지 않다면 아래의 포스팅을 통해 설치할 수 있다.

    GitLab 구축 :: Daramu

     

    GitLab 구축

    소스코드 저장소에서 전 세계적으로 가장 유명하며 많이 사용하는 곳은 GitHub일 것이다.하지만 GitHub의 데이터 자체는 외부에 있으므로, 보안에 민감하거나 코드 저장소를 국내에 한정해야 하는

    daramu.tistory.com

     

     

    GitLab을 구축했다면, 우선 토큰에 대한 설정이 필요하다.

    토큰은 크게 3가지 범위로 생성할 수 있다.

    1. Project Runner - 한 프로젝트에 대한 토큰

    2. Group Runner - 그룹과 하위에 속한 서브그룹, 프로젝트에 대한 토큰

    3. Instance Ruuner - Admin의 이름으로 생성하여, GitLab 내부의 모든 프로젝트에 대한 접근 가능한 토큰

     

    1번은 특정 프로젝트에 대한 별도의 접근이 필요할때, 2번은 전용 클러스터나 사업부가 별도로 관리할때, 3번은 별도의 접근 권한이 필요 없을때 사용된다.

     

    본 포스팅에서는 3번의 토큰을 사용할 것이다.

     

     

    우측 상단의 "Admin"을 통해 관리자 페이지로 진입한다.

     

     

    그 후 좌측의 Admin area 사이드 바에서 CI/CD -> Runners로 들어가, "Create instance runner"으로 토큰을 생성한다.

     

     

    그 후 모든 값을 비우고 Run untagged jobs 만 체크하여 Create runner를 생성한다.

    여기서 Tags는 이름이 아니라, 후에 작성할 yml파일에서 입력된 tags와 동일한 tag만 처리하곘다는 것이다.

    주 용도는 OS나 하드웨어 스펙이 아예 다를경우에 사용된다. 가령 iOS앱을 빌드 할려면 macOS운영체제가 필요하다.

     

    하지만 바로 뒤에 작성할 gitlab runner에서 우리는 리눅스로 돌릴건데, 이렇게 되면 리눅스에서 iOS앱을 빌드할 수 없기에 문제가 생긴다.

     

    이때 태그에 linux, ios등을 지정하여 각 OS에 맞는 분류를 하겠다는 것이다.

     

    하지만 본 포스팅에서는 리눅스에서 모두 빌드가 가능하므로, 별도의 태그가 없어도 모든 것을 처리하는 옵션인 "Run untageed jobs"를 체크하여 하나의 runner에서 처리하겠다는 것이다.

     

    어찌되었든 생성하였다면, 아래의 그림 처럼 토큰이 나올 것이다.

     

     

    이 토큰 값을 복사하여 쿠버네티스와 연동된 Bastion 서버에서 helm파일을 작성하여 runner를 띄울 것이다.

     

    우선 토큰 값과 gitlab url을 복사하여 아래의 values.yaml 파일을 작성한다.

    URL과 토큰은 주어진 환경에 맞게 수정하면 된다.

     

    gitlabUrl: "http://172.16.211.6"
    
    runnerToken: "glrt-9rJ3ga9cvaAh7WwLgWf2z...."
    
    runners:
      config: |
        [[runners]]
          [runners.kubernetes]
            namespace = "gitlab-runner"
            service_account = "gitlab-runner"
            [[runners.kubernetes.volumes.host_path]]
              name = "ncp-authenticator"
              mount_path = "/usr/local/bin/ncp-iam-authenticator"
              host_path = "/usr/local/bin/ncp-iam-authenticator"
              read_only = true
            
    rbac:
      create: true

     

    그후 gitlab-runner 를 위한 namespace등 쿠버네티스 자원을 배포한다.

     

    kubectl create namespace gitlab-runner
    
    helm repo add gitlab https://charts.gitlab.io
    helm repo update
    
    helm install gitlab-runner gitlab/gitlab-runner \
      -n gitlab-runner \
      -f values.yaml

     

    그 후 "kubectl get all -n gitlab-runner" 를 통해 runner가 동작중인걸 확인했다면 gitlab runner 설치는 끝이다.

    'DevOps > Gitlab' 카테고리의 다른 글

    NCP(Naver Cloud Platform)을 활용하여 GitLab Runner로 CI/CD 설정  (0) 2026.05.26
    gitlab Check your sign-up restrictions  (0) 2026.05.22
    GitLab: Git 설정  (0) 2026.05.22
    GitLab 구축  (0) 2026.05.22

    댓글