
한동안 다른 것부터 개발하느라 업데이트 할 일 없어 사용하는 서버를 내려놨는데 갑자기 AWS에서 니 계정에 비정상적 활동을 한다고 알람 메일이 왔다. 확인해보니 그 메일 전에 다른 리전에서 니 리소스 사용 허용했다고 알람 메일도 와있었다...그거 나 아니라고... 일단 콘솔 접속부터 했다. 콘솔 접속하는 root 유저 비밀번호부터 바꾸고, 메일을 다시 확인해서 IAM 메뉴에 들어가 해당되는 유저의 Access Key를 비활성화부터 하고 이후 삭제했다. 메일에는 어느 유저의 어느 액세스키의 활동이 의심된다고 뜬다. 총 3개의 메일이 왔고 각각 유저의 액세스 키가 달랐다. root 유저에 MFA가 설정 안되어 있었어서 MFA도 설정해준다. 폰에 추가인증수단 어플을 설치하고 연동해서 빠르게 설정할 수 있다. ..

예전에 출퇴근시 회사 포탈 로그인/로그아웃해서 출퇴근 찍는걸 자주 깜박해서 컴퓨터가 켜져 있으면 9시 전에 자동으로 로그인해서 출근 찍고, 6시 이후에 자동으로 로그아웃해서 퇴근 찍는 파이썬 프로그램을 개발했었습니다. https://github.com/choisaelim/attendcheck 오늘의 브리핑도 기본 내용은 단순한, 순전히 편의를 위해 생각했던 서비스입니다. 기본기능은 사용자 정보와 출퇴근 위치를 저장해놓고, 기상청 API를 이용해 출근지와 퇴근지의 출근시간, 퇴근시간 날씨를 표시하는 기능입니다. 웹 화면이니까 UI 용도로 카카오맵 API로 지도에 출근, 퇴근지 좌표도 찍었습니다. 아침에 일어나면 늘 있는 출퇴근길이 어떤지 미리 볼 수 있었으면 해서 만들었는데, 카카오 API에 대중교통 루트..
MSA 구축 강의를 토대로 로컬에 MSA 환경을 구성해보았습니다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4 1. 서비스 디스커버리 - 유레카 서버 구축 2. 게이트웨이 - 스프링 클라우드 게이트웨이 적용 3. 기능 구현 - 유저 서비스, 카탈로그, 오더 서비스 4. 유저 JWT 토큰 발급 및 로그인, 회원가입 기능 5. 설정 서버 - 스프링 클라우드 콘피그 연동 등의 순서로 실습해봤는데, 스프링 시큐리티는 버전이 올라가면서 (스프링 부트 버전 2.7.8) dep..

젠킨스로 돌아가서, EC2에 ssh-keygen을 통해 키 파일을 추가로 만들고(이번엔 이름을 지정해서 id_rsa와 겹치지 않게 합니다) ssh-keygen -t rsa -f /home/ubuntu/.ssh/k8smanifest 쿠버네티스 배포를 위한 manifest 파일이 있는 github credential을 등록합니다. git repository deploy_keys에도 공개키를 등록해줍니다. git 연결 코드를 생성한 credentialId와 함께 작성합니다. sh 명령어를 통해 현재 빌드 번호를 태그로 하여 deployment.yaml을 변경하고 커밋하는 git code를 작성합니다. (spring은 이미지네임의 일부임으로 본인의 도커 이미지 이름으로 변경합니다) 해당 코드가 실행되고 Argo..

ArgoCD 공식 문서 https://argo-cd.readthedocs.io/en/stable/getting_started/ kubectl과 kube config 파일이 필요합니다. kops로 쿠버네티스를 구성했다면 설치 조건에 부합합니다. 쿠버네티스 마스터 노드에 접속합니다. kops에서 퍼블릭 키를 설정해놓고 putty에서 key pair시 받아둔 ppk 파일을 이용해 접속해도 되고, (접속 정보는 AWS 콘솔에서 확인 가능합니다) 키 파일로 접속하는게 아니라면 EC2 instance connect를 이용해서 접속 후, sudo passwd root sudo passwd ubuntu 로 패스워드 지정 한 후 sudo vi /etc/ssh/sshd_config - PasswordAuthenticati..

