DevOps

    [K8S] 쿠버네티스 구성요소

    [K8S] 쿠버네티스 구성요소

    쿠버네티스의 구성 요소의 유기적인 연결 관계를 표현하면 다음과 같다. 하나의 쿠버네티스 생태계를 쿠버네티스 클러스터라고 한다. 파드를 배포하는 순서에 따라서 요소들의 역할을 알아보자 마스터 노드 : 클러스터의 '두뇌' 역할을 담당한다. kubectl 쿠버네티스 클러스터에 명령을 내리는 커맨드라인 도구이다. docker를 사용하기 위해서 모든 명령어가 docker ... 로 시작하는데, 쿠버네티스도 마찬가지로 클러스터에 명령을 내리기 위해서는 kubectl .. 이 명령의 시작이 된다. 일반적으로 개발자는 API 서버와 주로 통신하므로 API가 서버가 위치한 마스터 노드에 구성된다. 자주 쳐야하는 명령어지만 타이핑이 까다로워서 alias kbc='kubectl'로 설정하면 편하다. API 서버 쿠버네티스 ..

    [K8S] 컨테이너 이해하기

    [K8S] 컨테이너 이해하기

    컨테이너 인프라 환경이란 리눅스 운영 체제의 커널 하나에서 여러 개의 컨테이너가 격리된 상태로 실행되는 인프라 환경을 말한다. 컨테이너 하나 이상의 목적을 위해 독립적으로 작동하는 프로세스이다. 개인 환경(개인 PC)에서는 1명의 관리자(사용자)가 다양한 프로그램을 사용하므로 각각의 프로그램을 컨테이너로 구현할 필요가 없다. 하지만 기업 환경에서는 다수의 관리자가 수백, 수천대의 서버를 함께 관리하기 때문에 일관성을 유지하는 것이 매우 중요하다. 여러 사람이 만져서 설정의 일관성이 떨어진 서버를 SnowFlake Server(눈송이 서버)라고 한다. 이런 경우에 컨테이너 인프라 환경을 구성하면 효과적이다. 또한 가상화 환경에서는 각각의 가상 머신이 모두 독립적인 운영체제 커널을 가지고 있어야 하기 때문에..

    [Docker] 컨테이너 기능별, 포트별 분리 (feat. nginx)

    QuantManegement 퀀트 투자의 간편화 quant.or.kr 현재 진행중인 프로젝트 웹 페이지이다. 페이지를 구성하기 위해서는 현재 상장된 약 2400개 기업의 재무제표를 모두 크롤링 해와야 한다. 단순히 빠르게 크롤링 하려면 파이썬의 병렬 스레드나 멀티 프로세싱 기술을 사용해서 크롤링 하면 수십만개의 재무제표를 크롤링 하는데 그리 오랜 시간이 걸리지 않을 것이다. 하지만 크롤링을 하기위해서 접근하는 opendart 페이지와 opendart의 api를 사용하기 위해서는 1분당 접근이 1000회를 넘어가서는 안되며 하루에 10000번으로 접근횟수가 제한되어있다. 따라서 재무제표 크롤링은 시간을 들여야하는 조심스러운 작업이라고 생각했고, 크롤링을 위한 컨테이너를 따로 만들어줘서 안정적인 크롤링 환경..

    [Nginx] ip_hash method 주의사항 (backup X)

    일기식 Nginx.conf 파일에서 upstream server를 정의하는곳에서 발생한 오류이다. upstream quant { # default = round_robbin; # least_conn; ip_hash; server quant_home1:8000; server quant_home2:8001; server quant_home3:8002; server quant_backup:8003 backup; } 현재 진행중인 프로젝트의 서버를 포트 4개로 나눠서 서비스하려고 했다. 3개의 컨테이너는 round-robbin 방식으로 서로 균등하게 부하는 나눠가지는 방법을 선택했고, 만약 모든 컨테이너가 오류가 나서 사용하지 못하는 상황이라면 8003번 포트의 컨테이너를 backup 서버로 지정해 두었기 때문..

    [Nginx] Nginx HTTPS 및 cerbot SSL 인증서 적용

    certbot 컨테이너를 사용해 SSL 인증서 발급받기 백엔드의 비즈니스 로직을 마무리했다면 내 기준 가장 중요하다고 생각하는 배포 단계가 남아있다. 클라우드에 WAS 서버를 올리고, Nginx를 연결해 80번 포트로 통신하게 둔다면 편하게 웹사이트 hyeo-noo.tistory.com 위 포스팅을 따라서 인증서를 발급받고 난 후 Nginx.conf 파일을 어떻게 설정해 주면 되는지에 대한 글이다. Nginx 파일 worker_processes auto; events{ worker_connections 1024; use epoll; } http { upstream quant { server quant_home:8000; } client_max_body_size 100M; server{ listen 443..

    AWS Lightsail 외부 도메인 연결하기 - 후이즈

    프로젝트를 배포하면서 팀원들과 도메인을 정하게 되었다. 다양한 사이트를 돌아다니면서 원하는 도메인을 찾아본 결과... quant.or.kr 이라는 그럴듯한 도메인을 건지게 되었다. '후이즈'라는 곳에서 1년 도메인을 구매했다. 하지만 내 서버는 AWS이기 때문에 둘을 연동시켜 줘야한다. 이제 어떻게 해야 quant.or.kr을 브라우저에 입력했을 때 올바른 ip주소를 호출할 수 있는지 알아보자. 후이즈 DNS 네임서버 변경하기 로그인을 하고, 위 그림에 보이는 등록정보/네임서버 변경 탭에 들어간다 등록정보/네임서버 변경 탭에 들어와서 자신의 도메인을 체크하고 네임서버 변경 탭에 들어간다. 그리고 변경 네임서버 정보 블럭에서 '사용할 네임서버 직접 입력' 을 체크하고 아래 네임서버를 입력해야한다. 하지만 ..

    [Docker] certbot 컨테이너를 사용해 SSL 인증서 발급받기

    [Docker] certbot 컨테이너를 사용해 SSL 인증서 발급받기

    백엔드의 비즈니스 로직을 마무리했다면 내 기준 가장 중요하다고 생각하는 배포 단계가 남아있다. 클라우드에 WAS 서버를 올리고, Nginx를 연결해 80번 포트로 통신하게 둔다면 편하게 웹사이트를 구동할 수 있다. 하지만 http로만 통신할 수 있는 웹 사이트는 어딘가 불안정해 보인다. 기본적인 암호화가 제공되지 않기 때문에 로그인을 할 때마다 비밀번호 노출에 대한 위험을 항상 감수해야 할 것이다. 따라서 앞으로 배포할 모든 서비스에 대해서 나는 SSL + HTTPS로 배포할 것이다. SSL 인증서를 발급받기 위해서 무료로 인증서를 발급해주는 기관인 'Let's Encrypt'가 공식적으로 지원하는 certbot을 사용할 것이다. Certbot의 도메인 인증 절차 인증서를 발급받기 전에 certbot이 ..

    [Nginx] 웹 서버 Nginx 에 대해서...

    [Nginx] 웹 서버 Nginx 에 대해서...

    최근 수정일: 2022/05/24 Django로 구축한 API 서버와 React를 연결하고 배포하기 위해서 Nginx를 사용해보았다. Django와 React를 연결하기 위해서 웹 서버와 Nginx에 대한 이해가 반드시 필요했고, 앞으로 Nginx를 공부하며 알게 되는 지식들을 최대한 자세히 이 포스팅에 담을 예정이다. 그리고 Nginx만 다루는 게 아니라 웹 서버의 전반적인 이해를 위해서 조금이라도 궁금한 점이 생기면 옆길로 계속 새어나갈 예정이다. Nginx란? #1 간단히 말해서 경량화된 소프트웨어 웹 서버이다. Nginx는 Single-thread로 동작하며 비동기 non-blocking I/O 이벤트 기반으로 요청을 처리한다. 따라서 적은 자원으로 효율적인 트래픽 처리가 가능하다. (멀티 스레드..

    Comparison: AWS vs Azure vs GCP

    Comparison: AWS vs Azure vs GCP

    클라우드 컴퓨팅이란 인터넷 기반 컴퓨팅의 일종이다. 인터넷상의 가상화된 서버에 프로그램을 두고 필요할 때마다 컴퓨터나 스마트폰 등에 불러와 사용하는 서비스이다. 클라우드(Cloud)라는 단어가 말해주듯, 인터넷 통신망 어딘가에서 구름에 싸여 보이지 않는 컴퓨팅 자원(CPU, 메모리, 디스크 등)을 원하는 대로 가져다 쓸 수 있다. 구름에 싸여 있다는 것은 그 내부를 알지 않아도 얼마든지 내가 원하는 것을 꺼내어 사용할 수 있다는 것이며, 인터넷이 연결된 어느 곳에서든 이것을 보장받을 수 있다는 뜻이다. 클라우드의 장점으로는 서버를 직접 구매할 때 고려해야 할 전력, 위치, 서버 세팅, 확장성을 고민하지 않고 서비스 운영에만 집중할 수 있다는 점이다. 이러한 장점 덕분에 클라우드 서비스 인프라 시장의 매출..

    [Docker] Docker Swarm 서비스하기

    [Docker] Docker Swarm 서비스하기

    [Docker] Docker Swarm에 대해서 [Docker] docker-compose로 편하게 개발환경 구성하기 [Docker] Django 개발 환경 세팅 #1 [Docker] MariaDB - docker로 관리하기 [Docker] Nginx 웹서버 구동해보기 컨테이너에 대하여 [Container 시리즈] 00. Co.. hyeo-noo.tistory.com 지난 포스팅에서 도커 스웜의 필요성을 정리했었다. 지금까지 한 내용을 요약해보면 개별적인 이미지들을 하나씩 컨테이너로 수동으로 만들어 주고 컨테이너끼리 연결해보았다. 컨테이너 설정을 모아둘 수 있는 docker-compose를 이용해서 한 번에 필요한 모든 컨테이너를 가동시켰다. 이제 docker swarm을 시작하고 지금까지 만들었던 컨테..