구성도

Local(VSCode)에서 코드를 업데이트하면, 자동으로 EC2 서버에 코드를 동기화합니다.

SSH Key

생성

Jenkins 서버에서 원격 저장소인 Github, 원격 서버인 EC2와 연결 할 Key를 생성합니다.

Jenkins 서버 직접 접속 (POD)

$POD_NAME=kubectl get po -o json | jq '.items[0].metadata.name'
kubectl exec -it $POD_NAME -- /bin/bash

폴더 생성 (공유 스토리지 내에 생성)

# 공유 폴더로 이동
cd /var/lib/jenkins

# 폴더 생성
mkdir .ssh

SSH key 생성

ssh-keygen -C laminar@comtec.kr

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): ./.ssh/id_rsa

권한 변경

chown -R jenkins: .ssh
chmod 700 .ssh
chmod 600 .ssh/id_rsa .ssh/id_rsa.pub
Public Key

Public Key 복사

cat .ssh/id_rsa.pub

# Expected Output
# ssh-rsa AAAAB3NzaC1yc2EA ...
Private Key

Private Key 복사

cat .ssh/id_rsa

# Expected Output
#-----BEGIN OPENSSH PRIVATE KEY-----
#b3BlbnNzaC1rZXktdjEAAAAAB...

Node

EC2 생성

Jenkins에 빌드할 서버(Remote Server, = Target)를 추가합니다.

EC2 생성 (Amazon Linux 2)

EC2 접속

사용자 추가 (jenkins)

사용자 변경 (jenkins)

# 사용자 추가
sudo adduser jenkins

# 사용자 변경
sudo su - jenkins

폴더 및 파일 생성

권한 변경

Public Key 붙여넣기

# 폴더 생성
mkdir .ssh

# 권한 변경
chmod 700 .ssh

# 파일 생성
touch .ssh/authorized_keys

# 권한 변경
chmod 600 .ssh/authorized_keys

# Public Key 붙여넣기
echo ssh-rsa AAAAB3NzaC1yc2EA >> ~/.ssh/authorized_keys

사용자 변경 (jenkins -> ec2-user)

exit

Java 11 설치

NodeJS 16.x 설치

git 설치

# Java 11
sudo amazon-linux-extras install java-openjdk11

# Node
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
. ~/.nvm/nvm.sh
nvm install node
node -e "console.log('Running Node.js ' + process.version)"

# Expected Output
# Running Node.js v16.5.0

# Git
sudo yum install git -y

Jenkins Agent는 Java 기반으로 구동하여 Remote 서버에 Java를 설치합니다.

Credential

Jenkins 서버가 Node에 접속할 수 있도록 Node의 인증 정보를 저장합니다.

Manage Jenkins 선택

Manage Credentials 선택

(global) 선택

Add Credentials 선택

Kind - SSH Username with private key 선택

ID 입력 (ex: node01)

Username 입력 (ex: jenkins)

Private Key - Enter directly 선택

1.3에서 복사한 Private key 붙여넣기

OK 선택

추가

Manage Jenkins 선택

Manage Nodes and Clouds 선택

New Node 선택

Node 이름 입력 (ex: node01)

Permanent Agent 선택

Name 입력 (ex: node01)

Remote root directory 입력 (ex: /home/jenkins)

Launch method - Launch agents via SSH 선택

Host 입력 - EC2 Public IP

Credentials 선택 - 위에서 생성한 인증 선택

Host Key Verification Strategy - Non verifying Verification Strategy 선택

Save 선택

Status 선택

연결 확인 (아래처럼 보이면 성공!)

Credentials

Github

Github Repository가 Private인 경우 SSH 설정이 필요합니다.

오른쪽 위 초상화 선택

Settings 선택

왼쪽 메뉴 중 SSH and GPG keys 선택

New SSH key 선택