본문 바로가기

💻 개발/졸업과제20

졸업과제 수상 및 회고 졸업과제는 성공적으로 마무리가 되었다!! 네트워크·클라우드·블록체인 분과에서 금상을 수상하였다. 🏆 다양한 시도와 노력을 한 덕분에 좋은 결과를 얻게 된 것 같아서 뿌듯하다. 전체적으로 이번에 진행하게 된 졸업과제를 통해 서비스가 어떻게 구성이 되어있고, 어떻게 동작하는지에 대해 많이 알아갈 수 있었다. 또한, MSA 방식으로 여러 개의 서버를 구축해서 사용했기 때문에, 각각의 서버들이 서로 어떻게 통신을 하는지에 대해서도 알 수 있게 되었다. 구현하는 과정에 있어서는 정말 힘들었다. 이론으로만 알고 있던 멀티클라우드를 실제 서비스에 적용시키는 것과 kubernetes도 쉽게 이해할 수 있는 내용이 아니었고, docker를 선 지식으로 알고 있어야 했기 때문이다. 하지만, 고생한 만큼 실력이 많이 성장한.. 2023. 11. 13.
서비스 배포하기 이제 서비스 배포해보자. 이제까지 했던 과정을 한번에 정리하기 위해 서비스 배포는 글을 마지막에 작성하려고 했다. 크게 보면 3가지로 구성되어있다. SpringBoot & MariaDB Flask https 접속 [SpringBoot & MariaDB] 0) code 작성하기 application yml 파일 분리하기 docker-compose 파일 작성하기 (springboot, mariadb) Dockerfile 작성하기 1) EC2 구축 ubuntu 22.04 / t2.micro / EBS 10GiB t2.micro로는 RAM이 작기 때문에 memory를 늘리기 위해 swap을 해주었다. 2) JDK 17 설치 # Install JDK 17 sudo apt update sudo apt install.. 2023. 10. 19.
kubernetes server에서 flask 서버로 정보 전송 사용자의 가상 환경을 그대로 보존하여 Private Docker Registry에 저장하려고 한다. 구현하기 위해 만족해야 하는 상태는 2가지이다. 사용자의 가상환경이 Kubernetes Server에서 상태 유지가 되고 있는가? 가상환경을 그대로 보존하여 Docker Image로 만들 수 있는가? [가상환경 상태 유지하기] 참고 링크 https://nirsa.tistory.com/157 사용자의 가상 환경(pod)에 pv, pvc를 할당해 상태를 유지한다. [Docker Image로 만들기] 팀원과 의견을 나누는 도중에 전체적인 IDEA 흐름이 나오게 되었다. 내가 제시한 방법은 다음과 같다. Kubernetes에서 Flask로 사용자의 container image 정보 전달 (kubectl cp) F.. 2023. 10. 19.
kubernetes 사용하기 (2) (with nCloud) 동적으로 노드의 ip를 추출하는 방법을 구현해보자. 구현 아이디어 구현 아이디어는 다음과 같다. 노드의 ip와 추출한다. pod에 할당된 노드의 이름을 알아낸다. 노드의 이름에 해당하는 노드의 ip를 찾는다. kubectl get nodes -o wide 위의 명령어를 입력했을 때, 나오는 EXTERNAL-IP와 실제 노드에 할당된 공인 ip가 동일한 것을 확인 코드 작성 [노드 IP 추출하기] # node의 이름과 ip를 추출하기 위한 용도 def extractNodesInfo(): result = os.popen("kubectl get nodes -o wide --kubeconfig /root/kubeconfig.yml").read() print("result:", result) nodeInfoLis.. 2023. 10. 4.
kubernetes 사용하기 (with nCloud) kubernetes를 어떻게 적용해야 할까? IDEA 1 사용자 1명 당 1개의 Pod를 할당하고 해당 Pod에서 사용자별 container 관리하기 [구현 상세 IDEA] 1) 사용자가 가상 환경 container(container A)를 생성한다. (이때, Pod 1개가 새롭게 생성됨) a. 사용자에게 생성된 Pod가 없을 때만, Pod가 새롭게 생성됨 2) 사용자가 다른 가상환경 container(container B)를 1개 더 생성한다. 3) 이때, 미리 생성된 Pod(container A가 있는 Pod)에 container B가 할당된다. IDEA 2 Pod를 만들어 놓고, Pod yaml 파일에 사용자를 추가하는 방식 (사용자 1명 당 vCPU 1EA, 2GB) [구현 상세 IDEA] 1) .. 2023. 10. 4.
Kubernetes Service 사용해보기 Kubernetes Service를 생성하는데 필요한 리소스 파악해보자. 클러스터 생성 전 사전 작업 [VPC] [Subnet (VPC 내부에 있음) - public] public으로 설정하면 lb에서 사용 불가 [Subnet - private] [Kubernetes Service 생성하기] 2023. 9. 10.
Harbor 접속 문제 해결하기 .. (EBS 늘리기) 비밀번호 5번인가 틀리니까 접속 안되게 함 … (접속 안되는 이유 추측) 진짜 이유는 ec2 용량이 부족해서 8기가에서 15기가로 변경하고 오기 진짜 원인을 파악하고 나서 EBS 볼륨을 확장하기로 하였다. [AWS] EC2 Instance의 볼륨 확장하는 방법 총 2가지 작업으로 이루어져있다. 1) 콘솔 작업 2) CLI 작업 lsblk 문제 발생 mkdir: cannot create directory ‘/tmp/growpart.1531606’: No space left on device FAILED: failed to make temp dir 디스크 공간 부족.. apt 캐시 삭제해주기 apt-get clean 2% 지워짐 파티션 확장 확인 마운트 영역 확인 df -hT resize2fs [파일 시스템.. 2023. 9. 9.
줄인 EBS로 ASG의 AMI 변경하기 줄인 EBS로 반영하고 싶어서 ASG의 AMI를 반영해보자. ASG로 생성되는 인스턴스 확인해보기 [접속 확인] 2023. 8. 17.
EC2의 EBS 볼륨 줄이기 Private Docker Registry의 EBS 볼륨을 줄여보자. (15GiB → 8GiB) 참고 링크 [Linux] EC2 EBS 부팅 볼륨 축소 (ext 4 / Amazon Linux 1) [EC2 인스턴스 스냅샷 생성 & 스냅샷으로 EBS 볼륨 복제] 우선, 인스턴스가 실행 상태이어야 한다. 시간이 조금 지나면 사용 가능으로 변경됨 [주의!!] [원본 EC2 인스턴스와 같은 OS로 EC2 신규 생성 & EBS 볼륨 떼기] 원본 EC2와 동일한 설정의 EC2를 생성 스토리지는 전보다 작게 (가장 기본 8GB로 함) 원본 EC2는 실행 중지 시키기 [Temp 인스턴스 생성 & EBS 모두 연결] 디스크 복제 작업을 진행할 임시 인스턴스 생성 및 EBS 연결 단계 위와 같은 방식으로 2개 다 연결해준.. 2023. 8. 16.
EC2를 가상 이미지로 만들기(AMI) - Private Docker Registry 바로 전 글에서 언급된 Private Docker Registry의 EC2를 인스턴스 이미지화 해보자. EC2 이미지화 끝!! 다른 작업에 비하면 간단한 것 같다. 2023. 8. 16.
Private Docker Registry 구조 변경하기 기존의 Private Docker Registry에서 HA를 고려하여 Private Docker Registry의 구조를 변경해보자. 변경된 내용 Auto Scaling과 Load Balancing을 이용해서 HA를 구현해보자. 1) LB 수정하기 전에 생성한 EC2에 연동된 로드밸런서 설정을 확인하자 우선, lb가 EC2와 VPC안에 있는지 확인해보자. VPC 영역을 보면 같은지를 확인할 수 있다. (확인해보니 같음) 다음으로는 ec2의 보안그룹과 같은지 확인해보자. [보안] 탭에서 확인을 해보니 다른 보안 그룹이다. [편집]을 클릭해 변경해주자. 2) Auto Scaling Group 생성하기 [시작 템플릿 만들기] 우선, ASG에 적용할 시작 템플릿을 만들자 나머지 설정은 그대로 두었다. [ASG .. 2023. 8. 15.
Container Manager 환경 구축하기 Container Manager 환경을 구축해보려고 한다. (AWS 1개의 클라우드만 사용하는 경우) Container Manager는 사용자의 가상 환경이 실행되고, 관리되는 서버이다. 프로젝트 초반에 적용하려고 했던 방법인데, 현재는 사용하지 않고, Naver Cloud의 Kubernetes를 사용하고 있다. 이 글 다음에 포스팅 될 Private Docker Registry 구조 변경하기 방법을 적용시켰다. HA가 적용된 Container Manager를 구축 다음 글에 자세히 기록될 예정이라, 간단하게 언급만 하고 넘어가도록 하자! [LB 만들기] 1) 대상 그룹 생성 2) LB 만들기 (Application Load Balancer) [Route 53에서 domain - LB 연동] 1) Rou.. 2023. 8. 15.