스프링 GCP 배포
온라인 도서 관리 프로그램을 Google Cloud Platform로 배포해보자.
Google에서 개발한 클라우드 컴퓨팅 플랫폼.
사용자가 클라우드 환경에서 애플리케이션을 개발, 배포 및 관리할 수 있도록 돕는 플랫폼.
Google 인프라에서 호스팅되는 가상 머신(VM)
(Compute Engine 인스턴스, 가상 머신 인스턴스 , VM 인스턴스, VM은 모두 같은 동의어)
cloud.google.com
GCP의 VM 인스턴스를 생성한 후, 로컬 컴퓨터와 연결할 것이다.
네트워크 프로토콜로, 안전한 통신을 위해 암호화를 사용하여 데이터와 명령을 전송
이 프로토콜은 RSA 보안 방식을 기반으로 하며, 공개 키(Public Key)와 개인 키(Private Key)를 활용하여
인증과 보안을 유지한다.
로컬 pc에서 Public Key를 생성하고 이를 GCP에 등록하여, 로컬 pc와 GCP의 VM 인스턴스 간 연결을 설정할 것이다.
스프링 GCP 배포 개요
- GCP 준비
- VM 인스턴스 생성 및 설정
- 고정 IP 및 방화벽 설정
- SSH key 생성 및 등록
- 로컬 pc에서 원격 VM 연결
- 배포
Google Cloud 가입
https://cloud.google.com
새 프로젝트 생성
생성한 프로젝트로 진입하기.
Computer Engine
> VM 인스턴스
> 인스턴스 만들기
머신 구성 설정
이름: 원하는 이름 (ex. instance)
리전: 지역 (ex. 서울)
머신 유형: e2-micro (용도에 맞게)
OS 및 스토리지 설정
운영체제:
Ubuntu
네트워킹 설정
방화벽:
HTTP 트래킹 허용
,HTTP 트래킹 허용
보안 설정
액세스 범위:
모든 Cloud API에 대한 전체 액세스 허용
생성된 VM 인스턴스 확인
외부 IP는 배포에 쓰이므로 메모해둔다.
VM 인스턴스 생성 완료!
VM 인스턴스
> SSH
sudo passwd
sudo su
sudo apt update
sudo apt-get install openjdk-21-jre
sudo apt-get install openjdk-21-jdk
java --version
인스턴스가 재시작돼도 동일한 ip로 접속할 수 있도록 고정 IP를 설정하자.
VPC 네트워크
> IP 주소
> 외부 고정 IP 주소 예약
고정 주소 예약
이름: 원하는 이름 (ex. static-ip)
네트워크 서비스 계층:표준
연결대상:이전에 생성한 VM 인스턴스
선택
생성된 외부 고정 IP 확인
고정 IP 설정 완료!
spring boot의 기본 포트인 8080포트를 열어주기 위해 방화벽 규칙을 생성하자.
VPC 네트워크
> 방화벽
> 방화벽 규칙 만들기
방화벽 규칙 만들기
이름: 원하는 이름 (ex. springboot-8080)
소스 IPv4 범위:0.0.0.0/0
프로토콜 및 포트:TCP
포트8080
모든 IP주소에서 오는, TCP 프로토콜을 사용하고 목적지 포트 번호가 8080인 트래픽을 허용한다는 의미이다.
생성된 방화벽 규칙 확인
방화벽 규칙 생성 완료!
로컬 pc에서 VM 인스턴스에 접근하기 위해 로컬 pc에서 SSH key를 생성하자.
PS C:\WINDOWS\system32> cd ..
PS C:\WINDOWS> cd ..
PS C:\> cd Users
PS C:\Users> cd [username]
.ssh
폴더 생성PS C:\Users\[username]> mkdir .ssh
PS C:\Users\[username]> cd .ssh
PS C:\Users\[username]\.ssh> ssh-keygen -t rsa -f [key name] -C [GCP account]
예) PS C:\Users\[username]\.ssh> ssh-keygen -t rsa -f gcp_key -C abcd@gmail.com
PS C:\Users\[username]\.ssh> type [key name].pub
생성된 public key가 출력된다. 출력된 값은 다음 단계에서 필요하니 메모해둔다.Compute Engine
> 메타데이터
> 수정
> SSH 키
로컬 pc에서 생성한 SSH public key 입력
로컬 pc Windows powershell에서 등록 확인
ssh -i /Users/[user name]/.ssh/[key name] [GCP 계정 앞부분]@[VM 외부 IP]
예)
ssh -i /Users/[user name]/.ssh/[key name] abcd@10.20.30.40
VS Code에서 확장프로그램 Remote - SSH
설치
Remote Explorer 아이콘 > +
버튼
좌측 패널에 생성된 Remote Explorer 아이콘 클릭
(생성되지 않으면 우클릭해서 선택)
ssh [GCP 계정 앞부분]@[VM 외부 ip]
입력 후 엔터
config 파일 열기
config 파일 수정
Host: 원하는 이름
HostName: VM 외부 IP
User: GCP 계정 앞부분
IdentityFile: 키 파일 경로
Remote Explorer
> SSH
> VM 외부 IP
> Connect
> SSH key 비밀번호 입력
연결 확인
터미널을 열어서 VM 인스턴스에 연결되면 연결 성공
.jar
생성 및 이동IntelliJ
> 우측 패널 gradle 로고
> 프로젝트명
> Tasks
> build
> bootJar
프로젝트 폴더 build > libs 경로에 .jar 파일 생성 확인
VSCode
> (SSH 연결 후)
> EXPLORER
> Open Folder
.jar
파일 이동
VS code 터미널에서 스프링 실행
nohup java -jar [파일명].jar
Java로 작성된 애플리케이션을 실행하면서 터미널 세션 종료와 무관하게 계속 실행되도록 설정하는 명령어.
표준 출력과 표준 에러 출력이 nohup.out 파일에 저장된다.
실행 확인
nohup.out을 열면 스프링 부트가 실행된 것을 확인할 수 있다.
브라우저에서 http://[VM외부IP주소]:8080 으로 접속
배포 완료!
developerkkyu37.tistory.com
developerkkyu37.tistory.com
velog.io/@hyeri_hello
velog.io/@hyeri_hello
velog.io/@chaejm55