
기획부터 설계, 디자인, 개발까지 오롯이 나 혼자 해온 프로젝트를 드디어 aws를 통해 배포했다! 두 달쯤 전부터 시작했던 것 같은데 회사다니면서 공부할 것들이 많이 생겨서 짬짬이라도 진행했고, 가장 기본적인 기능만 넣어서 우선 배포했다. 중간에 정말... 그냥 포기하고 싶었던 순간이 있었는데, 바로 템플릿 엔진 문제였다. 난 jsp에 익숙하다보니 그냥 jsp로 진행했는데 알고보니 스프링부트에서는 jar로 배포할 때 jsp를 지원하지 않는다고 한다... 애써서 배포했더니 white label error page가 떴을 때는 정말 절망스러웠다. 그래서 배포방식바꿔서 해보자했는데 그것도 안되고, 그래서 참아가며 jsp를 타임리프로 바꿨다. 다행히 지금 듣고 있는 강의에서 타임리프에 대해 알려줘서 적용이 수월..

내가 쿠버네티스 클러스터에 배포해야하는 애플리케이션은 profile yaml파일이 굉장히 많았고, 이 profile을 동적으로 선택하는 것이었다. 로컬에서 돌릴 때는 configuration에서 그냥 값을 입력해주면 되지만 쿠버네티스 클러스터에 배포하기 위해서는 어느 시점에선가 active profile을 결정해줘야 했는데, 어떻게 해야할지 찾아보다가 오늘 해결했다. 내가 생각했을 때 프로파일을 결정할 수 있는 타이밍은 크게 두 가지가 있었는데, 하나는 docker 이미지로 만들 때와 다른 하나는 deployment로 파드를 만들 때이다. 배운 내용으로는 파드의 환경변수를 관리하는 게 configMap이니까 파드를 만들 때 configMap으로 넣어줄 수 있는지 알아봤는데, 내가 알아본 것으로는 그렇게 ..
GKE에서 docker hub에 있는 private 이미지를 pull하려면 인증이 필요하다. 이 인증을 어떤 타이밍에 어떻게 해주느냐가 관건인데, Secret을 만들고 Pod나 Deployment 생성시 Secret을 걸어주면 된다. 시크릿 생성하기 kubectl create secret docker-registry regcred --docker-server= --docker-username= --docker-password= --docker-email= # : 프라이빗 도커 저장소의 FQDN. 도커허브는 https://index.docker.io/v2/ 이다. # : 도커 사용자의 계정 # : 도커 사용자의 비밀번호 # : 도커 사용자의 이메일 주소 시크릿과 Pod 혹은 Deployment 연결하기 P..

나처럼... 정말 아무 것도 모르는 왕왕초보 개발자가 강의를 들을까봐, 혹시나 하필 구축한 실습환경이 GKE일까봐 정리해둔다. 본 강의에서는 쿠버네티스를 다룰 때 주로 대시보드를 이용한다. 물론 대시보드로 하다보니 이해하긴 쉽지만 대시보드로도 해결되지 않는 경우가 왕왕 있었다. 대시보드로 해결되지 않을 때는 cmd창에서 작업하면 된다. GCP로 실습환경을 구축하고 SDK 설치 및 설정까지 완료하면 cmd창에서 kubectl로 쿠버네티스를 접근할 수 있다. 예를 들어, 대시보드의 경우 생성버튼(오른쪽 위 + 버튼)을 눌러서 [Create from input]에서 yaml파일 내용을 입력해서 생성할 수도 있지만, 먼저 원하는 경로에 yaml파일을 만들고, 그 경로에서 아래의 명령어를 실행해서 생성할 수도 있..

인프런 강의를 듣고 있는데, 아무래도 강의에서 권장하는 실습환경이 아니다보니 막힐 때가 한 두번이 아니다... 😭 이번에는 파드를 만들고, 그 파드와 연결된 서비스를 만들어서 서비스의 IP로 접속해서 파드 컨테이너가 제대로 작동한다는 것을 확인하는 것이었다.(Getting started - Kubernetes - 실습) 아니 근데... 강의자분은 서비스만들 때 아래의 부분처럼 써서 서비스를 만들어서 IP에 접근하는데 나는 저렇게 할 경우 접근하지 못하는 문제가 있었다. ... externalIPs: - 192.168.0.30 파드는 IP를 가지고 있긴 하지만 파드는 장애때문에 얼마든지 재생성될 수 있다. 그럴 때마다 IP가 달라지기 때문에 이 파드와 클라이언트를 연결하고자 하면 서비스가 필요하다. 서비스..
인프런의 "대세는 쿠버네티스" 강의를 듣기 시작했는데, 거기서 구축하는 여러 가지 환경 중에 나는 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는 클러스터에 대해 시작, 중지, 상태 조회 및 삭제 등의..