분류 전체보기111 Gradle로 바닐라 Java 애플리케이션을 빌드하며 겪은 문제들(feat. manifest, Fat-JAR) Spring Boot가 아닌 바닐라 Java로 만든 프로젝트를 빌드하다보니 생긴 오류들이있다.오랜만에 다시 겪어보니 Spring Boot, Intellij가 참 많은 것들을 내부적으로 해주고 있구나 싶었음 1. .jar에 기본 Manifest 속성이 없습니다.JAR 파일을 실행할 때 어느 클래스가 진입점인지 모르기 때문에 발생한다. 자신의 애플리케이션의 진입점이 되는 클래스를 'Main-Class' 옆에 적어주자. 이때 패키지명을 함께 적어야 한다. 나의 경우 webserver 패키지의 WebServer.java 여서 아래와 같이 적었다.jar { manifest { attributes 'Main-Class': 'webserver.WebServer' } 2. 외부 의존성을 찾을 .. 2024. 8. 25. Synology NAS NFS 기반 PV 생성하기 지금까지는 emptyDir을 바탕으로 DB의 데이터를 저장하고 있었다. 하지만 emptyDir은 파드의 라이프사이클과 똑같기 때문에 파드가 다시 뜨게 되면 기존에 저장되어 있는 데이터가 모두 날라가게 된다. 이를 방지하기 위해 emptyDir이 아니라 파드가 띄워진 노드의 파일시스템에 접근하는 hostPath나 외부에 데이터를 영구적으로 저장하는 PV 등을 이용한다. 띄워지는 서비스들의 데이터를 영구적으로 보관하기 위해서 PV를 선택했는데 이유는 아래와 같다.hostPath를 이용하지 않은 이유k8s 노드들을 띄운 물리적 서버는 컴퓨터 1대이고 저장용량이 그렇게 크지 않다(1T 이상이긴 하지만 k8s 노드용 vm외 다른 vm, 다른 프로그램들도 돌고 있으니)어떤 데이터를 노드에 저장한다는 것은 pod가 .. 2024. 8. 17. 자체 제작 KaaS에서 배포된 애플리케이션의 상태 보여주기 지금 제작하는 애플리케이션은 배포에 필요한 최소한의 리소스(BE, FE 앱 이미지, DNS에 등록된 도메인, DB Schema 등)을 제출하면 홈서버 k8s 클러스터에 애플리케이션을 배포해주는 Kubernetes as a Service의 일종이라고 볼 수 있다. 이 서비스의 사용자는 자신의 애플리케이션 배포 후 무엇을 궁금해할까? 우선 최소한으로 아래 사항들을 궁금할 것이라 생각하였다. (실제로 내가 애플리케이션을 배포했을 때 궁금했던 내용이기도 하다)자신이 어떤 애플리케이션을 배포했는지애플리케이션의 이름, 설명, 언제 배포했는지 등의 배포에 대한 메타데이터어떤 도메인 FE, BE 이미지로 배포를 했는지 등의 배포 관련 세부 데이터자신의 애플리케이션이 ‘잘 배포되었는지’, 현재 ‘정상적으로 동작하는지’ .. 2024. 8. 12. kubernetes java client를 사용하여 springboot에서 k8s 제어하기 자바 애플리케이션에서 k8s를 제어하는 보기 드문 일을 하게 되었다… (내가 이해하기로) Spring Cloud Kuberenetes의 경우 Spring 기반 MSA를 k8s에 배포하는데 사용하지만, k8s 자체를 java로 제어하고 인터렉션하기 위해서는 fabric8, k8s java client(이하 java client) 등을 이용해야 한다(그렇기 때문에 ‘Spring’ cloud이고 ‘java’ client인 것 같기도). 나의 경우 홈서버에 띄워져있는 k8s 인프라의 일부를 제어하는 Spring Application을 만들어야 하기 때문에 후자가 필요했다. fabric8 vs k8s java client그렇다면 fabric8와 official java client 중에 어떤 걸 선택해야 하느냐... 2024. 8. 9. 이전 1 2 3 4 5 ··· 28 다음