지난번 포스팅에선 Aws Spot 설정하는 방법을 알아보았다. 이번 포스팅에선 Jenkins 에서 생성된 Spot을 연결 후 동작하는 방법을 알아보겠다. https://plugins.jenkins.io/ec2-fleet/ EC2 Fleet Use EC2 SpotFleet to launch builders plugins.jenkins.io 해당 플러그인을 설치하고 온다. Jenkins관리 -> 환경설정 -> 맨 아래 Cloud 에 보면 Spot 설정으로 넘어갈 수 있다. 이후 해당 페이지에서 정보들을 입력한다 Aws Credentials 는 당연히 적용이 되있을거라 믿고 넘어가겠다. Spot 인스턴스를 생성한 지역과 이름을 선택하면 된다. 이후 Label 항목은 Jenkins에서 사용할 Spot의 Alia..
젠킨스가 여러가지 프로젝트의 배포를 담당하는 상태에서 한곳에 배포를 한곳에서 처리하는 것은 성능저하 문제도 있고 여러 요청이 한번에 들어왔을 때 부담이 있다. 따라서 Jenkins 는 요청을 받기만 하고 실제로 처리하는 것은 다른 인스턴스로 요청을 보내서 처리하게 만들려고 하였다. 이때의 문제는 인스턴스를 유지하면 돈이 많이든다는 것.. 따라서 비용절감을 할 수 있도록 Aws Spot 기능을 사용하기로 결정하였다. 용어가 바뀌었나보다. 내가할땐 Fleet이었는데 스팟이라고.. 한두번이니 얘들.. https://aws.amazon.com/ko/about-aws/whats-new/2018/04/introducing-amazon-ec2-fleet/ Amazon EC2 플릿 소개 Amazon EC2 플릿은 여러..
입사 후 역경과 고난을 거친후 개발, 운영서버 구축을 완료하였다. 이글을 읽는 사람들이 모두 쉽게 쿠버네이츠 환경을 구축하였으면 좋겠다. 네이버 클라우드 플랫폼 써라. 한국어로 친절하게 설명 다나와있다. aws, azure에 있는 기능 다있다. 어쨋건.. 모든 사람들 힘내자. 우선 개발서버의 자동배포 플로우를 설명하겠다. 실 운영서버는 개발서버의 하위 프로젝트를 수동으로 변경한것 뿐이라 따로 설명하진 않겠다. 버전 태깅에 의해서 진행하는 것과 Git Commit Id 로 진행하는 차이가 있다. 1. Github Pull Request 후에 Merge가 일어난 후 webhook으로 jenkins에 전달된다. 2. jenkins에 webhook trigger 가 일어난 후 Docker Image 를 생성한다..
1. ECR은 사설 레퍼지토리이다 2. EKS는 오케스트라 툴이다 3. EKS(쿠버네이츠) 의 컨트롤은 kubectl 로 하는거다. 4. 여러가지 아주 뭐같은 방법들이 많기에 일단 적어두고 내일 젠킨스 이미지 푸쉬 후 자동 스크립트까지 완성 후 글 다시 정리한다 1. jenkins -> dockerfile image build -> ecr push 2. eks cluster create 3. eks node create 4. 내 로컬 컴퓨터에 kubectl 설치 5. 내 로컬 컴퓨터에 kubectl에 aws configure로 aws 접속권한 획득 6. kubectl 에 cluster 및 nodes 접속 (음.. 조회의 개념) 7. 생성되어있는 노드에 내 로컬의 kubectl 로 apply ( 쉽게말해서..
글날라갔다. 빡친다. 오늘도 무엇을 할 적어두고 시작하자. 1. 도커의 젠킨스 이미지를 pull한다. 도커 사설 registry 설치해서 실행한다. 2. 도커의 젠킨스 이미지로 컨테이너 띄운다. 3. 2번의 컨테이너에(이하 젠킨스) 접속해서 docker 업데이트를 해준다. 4. 도커 비밀번호 입력하고, 초기 기본 라이브러리 설치 안하고 깡통으로 설치한다. 5. 젠킨스 접속하여 필요한 라이브러리를 설치한다. (Bitbucket, Docker, Docker-Build-Step) 6. 웹훅 설정한다. 7. 젠킨스에 mvn, docker 설정을 한 후 잘 뜨나 확인 한다. 자 이제 명령어랑 사진..? 가끔.. 쳐보자 1. docker pull jenkins/jenkins:lts 하여 젠킨스 풀 땡긴다. 1-1...
오늘은.. 커스텀 어노테이션을 만들 것이다.. 만들고자 마음먹은 이유 1. 인텔리제이에서 프로젝트를 각각 모듈화 해서 사용중인대 각각 프로젝트마다 유틸성 클래스들을 만들기 싫다. 2. 임포트는 가능하나 매번 체크하기 힘들다 3. 스태틱 메소드 말고 스프링 빈으로 띄워서 사용하고 싶다. 5. 고로 @Configuration 에서 설정 + 다른 프로젝트 클래스를 임포트하여 Bean으로 설정하는 통합 유틸리티 빈을 띄우는 어노테이션을 만들 것이다. 단점은.. 해당 모듈 안에 있는 클래스들이 아니면 생성할 때 오류가 날 것...? 규칙을 모르면 이어노테이션이 뭔지 모르는것..? 이정도 있을 것 같다. 1차 고비 로직처리를 하는것이 아니다... 어노테이션은 특정 '기능'을 약속해둔것이라 봐도 무방하다고 생각한다...
https://tech.osci.kr/2019/02/13/59736201/ Docker Swarm 을 이용한 Container Orchestration 환경 만들기 안녕하세요? 오픈소스컨설팅 한철희 과장입니다. 이전 tech.osci.kr 일로가라. 여러가지 글들이 있는데 도커 스웜을 구동하기 위해서 해야하는 것들을 정리를 해본다. 1. docker swarm는 master - worker 구성으로 되어있다. 좀 쉽게 설명하면 DB 에서 master-slave 관계다. 2. docker 에 접속하면 container에 할당되는게 알아서 로드밸런싱이 된다.. 정도다. 작업 순서 정리는 1. A컴퓨터에 docker swarm을 init한다. (master를 생성한다) -> 다른곳에서 접속할 토큰이 발급된다...
이거 참.. Spring Boot 를 Docker이미지 만들어서 띄울려고 삽질을 좀 많이했다. 여러 글에서 설명이 잘 나와있다. 순서대로 뭘 해야하는지를 적어본다. 대부분 도커파일을 생성하라고 먼저하는데 뭐 어쨋던간에 난 햇갈려서.. 1. mvn clean package 를 하여 스프링 부트 jar 파일을 만들어준다. jar파일 만들어서 파일 이름 확인하는게 중요하다. porm설정이 제대로 되어있으면 사실 이 글을 읽지 않았겠지. 태그는 머리아프고 수정은 뭔뜻인지 모르는 나는 자르파일 명 집적 확인해서 넣는게 속이 편하더라. 2. Dockerfile 을 프로젝트 루트에 만들어준다. 3. Dockerfile 을 만들어준다. FROM openjdk:10-jdk VOLUME /tmp EXPOSE 8080 AR..
서비스를 나누기로 결정 한 후 개발환경, 테스트환경, 실서버 환경에 모두 돌리기 힘들어서 docker를 사용하기로 결정하였다. 우선 본인의 Mac 환경에 Docker를 설치를 완료하였다. 예상 서버 구성을 MariaDB 2개 인증서버 1개, A서비스 1대 , B 서비스 1대로 예정이 되어있다. 우선 MariaDB를 Docker로 하나 띄우는걸 목표로 하겠다. 예전에 RDBS를 docker에 설치하고 컨테이너를 내렸다가 올리면 데이터가 다 사라져있어서 뭐야이거하고 때려쳤는데 mariadb의 데이터를 저장하는 공간을 따로 지정을 해줘야 하나보다 docker pull mariadb:latest 로 도커 이미지를 다운받자 docker container run -d -p 3306:3306 -e MYSQL_ROOT..
새로운 프로젝트가 시작되었다. 초반 서버구성에 항상 머리를 싸매고 있다. 이전 프로젝트에서 관리자, A 타입 사용자, B타입 사용자가 한서버에서 처리하다 보니 작은 오류 및 수정사항이 있을 때 전부 서버가 내렸다 올라가야 하는 점이 매우 부담스러웠다. 그래서 서버를 나누기로 결정을 하였다. 1. A타입 사용자 Api 서버 및 A+B타입 사용자 데이터 처리 2. B타입 사용자 Api 서버 3. 전체 관리자 페이지 정도로 요구사항이 나왔다. 몇가지 필요한 기능들을 분리해서 4. 로그인 인증서버 및 인증 벨리데이션 서버 를 추가로 구성하기로 하였다. Jwt 토큰으로 처리하기로 하였다. 따라서 프로젝트 모듈화를 통하여 프로젝트를 구성하기로 하였다. 우선 Empty Proejct를 설정해준다. Project St..