k8s 에서 spring boot jib image command 수정
jib buildTar 옵션으로 빌드 후 tar로 떨궈지면
tar파일 안에 config.json 파일이 있다.
이 파일에 entrypoint가 있는데 이 entrypoint의 classpath경로가
우리가 빌드한 springboot의 spring boot classpath다.
jib는 jar로 패키징하는 단계를 skip 하고 바로 이미지로 빌드시킨다.
이유는 더 빠르기때문이다. ( jar패키징 단계를 skip해서 )
더 자세한이유는 참조링크확인.
따로 jar로 패키징하는 옵션도 줄수있다.
대충 entrypoint를 보면 java -cp [classpath] 일것이다.
k8s에서
docker의 entrypoint 는 command이고
docker의 cmd는 args다.
jib에 entrypoint밖에 없었으므로 command에 똑같이 넣어주자.
만약 -D옵션이나 jvm옵션을 k8s에서 직접 주고싶다면.
java jvm옵션 -D옵션을 주고 -cp [classpath] 이런식으로 작성하자.
이 옵션들은 모두 pom.xml의 jib plugin 옵션에서 설정할수 있다.
ps. jib의 default image는 distroless/java 다.
이 이미지에는 쉘이없다..
exec로 쉘 접근하고 싶다면 base image를 변경시켜줘야한다.
ps2. base image를 로컬에 있는걸 쓰고 싶다면 이미지이름 앞에 docket://를 붙여주면된다.
참조
https://github.com/GoogleContainerTools/jib/blob/master/docs/faq.md
https://kubernetes.io/ko/docs/tasks/inject-data-application/define-command-argument-container/#참고사항