본문 바로가기

분류 전체보기223

Github Action, Kubernetes 설정파일 관리 with Argo-CD 쿠버네티스에 스프링부트 프로젝트를 배포하고 Github Action과 Argo-CD를 통해서 CI/CD도 거의 완료 단계에 들어가게 되었다. 그러나 로컬에 들어있는 application.yml 파일들이나 FCM을 동작하게 해주는 FCM 인증서 JSON 파일은 깃 레포지토리에서 관리를 하고 있지 않았기 때문에 CI/CD 파이프라인을 타게 되면 설정이 빠진 스프링 프로젝트가 배포되는 문제가 있었다. 그래서 어떻게 하면 application.yml에 들어있는 DB 중요정보나 FCM 인증서를 레포지토리에서 관리하지 않고도 CI/CD 파이프라인을 통해서 문제없이 설정 정보까지 배포를 할 수 있을까 고민을 하게 되었다. 먼저 application.yml에 들어있는 중요정보들은 쉽게 해결할 수 있었다. 쿠버네티스에.. 2023. 9. 20.
젠킨스 파이프라인 스프링부트3 버전 에러 java 17 version 변경 최근 젠킨스를 이용한 스프링부트 프로젝트를 쿠버네티스에 배포하고 CI/CD를 구축하고자 작업을 진행하고 있는데 파이프라인을 구성하고 깃허브에서 프로젝트를 받아오는 것 까지는 진행이 되는데 스프링부트를 빌드하는 과정에서 계속해서 Java -version 에러가 났다. 그 이유는 스프링부트 3 버전과 jdk 17버전을 이용해서 프로젝트를 진행했는데 젠킨스에서는 정식적으로 지원하는 java version이 jdk 11버전까지 지원을 하고 있었고 만약에 jdk 17버전으로 스프링부트 프로젝트를 진행했다면 따로 jdk 17버전을 업해주어야 했다. 그래서 다양한 방법들을 시도했지만 현재 쿠버네티스 파드의 도커 내부에서 젠킨스가 돌아가고 있는 상황에서 JDK 버전을 바꾸고자 하니 root 권한 사용자의 문제에 부딪히.. 2023. 9. 18.
Github Actions JAR 도커 빌드 no such file or directory 스프링부트 프로젝트 레포지토리에 깃허브 액션을 달아서 커밋시 ./gradlew build를 하고 도커 이미지로 빌드하여 자동으로 도커허브로 배포하는 작업을 진행중이었다. 다른 모든 job들은 성공을하는데 계속해서 빌드를 하는 과정에서 no such file or directory 에러가 났다. 괜히 worflows.yaml의 들여쓰기도 고쳐보고 도커파일도 수정해보고 경로도 수정해보고 시도를 하였지만 모두 실패 Error: buildx failed with: ERROR: failed to solve: lstat /tmp/buildkit-mount2454880079/build/libs: no such file or directory 그러다가 스프링부트 프로젝트를 빌드를 할 때의 폴더는 현재 폴더 경로의 bu.. 2023. 9. 18.
[책 리뷰] 스프링 부트 3 백엔드 개발자 되기 - 신선영 스프링부트 개발뿐만 아니라 배포와 CI CD까지 이르는 전체적인 과정을 경험해보기 위해서 구매한 서적이다. 나는 버전이 안정적인 출시가 된지 오래된 서적도 좋다고 생각하지만, 이왕이면 가장 최신에 나온 버전으로 학습하는 것을 선호한다. 빠르게 새로운 것을 습득해야 흐름에 뒤처지지 않는 개발자가 될 수 있다고 생각하기 때문이다. 물론 이런 흐름에도 바뀌지 않는 근본적인 책들이 있긴 하지만 이번에는 스프링부트 3으로 개발을 해보고 싶어서 구매하게 되었다. 좋았던 점 스프링부트의 원리와 테스트코드 작성까지 상세하게 설명을 해주었고 하나의 블로그를 같이 만들면서 테스트코드와 JWT, Oauth2, github action과 AWS elastic beanstalk를 이용한 CI / CD까지 경험할 수 있어서 좋았.. 2023. 9. 15.
[책 리뷰] 쉽게 시작하는 쿠버네티스 - 서지영 최근 백엔드 공부를 하면서 평소에 꼭 제대로 배우고 싶었던 쿠버네티스를 위해서 구매한 서적이다. 사실 나는 이전에도 GCSJ 구글 클라우드 스터디 잼에 참여하면서 코세라를 통해 GCP와 GKE 구글 쿠버네티스 엔진을 공부하며 쿠버네티스를 접한 적이 있다. 하지만 모두 영어로 진행되는 탓에 명령어를 따라서 치며 공부할 때는 이해가 되었지만 끝나고 나면 제대로 공부를 한 느낌이 나지 않았던 경험을 했다. 좋았던 점 하지만 이번에 이 서적을 통해서 파드와 서비스, 디플로이먼트 등등 쿠버네티스의 구조와 원리들을 쉽게 풀어쓴 설명 덕분에 이때까지 해소되지 않았던 쿠버네티스에 대한 개념과 활용법에 대해서 어느 정도 익히게 될 수 있었고 덕분에 최근에 혼자서 시작한 스프링부트 프로젝트도 쿠버네티스 클러스터에 배포하게.. 2023. 9. 15.
Docker buildx로 amd64 ubuntu 쿠버네티스 파드에 배포하기 혼자서 쿠버네티스 공부하면서 집에서 놀고있는 윈도우 노트북의 Hyper-V를 이용해서 쿠버네티스 서버를 구축하였다. 성능이 느린 노트북이라 서버를 구축하는데 굉장히 애를 먹었다. 그렇게 쿠버네티스 설치를 완료하고나서 최근에 진행한 미니프로젝트의 스프링부트 백엔드를 배포를 하려고 했다. 먼저 mysql을 Pod에 배포를 하였고 PV와 PVC를 생성하여서 영구저장소 연결을 해주었고 mysql을 성공적으로 Pod에 배포했다. 마지막으로 스프링부트 백엔드 서버를 도커라이징해서 Pod에 배포하는일만 남았는데 pod에서 계속해서 CrashLoopBackOff 에러가 났다. kubectl logs 을 통해서 log를 찍어보니 exec format error가 계속해서 났다. 그 이유를 찾아보니 호환이 맞지않는 도커파.. 2023. 9. 14.