인프런의 "대세는 쿠버네티스" 강의를 듣기 시작했는데, 거기서 구축하는 여러 가지 환경 중에 나는 GCP를 이용한 쿠버네티스 환경을 구축했다. 그런데... 본 강의에서는 dashboard를 사용해야하는데, dashboard에 접근이 안되는 문제가 생겼다. 원래 --enable-skip-login을 추가해주면 그냥 skip 버튼만 눌렀을 때 대시보드가 뜨는데, 나는 404에러가 발생했다. 그래서 하는 수 없이 토큰으로 로그인하는 걸로 결정했다. 여기를 참고해서 토큰을 얻어서 로그인했고, 대시보드에 들어갔는데 모든 권한이 forbidden이어서 아래와 같이 입력해서 해결했다. kubectl create clusterrolebinding --user system:serviceaccount:default:def..
Redis는 데이터베이스, 캐시 및 메시지 브로커로 사용되는 오픈소스 인메모리 데이터베이스 관리시스템이다. string, hashes, lists, sets, sorted sets 등 다양한 데이터 구조를 지원한다. "키 - 값" 구조의 비정형 데이터를 저장한다. Redis 클러스터 구축 VM을 만들 때, 네트워크 설정에 주의해야 한다. 후에 자바 코드에서 클러스터를 구성할 때, 입력하는 IP와 vm에서 클러스터가 구성되는 IP가 같아야 한다.(클러스터 구성시 입력되는 IP) 그래서 VM을 만들 때 네트워크에서 NAT를 선택할 경우, IP가 10.~~ 이런식이 되는데, [어댑터에 브리지]를 선택해서 192.168.~과 같은 IP를 부여받도록 해야 한다. NAT를 선택해서 진행할 경우, 나의 경우 포트포워..
회사에서 진행 예정인 프로젝트가 쿠버네티스 환경이어서 부랴부랴 쿠버네티스도 각잡고 배우는 중. 회사에서 사준 인강을 듣고 있는데 쿠버네티스를 GCP에서 해도 대시보드에는 접근이 안되고, VM에서도 yum update를 하면 에러가 나서...! 🤯 그냥 마음 편하게 저번에 설치해뒀던 미니쿠베를 사용하기로 했다. 그리고 미니쿠베에 대해 잘 몰라서 찾아봤다. 원래 강의에서 세팅한 건 노드 2개짜리지만 아쉬운대로 우선 단일노드라도... Minikube는 가벼운 쿠버네티스 구현체이며, 로컬 머신에 VM을 만들고 하나의 노드로 구성된 간단한 클러스터를 생성한다. Minikube는 리눅스, 맥, 그리고 윈도우 시스템에서 구동이 가능하다. Minikube CLI는 클러스터에 대해 시작, 중지, 상태 조회 및 삭제 등의..
자바 객체를 파일에 저장하거나 네트워크로 전송하려면 직렬화(바이트 배열로 변환하는 것)를 거쳐 스트림을 통해야 한다. 반대로 직렬화된 객체를 원래의 모양으로 되돌리는 것을 역직렬화라고 한다. 직렬화와 역직렬화를 거치면서 클래스에 대한 버전 확인을 하고, 이때 사용되는 것이 SerialVersionUID. 명시적으로 선언하지 않아도 자동으로 부여해주지만 그럴 경우 클래스에 변화가 생겼을 때 역직렬화나 직렬화에 문제가 생길 수도 있으므로 개발자가 직접 관리하는 편을 권장한다. https://ktko.tistory.com/entry/JAVA-%EA%B0%9D%EC%B2%B4%EC%9D%98-%EC%A7%81%EB%A0%AC%ED%99%94Serializable-serialVersionUID 자바 객체의 직렬화..
입사한 회사의 곧 개발 시작할 프로젝트에서 RabbitMQ를 사용한다고 해서 RabbitMQ를 공부하고 있다. 간단한 예제를 찾아보니 문자열을 보내는 경우는 있는데, 객체를 전송하는 경우는 잘 안 보이는 것 같아서 간단히 정리해둔다. (RabbitMQ를 아예 처음 마주하는 나와 같은 조무래기 개발자들에게 도움이 되길) 본 포스팅은 https://oingdaddy.tistory.com/166를 참고해서 객체 전송하는 기능으로 변경한 내용을 정리한 것이다. RabbitMQ에 대해 아예 이해가 없는 상태라면 위 링크를 먼저 보고 문자열 전송까지 완료한 후 본 포스팅을 참고하는 것이 도움이 될 것이다. 1. RabbitMQ 설치(Docker 이용) 그냥 사용하고 있는 컴퓨터에 바로 RabbitMQ를 설치해도 되..
JVM의 메모리구조에서도 얘기했듯 생성된 객체는 Heap영역에 저장된다. 하지만 이 Heap영역에 객체를 저장하다보면 GC 오버헤드때문에 애플리케이션의 성능이 저하된다고 한다. Offheap은 GC의 대상이 되지 않는 영역으로, GC가 대신해주는 메모리 관리 등을 애플리케이션이 직접 해줘야 하므로 EHCache 등의 캐시 라이브러리를 사용하는 게 좋다고 한다. 출처 : https://soft.plusblog.co.kr/163 [Java] On-heap과 Off-heap JVM 리소스와 관련된 자료를 찾아보다가 'On-heap'과 'Off-heap'이라는 단어를 발견하게 되었다. 자바 프로그래밍에서 선언된 객체가 힙(Heap) 영역에 관리된다는 내용은 잘 알고 있지만 On-heap과 Off-heap sof..
도커로 젠킨스를 공부하고 싶은데 어떻게 세팅해야할지 모르겠는 사람들을 위해 정리해본다. 젠킨스 컨테이너 만들기 우선 도커로 젠킨스를 공부하려면 젠킨스 이미지를 받아서 컨테이너를 만들어야 한다. // 이미지를 받고 docker pull jenkins // 컨테이너 실행 docker run -d -p 8080:8080 -v /Users/ara/jenkins:/var/jenkins_home --name jenkins jenkins/jenkins:latest // 호스트와 포트 8080으로 연결하고 /Users/ara/jenkins는 /var/jenkins_home과 마운트시킨다. // 컨테이너 이름은 jenkins로 하고, // 사용할 이미지는 jenkins/jenkins:latest 컨테이너가 실행되면 명령..
요즘 VM에 서버 구축하는 업무를 하고 있는데 분명 잘했다고 생각했는데 오늘 예상치 못한 에러를 만났다. java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]] ... Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '~' : Invocation of init method failed; nested exception is o..