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 활성화
/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
사설 인증서 생성
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
변경 사항 적용
sudo gitlab-ctl reconfigure
GitLab Container Registry 활성화
/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"
변경 사항 적용
sudo gitlab-ctl reconfigure
GitLab Runner 설치
패키지 다운로드
curl -LJO https://gitlab-runner-downloads.s3.amazonaws.com/latest/rpm/gitlab-runner_amd64.rpm
시스템 패키지 설치
rpm -i gitlab-runner_amd64.rpm
Docker 데몬이 Registry와 GitLab Runner를 신뢰하도록 사설 인증서 매칭
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
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 활성화
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!
/etc/gitlab-runner/config.toml 파일 수정
[runners.docker] ... volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"] pull_policy = "if-not-present"
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