새 프로젝트 등록 젠킨스 메인에서 New Item을 누르고 아이템 이름을 넣어 Pipeline을 선택합니다. General에서 Github project url 입력 저는 공개 리포지토리라서 https 주소로 입력했지만 비공개라면 등록한 SSH 정보를 이용하기 위해 SSH 주소를 입력합니다. build trigger에서 깃 푸시 할 때 파이프라인이 실행되도록 설정할 수 있습니다. (플러그인 설치하면 나타남) 해당 설정을 사용하려면 Github에서 리포지토리 > Webhook에 들어가서, 젠킨스 주소 + /github_webhook 주소 등록 및 push에 체크해줍니다. Github Repository에 배포할 소스가 있어야 하는데, 저는 Spring Boot Initializer로 Java11 + 그래들..

젠킨스 설치는 쿠버네티스 위에 할 수도 있고 kops를 설치했던 EC2 서버에서 할 수도 있습니다. 둘 다 해봤을 때 대략 1. 쿠버네티스 내 설치 PV 등 추가로 설정 후, 빌드시 젠킨스 파이프라인에서 podTemplate 사용 2. EC2 리눅스 서버에 설치 - 쿠버네티스에서 Kubernetes Continous Deployment 플러그인 사용해서 배포하는 방법 1은 설정 방법이 많이 나와있지만 익숙하지 않아서 패스하고(현재 쿠버네티스 버전에서는 docker를 더이상 쓰지 않고 containerd를 쓰는 이슈도 있습니다) 2의 방법은 해당 플러그인이 현재 suspended 상태라 사용 불가능합니다. 해당 플러그인으로 설정하는 방법은 아래 블로그에 잘 정리되어 있습니다. https://zunoxi.t..

EC2 서버는 중지 후 재시작하면 아이피가 변경됩니다. EC2 서비스에 들어가면 좌측 메뉴에 Elastic IP가 있는데 여기서 Allocate를 누르면 신규 Elastic IP를 발급받아 EC2 인스턴스에 할당 가능합니다. 생성(Allocate) > 할당(Associate) > 할당 해제(Disassociate) > 삭제(Release) 할당된 인스턴스 실행중에는 Elastic IP 요금은 무료입니다. 지정된 인스턴스에서 해제하려면 Elastic IP를 선택하고 Action에서 Disassociate를 누릅니다. Release를 하면 생성된 탄력적 IP가 삭제되어 더이상 요금이 부과되지 않습니다. 생성된 상태에서 EC2에 할당된 것이 아니면 요금이 부과되므로 인스턴스 삭제 시 사용하지 않는 Elasti..

리눅스 계정 패스워드 등 서버 설정을 하고, kops를 설치해봅니다. sudo apt install net-tools #netstat 사용 위해 설치 sudo apt install unzip #zip 파일 unzip하기 위해 설치 sudo passwd root XXX #root 비밀번호를 XXX로 변경 sudo vi /etc/ssh/sshd_config # /PasswordAuth 엔터로 검색해서 PasswordAuthentication yes로 변경하면 키 대신 비밀번호로 인증 가능 sudo service sshd restart kops는 도메인이 있는 상태로 연결하거나 없는 상태로 연결하는 두 가지가 있는데, 저는 장기간 사용이 아닌 단기 사이드 프로젝트이기 때문에 가비아를 통해 1년 500원하는 s..

클라우드 서버는 제일 유명한 건 구글 GCP, 아마존 AWS 그리고 프리티어가 있는 오라클 OCI 등이 있지만 이번에는 AWS를 이용하여 서버를 구성해보겠습니다. 오라클 프리티어는 사실 프리티어 자체로는 쿠버네티스를 구현하기엔 사양이 부족합니다. AWS도 쿠버네티스 구현하다보면 프리티어 범위를 벗어납니다. 대략적으로 AWS 인스턴스 생성 및 기본 설정 kops를 이용해서 쿠버네티스 클러스터 구성 + 500원짜리 도메인 구매해서 사용하기 EC2에 젠킨스 설치 마스터노드에서 helm 설치 helm으로 젠킨스 설치 젠킨스에 깃헙을 이용해서 배포 구성 argoCD로 배포 MSA 소스 배포 를 만들어 보겠습니다. 사용툴은 AWS, kops, EC2, Kubernetes, Jenkins(젠킨스 내 각종 플러그인),..