Pod를 새롭게 생성하면 Master Node(Control plane)의 Scheduler가 pod를 실행시킬 node를 선택하고 배치한다.그럼 이 Scheduler는 어떤 기준으로 pod를 실행시킬 node를 결정하는 것일까?cluster내의 node들은 모두 같은 사양을 가질수도 있지만, 각기 다른 스펙의 사양을 가질 수도 있다. 워크로드 또한 리소스 자원을 많이 요구하는 것이 있고, 비교적 적은 양을 요구하는 것이 있다. 각 node들의 리소스를 효율적으로 사용하기 위해서는 다양한 제약 조건과 요구사항 등을 고려하여 pod를 배치해야한다. 특정 워크로드가 적합한 노드에서 실행되도록 할 수 있다.이번 글에서는 Label과 Selector, 추가로 Annotation에 대해 알아보도록 한다. Labe..
Study
최근에 작업하고 있는 프로젝트에 API용 django가 하나있다. 이 django를 프론트가 사용할 수 있도록 EC2에 호스팅을 하는 중이다. 개발 중간중간에 변경사항들을 매번 인스턴스에 접속해서 재시작해주는 과정이 번거로워 간단하게 Github Actions를 이용해 code가 push되면 그 내용을 반영시켜 바로 배포되도록 구성을 해보았다. 이번에는 django 프로젝트를 EC2 인스턴스에 배포하는 Github Actions 파이프라인을 구성해보도록 한다.EC2에 배포되는 django 서버는 Docker로 컨테이너화 시켜서 docker-compose를 이용해 배포하도록 한다. 이 글에서 다루는 전체적인 배포 파이프라인은 다음과 같다. AWS Credential 설정Github Actions를 실행하는..
졸업 캡스톤 프로젝트에서 사용해보기 위해 라즈베리파이 4B 모델을 구하게 되었다.그리고 이 라즈베리파이에 카메라 모듈도 연결해 영상 스트림을 생성해야했었다.이번에는 라즈베리파이의 초기 설정과 카메라 모듈까지 연결하는 과정을 알아보도록 한다. 라즈베리파이 초기 설정먼저 제품 박스를 열면 손바닥 크기도 채 안되는 사이즈의 메인보드 기판이 나오게 된다.번외로 라즈베리파이 4B의 단자 구성은 아래와 같다.USB 2.0 포트 X 2USB 3.0 포트 X 2기가비트 이더넷 포트micro HDMI 포트 X 2USB-C 파워 포트 먼저 파이에 들어갈 OS를 설치해주어야 한다.기본적으로 파이는 SD카드를 스토리지로 삼는다. SD카드 슬롯은 좌측 (USB 포트 반대편) 하단에 위치한다. ..
이번에는 Public Cloud의 Kubernetes 서비스와 로드밸런서 서비스의 연동을 진행해본다.Naver Cloud Platform(이하 NCP)의 Kubernetes 서비스, NKS를 이용해볼 것이며 로드밸런서에 SSL 인증서까지 연결하는 과정까지 진행해보도록 한다. 사용된 예제 ALB Ingress Controller 활용 예제 guide.ncloud-docs.com NKS 클러스터 생성NKS에 클러스터를 생성하고, 이 클러스터에 접속해서 작업하기 위해 몇가지 선행작업이 필요하다. 1. ncp-iam-authenticator 설치 및 설정NKS의 API를 호출하기 위해 IAM 인증이 필요하다. 이를 위해 ncp-iam-authenticator를 다운받아야한다. ncp-iam-authenticat..
앞서 알아보았던 Service 중 외부 요청을 처리하기 위한 것에는 NodePort가 있었다. NodePort는 클러스터 내의 모든 노드에 특정 포트를 오픈시켜 외부로부터 접근할 수 있도록 하는 서비스이다. 이러한 방식으로 클러스터 내부 네트워크로 접근하는 방식에는 사실 몇가지 애로사항이 존재한다. 포트 사용 문제 NodePort는 각 서비스별로 하나의 포트를 고정으로 사용한다. NodePort 기본 정의에 따라 30000~32767 사이의 포트만 지정해줄 수 있다. SSL 인증서 사용 불가 이러한 애로사항을 해결해주기 위해 LoadBalancer 서비스를 사용할 수 있다. 하지만 LoadBalancer는 Public Cloud에 많이 의존하게 되는 것부터 노출시킬 서비스에 대해 각각 IP주소를 가진다는..
데이터모델링의 이해 데이터 모델링 설계과정에서 시스템의 중요한 개념을 논리적인 데이터 모델로 구성하는 작업 물리적인 데이터베이스 모델 구현부터 시스템 데이터베이스 반영과정을 포함 단순히 데이터를 다루는 것이외에도 시스템의 구체적인 흐름을 정의하는데에도 영향을 끼침 정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법 현실세계의 데이터에 대해 약속된 표기법으로 표현하는 과정 데이터베이스를 구축하기 위한 분석/설계의 과정 데이터 모델링의 3단계 개념적 데이터 모델링 높은 추상화 수준, 포괄적인 수준의 모델링 논리적 데이터 모델링 Key, 속성, 관계를 표현, 재사용성 높음 물리적 데이터 모델링 물리적인 성격을 고려해 설계 데이터 모델링의 3요소 Thing (어떤 것) Attributes (속성) Rela..
Helm kubernetes의 패키지 매니저, 배포하는 환경에 따라 설정값을 따로 정의해서 배포할 수 있도록 패키지 매니저 역할을 한다. Helm에서 패키지는 ‘Chart’라고 하며, chart는 kubernetes 애플리케이션의 리소스 정의로 이루어진다. Helm을 통해 Chart를 설치하는 과정은 Chart가 정의된 helm repo를 추가하고, 해당 repo를 통해 install한다. Helm 아키텍쳐 Helm 아키텍쳐의 구성요소에는 쿠버네티스 클러스터, Helm 클라이언트, Helm Chart Repository가 있다. Helm 클라이언트가 Chart Repository로부터 Chart를 다운로드받고, 이 Chart를 기반으로 쿠버네티스 클러스터의 API 서버와 통신해 Chart를 적용하게 된다..
이번에는 간단한 프로젝트를 Github Actions를 통해 CI/CD 파이프라인을 구성하고 테스트해보도록 한다. 초기 세팅 먼저, 테스트에 사용할 Repository를 하나 생성해준다. 이 Repository를 clone해주고, 내용을 추가한다. 이번에는 따로 코드를 작성하지 않고, Spring 프로젝트를 하나 가져와서 추가해주었다. GitHub - spring-projects/spring-petclinic: A sample Spring-based application A sample Spring-based application. Contribute to spring-projects/spring-petclinic development by creating an account on GitHub. gith..