[ DevOps ] Jenkins 기반의 CI/CD 환경 구축 (4) - Jenkins Image 구성

duck-ach·2024년 3월 7일
0

DevOps

목록 보기
5/7
post-thumbnail

개요

저번 포스팅에서 AWS를 이용한 Linux를 구성했고, Ubuntu에서 Docker와 Docker Compose를 구성해보았다.
이번에는 파이프라인(pipeline)의 핵심인 Jenkins를 구성 해보도록 하자.

🥸 Install Jenkins

우선 Docker Hub에 접속하여 Jenkins Image 파일을 찾아보도록 하자.

Docker Hub

Jenkins Image 파일

맨 위에 있는 Jenkins는 이미 DEPRECATED(End of Service)가 되어 있으며 6년전 이 마지막 업데이트 이기 때문에 두번째의 jenkins/jenkins를 선택해주었다.


Docker Pull Command로 간단하게 실행해서 컨테이너 이미지를 불러오는 방법이 있고, docker-compose를 활용하여 image에 대한 정보를 작성 후에 실행시켜 컨테이너 이미지를 띄우는 방법이 있다.

Docker Pull 방법은 간편하지만 실행할 때마다 port와 같은 정보들을 하나하나 입력해주어야 하는 불편함이 있다. Docker Compose 방식은 나중에 다른 시스템과 통합하기에도 편하고 유지보수에도 더 도움이 되기 때문에 docker-compose를 이용한 방식이 조금 더 권장된다.

나는 docker-compose를 활용한 방식을 사용해보겠다.

1. docker compose 작성 및 image 구동을 위한 폴더 생성

/ root 경로로 가서, docker라는 폴더를 생성해줄것이다.
그리고 그 안에 /docker/jenkins/jenkins_home/ 이라는 폴더도 생성해줄 것이다.

$ cd /
$ sudo mkdir docker
$ cd docker
$ sudo mkdir jenkins
$ cd jenkins
$ sudo mkdir jenkins_home
$ cd /
$ sudo chown 1000:1000 docker/ -R

2. docker-compose.yml 작성

$ cd /docker/jenkins/jenkins_home
$ vi docker_compose.yml
version: '3'
services:
    jenkins:
        container_name: jenkins # process name
        image: jenkins/jenkins  # jenkins/jenkins packaging version을 받겠다.
        ports:
          - "8080:8080" # port forwading
        volumes:
          - "/docker/jenkins/jenkins_home:/var/jenkins_home" # ubuntu 경로와 docker 경로
        networks:
          - net
networks:
    net:

3. docker-compose로 docker-compose.yml up 하기

이 과정을 통해 Docker Compose는 docker-compose.yml안에 정의된 모든 서비스를 시작한다.

$ sudo docker compose up -d

4. 최초 비밀키 알아내기

admin을 발급받기 위한 임시 비밀번호이다. 확인하고 어딘가에 잘 복붙해 둔다.

$ sudo docker logs -f jenkins

Docker에 image가 정상적으로 실행 되었는지 확인

docker ps는 실행중인 image를 나열하는 것이고, -a(all) 옵션이 붙으면 중지된 컨테이너 까지 모두 확인하는 명령어다.

$ docker ps

Jenkins Image 접속하기

방화벽 체크

docker를 구동시킨 8080에 접속을 하면 되어야 하는데 아무것도 연결되지 않는다. 이것은 방화벽을 체크하고 열어주어야 한다.

1. AWS EC2 Instance 관리에 간다.

Instance를 체크하고, 보안 탭에서 보안그룹으로 들어간다.

2. 인바운드 규칙을 설정해준다.

  • 인바운드(Inbound)란? 머신으로 들어오는 트래픽
  • 아웃바운드(Outbound)란? 머신에서 나가는 트래픽

인바운드 규칙 편집을 눌러준다.

SSH는 그대로 두고, 8080포트를 허용하기 위해 사용자지정 TCP를 선택해준다.

포트는 8080으로 하고, 소스는 DB와 같은 보안이 중요한 리소스를 보호하기 위해 접속할 수 있는 IP들을 제한할 수 있는 것인데 나는 어떤 IPv4든 접속이 가능하도록 Anywhere-IPv4를 선택 해 주었다. 그리고 규칙 저장을 눌러준다.


결과

profile
자몽 허니 블랙티와 아메리카노 사이 그 어딘가

0개의 댓글