[GCP] GCP(Google Cloud Platform)에서 인스턴스 생성 후 jenkins 설치
서버를 배포하던 중, AWS 프리티어의 사양이 부족해 원활하게 수행되지 않는 문제가 발생했다.
같은 문제가 발생했다는 글도 발견했다.
따라서 GCP를 이용해보려고 한다.
구글 클라우드에 가입하는 법은 이 글을 참고하자.
참고🌟
미리 말하자면, spring boot 앱을 배포하기 위해서 총 두 개의 인스턴스를 만들 예정이다.
하나는instance-1
이라는 이름의 배포할 spring boot 프로젝트 용 인스턴스이고,
다른 하나는instance-jenkins
라는 이름의 jenkin 용 인스턴스이다.
이 글에서는 두 개의 인스턴스 생성 후instance-jenkins
에 jenkins를 설치해보는 것까지 다룬다.
(매우 긴 Trouble Shooting 과정이 나올 예정이다..😱)
1. 리눅스 인스턴스 생성하기
- 리전: 사우스캐롤라이나(us-east1)
- 부팅 디스크
- 운영체제: Ubuntu
- 버전: Ubuntu 20.04 LTS
- 부팅 디스크 유형: 표준 영구 디스크
- 크기: 30 - 방화벽
- HTTP 트래픽 허용
- HTTPS 트래픽 허용
생성 완료
“브라우저 창에서 열기”를 클릭하면 바로 ssh 접속을 할 수 있다.
참고
무료 서버이기 때문에 과금의 우려는 없지만,
아래 블로그에 혹시나 과금이 발생했을 경우 메일로 알림을 받을 수 있도록 설정하는 방법이 나와있다.
필요한 경우에 참고하자!
https://wildeveloperetrain.tistory.com/154
1) 외부 IP 고정
-
생성된 인스턴스에서 맨 오른쪽 점 세 개를 클릭한 뒤, [네트워크 세부정보 보기]를 클릭한다.
-
[IP 주소 > 외부 IP 주소 > 외부 고정 주소 예약]을 클릭한다.
-
아래와 같이 연결 대상에 방금 만든 인스턴스를 지정한 뒤 [예약]을 클릭힌다.
2) 방화벽
이 글을 참고했다.
포트를 열어주어야 한다
위에 사진처럼 방화벽 규칙을 만든다.
그리고 방금 만든 인스턴스에 적용까지 해주어야 한다!
이제 [유사하게 만들기]를 통해 jenkins 용 인스턴스를 하나 더 만들자.
그리고 이전처럼 고정 IP와 방화벽 설정까지 해준다. (“비슷하게 만들기”로 생성하면 방화벽은 저절로 설정되어 있을 것이다.)
2. instance-jenkins
1) 메타데이터 ssh 접근 설정
이 글을 참고했다.
jenkins와 web이 소통할 수 있도록 ssh public key를 설정하는 과정이다.
instance-jenkins
에 SSH 접속한 뒤, 아래 커맨드를 실행하자.
# ssh-keygen을 통해 public/private key 생성
$ ssh-keygen -t rsa # 엔터 세 번 입력
# 복사를 위해 publickey 출력
$ cat .ssh/id_rsa.pub # 출력 값을 복사하자.
이제 GCP로 돌아와, 아래 사진에 보이는 [메타데이터 > SSH 키 > SSH 키 추가]를 클릭하자.
그리고 아까 복사한 값을 붙여넣고, 키를 추가한다.
publickey를 메타데이터에 등록하면 모든 인스턴스에 publickey가 공유되어 인스턴스끼리 접근이 가능해진다.
그럼 이제 instance-1
에 접근해보자.
# 형식: ssh -i [instance name] [내부 ip]
$ ssh -i instance-1 10.178.0.3
이후 유저를 보면, instance-1
으로 전환되는 것을 확인할 수 있다.
exit
명령어를 입력하면 다시 instance-jenkins
로 돌아온다.
2) jenkins 설치 및 구동
instance-jenkins
에서 아래 커맨드를 실행하자.
# jenkins 구동을 위한 jdk 설치
$ sudo apt-get install openjdk-11-jdk -y
# repository key 설정
$ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
# repository 목록 갱신
$ sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
$ sudo apt-get update
# 젠킨스 설치
$ sudo apt-get install jenkins -y
Trouble Shooting 🔥
맨 마지막에 젠킨스를 설치할 때 다음과 같은 에러가 발생했다.
시도 1) 포트 변경
아래 커맨드로 포트 번호를 8080에서 9090으로 변경했다.
$ sudo vi /etc/init.d/jenkins
$ sudo vi /etc/default/jenkins
아직 해결되지 않았다..
우선 바꾼 포트 번호는 그대로 두었다.
시도 2) PATH 추가
이번에는 java 경로를 추가해보자.
먼저, 아래 커맨드를 통해 java 경로를 확인하자.
$ update-alternatives --list java
# 출력: /usr/lib/jvm/java-11-openjdk-amd64/bin/java
이제 아래 커맨드로 파일을 수정하자.
(readonly 파일이라 sudo 권한으로 수정해야한다.)
$ sudo vi /etc/init.d/jenkins
PATH=/usr/lib/jvm/java-11-openjdk-amd64/bin:/bin:/usr/bin:/sbin:/usr/sbin:
시도 3) java 버전 변경: 11 -> 8
그대로 에러가 계속 발생해서 이번에는 java의 버전을 11에서 8로 바꿔보았다.
# 기존 java 제거
$ sudo apt-get purge openjdk*
# 삭제 확인
$ java -version
# java8 설치
$ sudo apt-get install openjdk-8-jdk -y
# 버전 확인
$ java -version
이제 아까 java 경로에서 11을 8로 바꿔주자.
PATH=/usr/lib/jvm/java-8-openjdk-amd64/bin:/bin:/usr/bin:/sbin:/usr/sbin:
그래도 안된다…
시도 4) 또 포트 변경
구글링 하던 중, 포트 번호를 한 군데 더 바꿔야한다는 글이 있었다.
$ sudo vi /lib/systemd/system/jenkins.service
역시 기존 8080에서 9090으로 바꿨다.
그래도 안된다…
시도 5) java 버전 변경: 8 -> 11
다시 java 버전을 11로 변경하고 path도 변경했다ㅠ
$ sudo apt remove openjdk-8-jdk
# 기본 자바를 openjdk-11로 설정
$ sudo update-java-alternatives --set java-11-openjdk-amd64
시도 6) 환경변수 설정
echo $JAVA_HOME
커맨드를 입력해봤더니, 환경변수 설정이 안되어있길래, 이번에는 환경변수 설정을 해보자
먼저, 아래 커맨드를 통해 java 경로를 확인하자.
출력되는 경로에서 맨 마지막 /bin/java
를 제외하고 복사하자.
$ update-alternatives --list java
# 출력: /usr/lib/jvm/java-11-openjdk-amd64/bin/java
$ sudo vi /etc/environment
# 추가: JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
# 변경 사항 적용
$ source /etc/environment
# 변경 확인
$ echo $JAVA_HOME
또 안된다..ㅜㅜ
시도 7) 처음부터 다시
# 젠킨스 저장소 키 설정
$ wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
# 젠킨스 저장소 목록 갱신
$ sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list'
# 설치목록 최신 갱신
$ sudo apt-get update
# Java Install
# $ sudo apt-get install openjdk-11-jdk # 이거는 빼고 했다.
# Jenkins Install
$ sudo apt-get install jenkins
이런 식으로 나왔는데, 기동이 되지 않아 상태를 확인해봤더니 아래와 같았다.
초기 비밀번호(initialAdminPassword
)는 생성되었는데 기동이 되지 않는다..
설치를 다시 해보니 처음과 같은 에러가 발생한다..
시도 8) PATH 삭제
예전에는 PATH를 추가하지 않아도 됐었던 같아서 주석처리 해보았다.
시도2
를 보고 하자.
이런 에러가 발생해 다시 주석을 해제했다.
시도 9) 이미지를 바꿔 jenkins
인스턴스 다시 생성 -> 성공 👍
이 글을 참고했다.
기존에는 Ubuntu 20.04 LTS 였는데, Centos 7로 다시 만들었다.
이번에는 ubuntu가 아니라 centos 이기때문에 커맨드가 약간 달라진다.
# jdk 설치 및 설정
$ sudo yum list java-1.8.0-openjdk-devel*
$ sudo yum install java-1.8.0-openjdk-devel.x86_64
# 설치된 경로와 버전 확인
$ which javac /usr/bin/javac
$ readlink -f /usr/bin/javac /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64/bin/javac
# JAVA_HOME 구성
$ sudo vi /etc/profile
# 맨 하단에 아래 명령어 추가
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64 PATH=$PATH:$JAVA_HOME/bin export PATH
# 변경사항 적용
$ source /etc/profile
# 버전 확인
$ echo $JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64
# 출력: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64
# wget 설치
$ sudo yum install wget -y
# MAVEN_HOME 구성
$ sudo vim /etc/profile
# 맨 하단에 아래 명령어 추가
export MAVEN_HOME=/usr/local/apple/Tools/apache-maven-3.6.3 PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin export PATH
# 변경사항 적용
source /etc/profile
# 버전 확인
$ echo $MAVEN_HOME /usr/local/apple/Tools/apache-maven-3.6.3
# git 설치
sudo yum install git
# yum repository 사용을 위해 public key를 등록
$ sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
$ sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
# jenkins 설치
$ sudo yum install jenkins
이제 방화벽 설정을 하자.
…
포트를 변경하자. (8080 -> 9090)
$ sudo vi /etc/sysconfig/jenkins # JENKINS_PORT="9090"
$ sudo vi /lib/systemd/system/jenkins.service # Environment="JENKINS_PORT=9090"
# 방화벽 설정
$ sudo firewall-cmd --permanent --zone=public --add-port=9090/tcp
$ sudo firewall-cmd --reload
# jenkins 시작
$ sudo service jenkins start systemctl enable jenkins
# $ sudo systemctl daemon-reload
# $ sudo systemctl start jenkins
# $ sudo systemctl enable jenkins
에러 발생..
시도 1) java 경로 추가
$ sudo vi /etc/init.d/jenkins
# 아래 path 추가
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64
맨 아래 추가했다.
그러나 실패했다.
시도 2) java installation folder에 권한 부여
$ cd /usr/lib
$ sudo chmod 755 jvm
# 홈으로 이동
$ cd
$ sudo systemctl start jenkins
이번에도 실패했다.
시도 3) java 다른 버전 설치 (8 -> 11)
# 설치할 수 있는 버전 확인
$ sudo yum list java-11-openjdk
# 설치
$ sudo yum install java-11-openjdk.x86_64
# 기본 자바 선택
$ sudo update-alternatives --config java
설치된 경로는 아래와 같다.
/usr/lib/jvm/java-11-openjdk-11.0.16.1.1-1.el7_9.x86_64/bin/java
이제 JAVA_HOME을 설정하자.
# JAVA_HOME 구성
$ sudo vi /etc/profile
# 맨 하단에 JAVA_HOME을 아래 커맨드로 변경
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.16.1.1-1.el7_9.x86_64 PATH=$PATH:$JAVA_HOME/bin export PATH
# 변경사항 적용
$ source /etc/profile
# path 추가
$ sudo vi /etc/init.d/jenkins
# 아래 두 개 path 추가
/usr/lib/jvm/java-11-openjdk-11.0.16.1.1-1.el7_9.x86_64
/usr/lib/jvm/java-11-openjdk-11.0.16.1.1-1.el7_9.x86_64/bin/java
# jenkins 시작
$ sudo service jenkins start systemctl enable jenkins
드디어 성공했다!!!
jenkins 설치 및 구동 성공 과정
마침내 jenkins 구동에 성공했다…
나중을 위해 한 일들을 정리해보자.
- centos 7 인스터스 생성
- 외부 고정 IP 할당
- openjdk-11 설치 및 기본 자바로 설정
- JAVA_HOME
/etc/init.d/jenkins
에 java path 추가- wget 설치
- MAVEN_HOME
- git 설치
- public key 등록
- jenkins 설치
- (gcp 홈에서) 9090 포트 열기
/etc/sysconfig/jenkins
,/lib/systemd/system/jenkins.service
9090으로 포트 변경- 방화벽 설정
- jenkins 구동
# jdk 설치할 수 있는 버전 확인
$ sudo yum list java-11-openjdk
# jdk 설치
$ sudo yum install java-11-openjdk.x86_64
# 기본 자바 선택
$ sudo update-alternatives --config java
# JAVA_HOME 구성
$ sudo vi /etc/profile
# 맨 하단에 아래 명령어 추가
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.16.1.1-1.el7_9.x86_64 PATH=$PATH:$JAVA_HOME/bin export PATH
# 변경사항 적용
$ source /etc/profile
# path 추가
$ sudo vi /etc/init.d/jenkins
# 아래 두 개 path 추가
/usr/lib/jvm/java-11-openjdk-11.0.16.1.1-1.el7_9.x86_64
/usr/lib/jvm/java-11-openjdk-11.0.16.1.1-1.el7_9.x86_64/bin/java
# wget 설치
$ sudo yum install wget -y
# MAVEN_HOME 구성
$ sudo vim /etc/profile
# 맨 하단에 아래 명령어 추가
export MAVEN_HOME=/usr/local/apple/Tools/apache-maven-3.6.3 PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin export PATH
# 변경사항 적용
source /etc/profile
# git 설치
sudo yum install git
# yum repository 사용을 위해 public key를 등록
$ sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
$ sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
# jenkins 설치
$ sudo yum install jenkins
### gcp 홈에 나가서 방화벽 9090 포트 열기 ###
$ sudo vi /etc/sysconfig/jenkins # JENKINS_PORT="9090"
$ sudo vi /lib/systemd/system/jenkins.service # Environment="JENKINS_PORT=9090"
# 방화벽 설정
$ sudo firewall-cmd --permanent --zone=public --add-port=9090/tcp
$ sudo firewall-cmd --reload
# jenkins 시작
$ sudo service jenkins start systemctl enable jenkins
# 만약에 시작이 안된다면...
$ sudo chmod 755 /usr/lib/jvm
3) jenkins 웹 브라우저 접속
접속 주소는 http://[jenkins 인스턴스 외부 IP]:9090
이다.
이제 위 사진에 나온 경로에서 password를 알아내자.
$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
비밀번호를 입력한 뒤에는, 나오는 순서대로 정보를 입력하면 된다.
아래 URL은 변경 없이 다음으로 넘어가면 된다.
아래처럼 나오면 설정을 마친 것이다!
💛 개인 공부 기록용 블로그입니다. 👻