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을 빼먹었기 때문이라고 한다...

 

 

참고

https://cloud.google.com/artifact-registry/docs/docker/store-docker-container-images?hl=ko#before-you-begin 

 

빠른 시작: Artifact Registry에 Docker 컨테이너 이미지 저장  |  Artifact Registry 문서  |  Google Cloud

컨테이너 이미지를 저장할 비공개 저장소를 만듭니다.

cloud.google.com

https://github.com/GoogleContainerTools/jib/tree/master/jib-gradle-plugin#quickstart