3 분 소요

GCP 프로젝트 생성부터 jenkins 설치까지는 이전 글에서 다뤘다.

우선, 이전에 만든 jenkins 인스턴스에서 [유사하게 만들기]로 web 인스턴스를 생성하자.
생성 후에는 외부 고정 IP도 할당하자.
(기존에 있던 instance-1은 ubuntu 였으므로 일단 중지해놓자.)

스크린샷 2022-10-13 오후 9 31 17
현재 실행 중인 인스턴스는 아래와 같다.

  • jenkins: 젠킨스 서버, Centos7
  • web: 배포 서버, Centos7

젠킨스 서버에서는 Docker를 사용하지 않고,
배포 서버에서는 Docker를 사용할 것이다.


0. 시나리오

이 글을 참고했다.

스크린샷 2022-10-13 오후 9 32 22

  1. 코드를 작성한다.
  2. 깃헙에 Push한다.
  3. Webhook이 걸려 젠킨스에게 Job을 실행하라고 한다.
  4. 젠킨스가 Build해준 결과를 배포 서버에 넘긴다.
  5. 배포 서버에서 컨테이너를 실행해 자동 배포한다.

1. 젠킨스 서버 (jenkins)

이 글을 참고했다.

1) 메타데이터 ssh 접근 설정

키 생성과 등록은 이전 글에서 이미 진행했다.

2) 젠킨스 서버 구동

젠킨스 인스턴스에 SSH 접속한 뒤에 아래 커맨드를 실행한다.

$ sudo service jenkins start systemctl enable jenkins

http://[젠킨스 서버 외부IP]:9090으로 웹 브라우저에 접속한다.

3) Publish Over SSH

이 글을 참고했다.

설치

스크린샷 2022-10-13 오후 9 38 50

스크린샷 2022-10-13 오후 9 45 30

위 플러그인을 설치한다.

설정

먼저, 공개키와 개인키를 확인해보자.

# 공개키 확인
$ cat .ssh/id_rsa.pub

# 개인키 확인
$ cat .ssh/id_rsa # 복사해두자!

이때 확인한 개인키를 복사해두자!

이제 Publish Over SSH 설정을 해보자.
스크린샷 2022-10-13 오후 10 15 58

[Jenkins 관리 > 시스템 설정]에 들어간다.
맨 아래 보면 Publish Over SSH 관련 설정이 있다.
아래와 같이 설정해주었다.
스크린샷 2022-10-13 오후 10 27 13

스크린샷 2022-10-13 오후 10 26 35

각각의 입력은 아래의 과정을 거치면 된다.

  1. 아래의 그림에서 Name은 가급적이면 GCP에서 인스턴스의 이름과 동일하게 지어주는것이 좋다. (나는 배포 인스턴스의 이름을 적었다.)
  2. Hostname은 IP를 적어주면 되는데 워커 인스턴스가 젠킨스와 같은 네트워크상에 있으면 내부IP를 사용해도 된다. (나는 내부 IP를 사용했다.)
    (같은 Region에 내부 IP가 비슷하다면 같은 네트워크)
  3. Username은 인스턴스와 연결된 Username에 대한 정보이다. GCP에서 로그인할때 사용하는 계정 ID를 적어주면 된다.
  4. Remote Directory는 홈 디렉토리를 사용했다. 홈 디렉토리 정보는 홈 경로(~)에서 스크립트 명령어 ‘pwd’를 입력하면 확인할 수 있다.
  5. Test Configuration을 클릭하여 정상적으로 설정이 되었는지 확인할 수 있다. 잘 되었다면 왼쪽 하단에 ‘Success’ 라는 출력을 확인할 수 있다.
  6. 모든 입력이 끝난 후에는 저장을 해주면 된다

3) Jenkins와 Github Webhooks를 이용하여 배포 자동화 하기

이 글을 참고했다.

새로운 Item 생성

스크린샷 2022-10-13 오후 10 56 51
item name을 적고(나는 배포할 프로젝트의 이름을 적었다), Freestyle project를 선택하자.

Github와 연동

Jenkins 내 Git 경로 설정

Jenkins 내 Git 경로는 아래에서 설정한다.

Dashboard 메뉴 중 Jenkins 관리 선택
Global Tool Configuration 선택
하단의 Git 설정 중 Path to Git executable에 앞서 확인 한 git.exe의 전체 경로 붙여넣기 후 Save
Jenkins 내 Git 경로가 제대로 설정되어 있지 않을 경우 아래의 에러가 빨간색 글씨로 나타나 있을 것이다.

스크린샷 2022-10-13 오후 11 37 50

private repository 등록

이 글을 참고했다.

나는 private repository에 프로젝트가 있으므로 아래 설정을 해주어야한다.

젠킨스 인스턴스에서 이전에 생성한 공개키, 비밀키를 사용하면 된다.

# 공개키 확인
$ cat .ssh/id_rsa.pub

# 비밀키 확인
$ cat .ssh/id_rsa

생성한 공개키를 key자리에 등록하면 아래와 같이 Deploy key를 생성할 수 있다. 스크린샷 2022-10-13 오후 11 10 17

스크린샷 2022-10-13 오후 11 12 37

스크린샷 2022-10-13 오후 11 14 12

스크린샷 2022-10-13 오후 11 14 30

스크린샷 2022-10-13 오후 11 14 49

스크린샷 2022-10-13 오후 11 18 21

이 때, 비밀키를 복사 후 붙여넣기 하자. 스크린샷 2022-10-13 오후 11 20 58
credential을 생성했다!

github 연동

이런 에러가 발생한다면?
스크린샷 2022-10-13 오후 11 28 48

$ /usr/bin/git ls-remote -h git@github.com:minju412/docker-test.git HEAD

=================

3) Global Config

JDK

Git

4) System Config

Github Repository

Github

Publish Over SSH

5) Create Jenkins’ Job

6) Git Clone

7) Build

8) Deploy

2. 배포 서버 (web)

1) Docker 설치

이 글을 참고했으며, 공식 사이트를 참고해도 된다.

# yum-utils 업데이트
$ sudo yum install -y yum-utils

# Docker-ce 저장소 추가
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

# 도커 엔진 설치
$ sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 도커 엔진 실행 및 서비스 등록
$ systemctl start docker
$ systemctl enable docker
$ systemctl status docker

2) Dockerfile 생성

3) init.sh 작성

4) Github에 Push

5) 자동 배포 되었는지 확인

2. 배포 서버에 도커 설치

==========================

web

인스턴스에 도커 설치하기

이 글을 참고했다.

$ sudo apt-get update

# 필수 패키지 설치
$ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

# GCP Key 인증
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# finger pring 확인
$ sudo apt-key fingerprint 0EBFCD88

# docker repository emdfhr
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

# docker 설치
$ sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io

$ docker -v

$ sudo systemctl enable docker && service docker start

# 권한 부여
$ sudo usermod -aG docker $USER

spring boot 배포하기

이 글을 참고했다.

Ref.



💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기

태그:

카테고리:

업데이트: