Jenkins는 어플리케이션의 테스트, 빌드, 배포의 과정을 자동화할 수 있게 해주는 도구입니다.그동안 프로젝트를 진행하면서 매번 직접 VM에 접속하고 직접 어플리케이션을 배포하는 과정이 번거롭다고 느꼈고, 지난 프로젝트에서 공통팀에서 구성한 빌드 파이프라인을 유용하게 사용한 경험이 있었기에 개인이나 회사 프로젝트를 진행할 때 직접 이 과정들을 구성하고 사용하고 싶어 공부하게 되었습니다. 젠킨스 설치 젠킨스의 설치 방법은 크게 3가지가 있습니다. warmsi 설치 (윈도우)docker 이미지https://www.jenkins.io/download/ Download and deployJenkins – an open source automation server which enables developers ..
Docker
kubernates를 사용하는 이유 가상머신 vs 컨테이너 가상머신은 하이퍼바이저 위에 게스트OS를 포함하여 앱을 실행하는 형태 컨테이너는 호스트OS에서 컨테이너 소프트웨어를 통해 앱을 컨테이너 내에 담아 실행하는 형태 요즘 같이 이벤트 등의 이유로 트래픽이 순식간에 몰리거나 할 때 스케일업 보다는 스케일 아웃을 통해 인스턴스를 늘리고 줄이고 한다. 그런데 가상머신은 게스트OS 등 앱 자체와는 상관 없는 환경 구성이 필요하므로 앱을 여러 개 구성할 때 컨테이너 방식보다 자원의 낭비가 생긴다. 그러나 컨테이너 방식을 사용한다고 해도 마냥 장점만 있는 것이 아닌게, 가상머신 방식과 달리 컨테이너 방식은 호스트OS에 문제가 생겨 멈추게 되면 모든 컨테이너가 멈추게 된다는 단점이 있다. 그래서 자칫하면 모든 서..
문제 발생 기존에는 개발의 편의성을 위해 GCP에 띄워놓은 Kafka를 통해 테스트를 했지만 서버를 띄우지 않았을 때는 어쩔 수 없이 로컬에서 해야 하기 때문에 로컬의 개발 편의성을 조금이라도 가져보고자 Docker를 사용하기로 했다. 사실 윈도우상에서 직접 Zookeeper, Kafka, Kafka Connect를 실행하면 문제가 많아서라는 이유도 있다. 어쨌든 Docker로 옮겨보고자 했으나 문제가 몇 가지 발생했다... 문제는 다음과 같다. 컨테이너 간 통신호스트 머신에서 컨테이너 내의 Kafka 접근Docker 컨테이너와 호스트 머신 DB 연결 이거 말고도 자잘한 문제가 있었지만 위의 세 가지가 가장 큰 문제였다. 컨테이너 간 통신 및 컨테이너 내 Kafka 접근 해결하기 Docker의 컨테이너..
docker exec -it [컨테이너 ID] bash 위 명령어로 카프카 컨테이너 내부 터미널로 들어가 토픽을 확인하려 했다. 그런데 위 처럼 토픽 조회 명령어를 실행했는데 아무 반응도 없고 그냥 기다리면 위와 같은 오류가 발생한다.무엇이 문제인가 생각해봤는데 kafka:9092로 들어오는 요청이 막힌 것 같다고 생각했다. 그래서 위 스크린샷 처럼 내 인스턴스 퍼블릭 IP로 들어오는 내 인스턴스 자신의 요청에 대해서 허용을 해줬더니 잘 작동한다.
원래 AWS를 사용해서 구성했는데 dockerhub에서 이미지 받는 과정을 자주 진행해서 그런지 0.02달러가 청구되었다... 그래서 무료 크레딧을 주는 GCP로 이전해서 여기서 프로젝트를 진행하기로 했다. 근데 docker 설치 과정에 EC2와 달라 조금 찾아봐야 했다. Docker 설치 https://docs.docker.com/engine/install/ubuntu/ Install Docker Engine on UbuntuJumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install Docker Engine ..
문제의 시작 EC2에 Spring Cloud Config, Gateway, Eureka를 올려서 테스트해보려고 하는데 이상하게 Gateway만 Config-Service의 설정 정보를 받아오지 못하고 이거 때문에 Eureka에서도 인스턴스 목록에 뜨지 않았다. docker로 구성해서 사용했기 때문에 컨테이너 간 통신 문제인가 docker network 설정 정보도 확인해 보고, EC2 인바운드 규칙도 살펴보고, docker-compose 파일 내용도 EC2의 퍼블릭 IP로 바꿔보고, 진짜 여러 가지 다 해봤다. 한 4시간 정도 고생한거 같은데 결국 해결 방법을 찾아냈다. 문제의 원인 Could not locate PropertySource ([ConfigServerConfigDataResource@ec..