MSA 세팅 시작 [1] Nginx와 Jenkins 설치
📘서버는 raspberry4
aws나 azure 등의 cloud 기반 서버가 아닌 raspberry를 사용하는 이유는 무료 서버를 사용해본 사람들이라면 모두 공감하는 것이 서버의 용량과 ram의 크기가 너무 작다...
aws 무료 인스턴스의 경우 gateway까지만 세팅했는데 서버 터짐...
네이버 클라우드 플랫폼의 경우 크레딧을 제공해줘서 어느정도 성능을 세팅할 순 있지만 크레딧 모두 사용 후 매달 금액을 내야하는 부담이...ㅜㅜ 서버의 세팅은 docker 이미지화해서 올려둘 것이기 때문에 추후에 cloud 서버로 이전하는건 어렵지 않을거란 생각에 (아마 1주일 열심히 하면 되지 않을까?...) 우선 집에 있는 라즈베리로 진행하려고 한다.
라즈베리의 스펙은
https://www.devicemart.co.kr/goods/view?no=12234534
해당 제품의 4G짜리로 초기 세팅을 시작한다.
라즈베리는 윈도우, 맥과 다른 ARM CPU를 사용하여 Docker의 오피셜 이미지를 사용하거나 window나 mac에서 소스 작업하여 Dockerfile로 작성하여 이미지를 hub에 푸시했을 경우 포맷이 다르다는 오류로 실행이 안되는 경우가 매우 매우 많으므로 될수 있다면 AMD CPU를 사용하는 컴퓨터로 세팅하기를 추천한다...ㅜㅜ 하지만 전기세는 감당을 해야겠지...ㅜ
🔨OS는 Linux Ubuntu 20.4 LTS
기존의 라즈베리를 뒀었지만 여러개의 디비서버나 Docker를 테스트하면서 많은 docker image들 등 모두 찾아 지우기 귀찮고 또 여러 에러를 직접 부딪히면서 해보고 싶어서 아예 포맷하고 처음부터 하기 위해서 raspberry imager를 통해 포맷과 OS 설치를 동시에 진행했다.
초기 비밀번호까지 설정해주고 서버 시작!
🐋Docker 설치
apt update
apt-get update
를 통해 최신화 해주고
docker를 설치해보자
apt install docker.io -y
명령어면 도커 설치가 끝난다.
예전에는 이것저것 할게 많았는데 되게 간단해져서 좋아진거 같다.
apt install docker-compose -y
docker-compose까지 모두 설치해놓자
내가 구성하려는 방법은 다음 그림과 같다. Docker로 Jenkins 서버를 띄우고 Jenkins에서 git으로 소스를 pull한 뒤 패키징하여 각 Microservice에서 docker hub를 통해 이미지를 다운받고 실행시켜서 컨테이너들을 관리하려고 한다.
Docker Network 생성하기
docker network create --gateway 172.18.0.1 --subnet 172.18.0.0/16 msa
gateway로 172.18.0.1를 사용하고하고 host는 ~16까지로 지정했다.
🤵♂️Jenkins Server 설치
docker-compose.yml을 작성한다.
version: '3.7'
services:
jenkins:
container_name: jenkins
image: mlucken/jenkins-arm
volumes:
- ./data:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 8080:8080
privileged: true
user: root
networks:
default:
external:
name: msa
다음과 같이 작성해서 8080 포트로 뚫어서 사용한다.
그 후에는 jenkins 초기 세팅 글을 참고해서 진행하면 된다.
✖️Jenkins 추가 설정
jenkins를 최신으로 업데이트하거나 필요 plugin을 추가로 설치한 뒤
jenkins의 세팅을 하기위해 Global Tool Configuration으로 와서 jdk
git
Gradle
설정을 진행하자!
👉JDK
Oracle 계정 정보를 입력한 뒤 다음과 같이 설정했다.
👉git & gradle
다음과 같이 세팅한 뒤 저장한다.
그리고 git hub 접근을 위해 다음 설정으로 들어간다.
설정 정보를 입력해주고
git 정보를 입력해서 script를 만들어내어서
pipeline {
agent any
stages {
stage('clone') {
steps {
echo 'Clone'
git branch: 'main', credentialsId: '8e8302f1-6b98-4bfe-9981-2e027e49089b', url: 'https://github.com/juno-choi/jayeon-config.git'
}
}
}
}
내에 다음과 같은 파이프라인을 작성했다.
빌드를 실행하면 정상 실행된 것을 확인할 수 있다.
성공한 로그를 확인하면
git 파일을 해당 경로에서 실행한 것을 확인할 수 있다.
container 내부로 들어가서 해당 경로를 확인하면 다음과 같이 clone이 정상 실행된 것을 확인할 수 있다.
다음 진행을 위해 jenkins 서버 내에 Docker를 설치해줬다.
apt update apt install docker.io -y
다음 진행을 위해 java도 설치해줬다.
apt-get update apt-get install openjdk-11-jdk -y
이제 파이프 라인을 docker hub에 push까지 하도록 수정해보자.
pipeline {
agent any
stages {
stage('CLONE') {
steps {
git branch: 'main', credentialsId: '8e8302f1-6b98-4bfe-9981-2e027e49089b', url: 'https://github.com/juno-choi/jayeon-config.git'
}
}
stage('CLEAN') {
steps {
sh 'cd /var/jenkins_home/workspace/config'
sh 'chmod +x gradlew'
sh './gradlew clean'
}
}
stage('BUILD') {
steps {
sh './gradlew build'
}
}
stage('HUB PUSH') {
steps {
sh 'docker build -t ililil9482/config-server:1.0 .'
sh 'docker push ililil9482/config-server:1.0'
}
}
}
}
다음과 같이 수정해주었고
정상 실행되었다.
허브에도 정상적으로 올라갔다. 이제 config 서버는 image로 땡겨서 서버를 켜주면 된다.
✅Nginx Server 설치
nginx는 지정해준 url을 통해 도메인을 붙여줄 수 있게끔 해주는 서버로 사용하려고 한다. jenkins 서버
와 web 서버
api 서버
를 포트가 아닌 도메인으로 구분해서 사용하면 더 편하게 접근할 수 있기 때문에 nginx 서버를 사용하여 세팅해보자.
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
upstream jenkins {
server jenkins:8080;
}
server {
listen 80;
server_name 'url';
location / {
proxy_pass http://jenkins;
}
}
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
#include /etc/nginx/conf.d/*.conf;
}
nginx.conf
파일을 다음과 같이 작성하고
#Dockerfile
FROM nginx:latest
COPY nginx.conf /etc/nginx/conf.d/nginx.conf
CMD ["nginx", "-g", "daemon off;"]
EXPOSE 80
Dockerfile
을 작성해준다.
docker build -t my-nginx:1.0 .
이미지 만들어준다.
정상적으로 이미지 등록된거 확인하고
version: '3.7'
services:
nginx:
container_name: nginx
image: my-nginx:1.0
ports:
- 80:80
networks:
default:
external:
name: msa
docker-compose로 작성해서 실행해보자!
설정한 url로 접근이 가능한것을 확인할 수 있었다.
Author And Source
이 문제에 관하여(MSA 세팅 시작 [1] Nginx와 Jenkins 설치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ililil9482/MSA-세팅-시작-1-Raspberry와-Ubuntu저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)