EC2 배포 환경 설정
1. 타임존 변경
$ sudo timedatectl set-timezone Asia/Seoul # 서울로 설정
$ timedatectl # 확인
Bash
복사
2. Docker 설치
$ sudo apt update
$ sudo apt install -y ca-certificates curl gnupg lsb-release
Bash
복사
ec2 인스턴스가 설치할 수 있는 소프트웨어 업데이트 + Docker를 안전하게 설치하기 위한 기본도구 설치
$ sudo install -m 0755 -d /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Bash
복사
docker의 공식 gpg(보안) 키를 다운로드하여 시스템이 신뢰하는 키 목록에 추가
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Bash
복사
apt 가 Docker 패키지를 다운로드할 공식 Docker 서버 주소를 시스템에 등록
$ sudo apt update
$ sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Bash
복사
위에서 등록한 서버 주소로부터 설치가능한 패키지를 가져옴
그 다음 도커 설치(docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin)
$ sudo usermod -aG docker $USER
Bash
복사
현재 사용자에게 Docker 명령어 권한을 부여.
3. 루트 권한 없이 Docker 실행
// 재로그인 후 실행
$ newgrp docker
Bash
복사
4. Docker 서비스 시작 및 부팅 시 자동 시작 설정
직접 타이핑해야
$ sudo systemctl start docker # Docker 서비스 즉시 시작
$ sudo systemctl enable docker # 서버 부팅 시 Docker가 자동으로 실행되어 컨테이너가 자동으로 구동되도록 설정
$ sudo systemctl status docker # 도커 상태 확인
Bash
복사
5. 방화벽 설정
cd /home/ubuntu && mkdir jenkins-data
sudo ufw allow 22/tcp
sudo ufw allow 8080/tcp
sudo ufw enable
sudo ufw status
Bash
복사
•
22/tcp ssh(원격접속을 위해 포트열기)
6. 젠킨스 도커 이미지 생성 + 젠킨스 실행용 도커 컴포즈 파일 생성
Dockerfile
FROM jenkins/jenkins:lts
USER root
RUN apt-get update && apt-get install -y curl
RUN curl -fsSL https://download.docker.com/linux/static/stable/x86_64/docker-26.1.4.tgz | tar --strip-components=1 -xz -C /usr/local/bin docker/docker
RUN mkdir -p /usr/local/lib/docker/cli-plugins
RUN curl -SL https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
RUN chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
USER jenkins
Bash
복사
도커 공식 이미지로부터 젠킨스를 실행시켜도 되지만, 젠킨스안에서 도커 명령어를 실행시키기 위해서 도커 이미지를 커스터마이징 하여 만들어둔다.
docker-compose.yml
version: '3.8'
services:
jenkins:
build: .
container_name: jenkins-server
restart: always
ports:
- "9090:8080"
- "50000:50000"
volumes:
- jenkins_data:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
environment:
- TZ=Asia/Seoul
volumes:
jenkins_data:
Bash
복사
사전에 만든 젠킨스 도커 이미지를 컨테이너에 띄우고 볼륨을 연결하는 도커 컴포즈 파일 생성
docker compose up
docker logs jenkins
Bash
복사
젠킨스를 도커로 실행시킨다. 그 다음 젠킨스 로그를 확인하여 임시 비밀번호를 확인한다.
6.1 젠킨스 도커 공식 이미지 다운받고 컨테이너 실행는 방법(비선호)
7. 젠킨스 설정 & 접속
7-1. 플러그인 설치 속도향상을 위한 설정
docker stop jenkins
docker ps -a
Bash
복사
설정을 위해 도커 컨테이너 잠시 중지하기
cd /home/ubuntu/jenkins-data/
mkdir update-center-rootCAs
wget https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/rootCA/update-center.crt -O ./update-center-rootCAs/update-center.crt
Bash
복사
젠킨스 플러그인을 설치하기 위한 사이트를 접속할 때 가까운 미러 사이트로 변경하여 설치하면 속도가 빠릅니다. CA 인증서를 다운로드합니다.
sudo sed -i 's#https://updates.jenkins.io/update-center.json#https://raw.githubusercontent.com/lework/jenkins-update-center/master/updates/tencent/update-center.json#g' /home/ubuntu/jenkins-data/hudson.model.UpdateCenter.xml
sudo docker restart jenkins
Bash
복사
그리고 업데이트 센터의 주소를 변경합니다.(중국의 텐센트 클라우드를 사용한 미러사이트입니다)
변경 후 도커 재시작을 해주어 변경사항을 적용해줍니다.
hudson.model.UpdateCenter.xml
ec2의 젠킨스 웹으로 접속하기 앞서 9090포트를 인바운드 규칙에서 오픈해줘야 접속이 가능합니다.
젠킨스 로그에서 비밀번호를 확인하고 사용합니다.
제안해주는 플러그인으로 일단 설치를 진행합니다.
7-2. 보안 설정
/home/ubuntu/jenkins-datat/config.xml 파일에 직접 회원가입하는 부분을 비활성화 합니다.(disableSignup 을 true 로 하여 직접 회원가입 비활성화)
젠킨스 웹에 접속한 후 우측 톱니바퀴>security 를 눌러 젠킨스 보안 관리 페이지로 들어옵니다. 아래 설정을 진행합니다. 임의로 계정생성이 불가해지며 항상 접속 시 로그인을 하도록 합니다.
•
security realm : Jenkins’ own user database
•
authorization : Logged-in user can do anything
◦
Allow anonymous read access : OFF























