DevOps/GCP
Spring Batch 프로젝트 GCP Artifact Registry 배포(로컬에서 배포)
코딩콩
2023. 9. 18. 21:12
* 배치 잡을 GKE 파드 생성해서 돌리기 위한 여정 중🏃♀️
TODO
Spring Batch 프로젝트를 Jenkins를 이용해서 GCP Artifact Registry에 배포할 것이다.
로컬에 gcloud CLI 설치
공식 문서에서는 SDK 다운로드 해서 압축 풀고 그렇게 하라길래 지선생이 알려준 방법으로 설치했다.
brew install --cask google-cloud-sdk
gcloud init
gcloud init을 하면 gcp 콘솔 창이 켜지면서 로그인이 완료된다.
저장소 생성
Artifact Registry에 이미지를 배포할 저장소를 만들어준다.
gcloud artifacts repositories create quickstart-docker-repo --repository-format=docker \
--location=asia-northeast3 --description="Docker repository"
저장소 생성 확인
gcloud artifacts repositories list
저장소 인증
이미지를 내보내거나 가져오려면 먼저 Google Cloud CLI를 사용하여 Artifact Registry에 대한 요청을 인증해야 한다고 한다.
gcloud auth configure-docker asia-northeast3-docker.pkg.dev
이미지 생성과 배포
gradle Jib을 사용하여 이미지를 생성하고 gcp에 push 할 것이다. 매우 간단.
// plugin 추가
plugins {
...
id 'com.google.cloud.tools.jib' version '3.3.2'
}
// jib 작성
jib {
extraDirectories {
paths = ['build/libs']
}
from {
image = 'openjdk:17-alpine'
}
to {
image = "LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE"
}
container {
entrypoint = ['java', '-jar', '#####-0.0.1-SNAPSHOT.jar']
}
}
Artifact Registry 배포 완료!
아래 명령어로 배포 완료하기
./gradlew jib
오류와 해결
jib {
extraDirectories {
paths = ['build/libs']
}
from {
image = 'openjdk:17-alpine'
}
to {
image = "LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY"
}
container {
entrypoint = ['java', '-jar', '#####-0.0.1-SNAPSHOT.jar']
}
}
jib을 이렇게 작성했을 때 만난 오류이다. 권한과 인증이 잘못된 줄 알고 엄청 헤맸다.
하지만 jib --stacktrace로 자세한 로그를 보면 image name을 빼먹었기 때문이라고 한다...
참고
빠른 시작: Artifact Registry에 Docker 컨테이너 이미지 저장 | Artifact Registry 문서 | Google Cloud
컨테이너 이미지를 저장할 비공개 저장소를 만듭니다.
cloud.google.com
https://github.com/GoogleContainerTools/jib/tree/master/jib-gradle-plugin#quickstart