AWS Gitlab Omnibus 설치-사설 인증서 이용

OS 환경 : CentOS7

 

Gitlab 설치

참조 URL : https://docs.gitlab.com/ee/topics/airgap/quick_start_guide.html

AWS 도메인은 CA 정책으로 공인 인증서 발급이 제한 됩니다. 사설 인증서 이용한 설치 진행 하였습니다.

CentOS 7에 GitLab 설치 가이드에 따라 설치 합니다. EXTERNAL_URL 설치 단계에 http URL을 지정합니다. 설치되면 SSL을 직접 구성합니다.

sudo EXTERNAL_URL="http://ec2-3-34-48-235.ap-northeast-2.compute.amazonaws.com" install gitlab-ee

Docker 설치

yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install docker-ce systemctl start docker && systemctl enable docker

SSL 활성화

  1. /etc/gitlab/gitlab.rb 파일 수정

    # external_url의 "http"를 "https"로 수정 external_url "https://ec2-3-34-48-235.ap-northeast-2.compute.amazonaws.com" # Let's Encrypt를 false로 수정 letsencrypt['enable'] = false
  2. 사설 인증서 생성

    sudo mkdir -p /etc/gitlab/ssl sudo chmod 755 /etc/gitlab/ssl sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/gitlab/ssl/ec2-3-34-48-235.ap-northeast-2.compute.amazonaws.com.key -out /etc/gitlab/ssl/ec2-3-34-48-235.ap-northeast-2.compute.amazonaws.com.crt
  3. 변경 사항 적용

    sudo gitlab-ctl reconfigure

GitLab Container Registry 활성화

  1. /etc/gitlab/gitlab.rb 파일 수정

    # external_registry_url을 external_url과 동일하게 구성 후 port를 4567로 지정 external_url "https://ec2-3-34-48-235.ap-northeast-2.compute.amazonaws.com" registry_external_url "https://ec2-3-34-48-235.ap-northeast-2.compute.amazonaws.com:4567"
  2. 변경 사항 적용

    sudo gitlab-ctl reconfigure

GitLab Runner 설치

  1. 패키지 다운로드

    curl -LJO https://gitlab-runner-downloads.s3.amazonaws.com/latest/rpm/gitlab-runner_amd64.rpm
  2. 시스템 패키지 설치

    rpm -i gitlab-runner_amd64.rpm

Docker 데몬이 Registry와 GitLab Runner를 신뢰하도록 사설 인증서 매칭

  1. Docker 데몬에 제공할 인증서 복사

    sudo mkdir -p /etc/docker/certs.d/ec2-3-34-48-235.ap-northeast-2.compute.amazonaws.com:5000 sudo cp /etc/gitlab/ssl/ec2-3-34-48-235.ap-northeast-2.compute.amazonaws.com.crt /etc/docker/certs.d/ec2-3-34-48-235.ap-northeast-2.compute.amazonaws.com:5000/ca.crt
  2. GitLab Runner에 제공할 인증서 복사

    sudo mkdir -p /etc/gitlab-runner/certs sudo cp /etc/gitlab/ssl/ec2-3-34-48-235.ap-northeast-2.compute.amazonaws.com.crt /etc/gitlab-runner/certs/ca.crt

GitLab Runner 활성화

  1. GitLab Runner를 Docker 서비스로 설치

    sudo docker run --rm -it -v /etc/gitlab-runner:/etc/gitlab-runner gitlab/gitlab-runner register Updating CA certificates... Runtime platform arch=amd64 os=linux pid=7 revision=1b659122 version=12.8.0 Running in system-mode. Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/): https://ec2-3-34-48-235.ap-northeast-2.compute.amazonaws.com --> URL 입력 Please enter the gitlab-ci token for this runner: XXXXXXXXXXX --> Gitlab 화면의 Runner Register용 Token 입력 Please enter the gitlab-ci description for this runner: [eb18856e13c0]: docker-runner --> runner 설명 입력 Please enter the gitlab-ci tags for this runner (comma separated): aws, docker --> Tag 입력 Registering runner... succeeded runner=FSMwkvLZ Please enter the executor: custom, docker, virtualbox, kubernetes, docker+machine, docker-ssh+machine, docker-ssh, parallels, shell, ssh: docker --> runner 동작 방식 입력 Please enter the default Docker image (e.g. ruby:2.6): ruby:2.6 --> default docker 이미지 입력 Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
  2. /etc/gitlab-runner/config.toml 파일 수정

    [runners.docker] ... volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"] pull_policy = "if-not-present"
  3. Runner 실행

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

호스트 OS에 대한 레지스트리 인증

Docker의 레지스트리 인증 설명서에 명시된 바와 같이 특정 버전의 Docker는 OS 레벨에서 인증서 체인을 신뢰해야합니다. 아래와 같이 설정해 줍니다.

cp /etc/gitlab/ssl/ec2-3-34-48-235.ap-northeast-2.compute.amazonaws.com.crt /etc/pki/ca-trust/source/anchors/ec2-3-34-48-235.ap-northeast-2.compute.amazonaws.com.crt update-ca-trust