개발자 블로그를 위한 다섯걸음

개발자 블로그를 위한 다섯걸음

이제 metalLB가 설치되어 쿠버네티스의 어플리케이션들이 외부로 서비스 할 준비가 되었습니다. 이제 ingress를 설치하고 metalLB와 연결해 원하는 어플리케이션들이 외부에 서비스 할 수 있도록 한 발자국 더 나아가도록 하겠습니다. 먼저 ingress란 무엇인지 간략하게 설명하고 설치방법에 대해 다루겠습니다.

개발자 블로그를 위한 네걸음
기본적인 서버 구성이 완료되었고 쿠버네티스 (Kubernates)가 준비가 되었지만, 아직도 블로그 구축을 위한 세팅이 끝나지 않았습니다. 이전 포스팅에서는 정상적으로 ‘작동’만 하는 쿠버네티스를 설치했을 뿐이고, 블로그 구축을 위해 부가적인 세팅을 위해 한 발자국 더 나아가도록 하겠습니다. 개발자 블로그를 위한 세걸음기본적인 서버 구성이 완료되었고 블로그를 위한 작업을 한 발자국 더 나아가도록 하겠습니다.

ingress란?

쿠버네티스 클러스터 외부에서 내부 서비스로의 HTTP 및 HTTPS 트래픽을 관리하고 라우팅 역할을 하는 쿠버네티스 리소스입니다. 그 중 대표적인건 nginx ingress controller가 있으며, haproxy, traefik 등 도 존재하며 aws 환경같이 클라우드 환경에서는 환경에 맞는 별도의 ingress controller가 존재합니다.

웹서비스를 목적으로 하는 외부 트래픽에 대한 라우팅 역할을 하는 리소스 라고 정의 할 수 있습니다.

graph LR; client([client])-. Ingress-managed
load balancer .->ingress[Ingress]; ingress-->|routing rule|service[Service]; subgraph cluster ingress; service-->pod1[Pod]; service-->pod2[Pod]; end classDef plain fill:#ddd,stroke:#fff,stroke-width:4px,color:#000; classDef k8s fill:#326ce5,stroke:#fff,stroke-width:4px,color:#fff; classDef cluster fill:#fff,stroke:#bbb,stroke-width:2px,color:#326ce5; class ingress,service,pod1,pod2 k8s; class client plain; class cluster cluster;

nginx-ingress-controller 설치

  1. nginx-ingress-controller 설치

역시 helm을 통해 설치를 진행을 하고 이전 포스팅들에서 사용했던 bitnami 레포지토리의 nginx-ingress를 설치했기 때문에 레포 추가를 생략하고 진행합니다.

helm upgrade --install nginx-ingress-controller bitnami/nginx-ingress-controller -n nginx-ingress --create-namespace --set controller.replicaCount=1 --set service.type=LoadBalancer

replicaCount=1 설정을 바꾸는 이유는 chart 내의 설정이 기본으로 replica 갯수가 2개로 지정되어 있어, logs 상에 warning 페이지를 띄우기고 조회를 했을 때 READY가 1/2로 출력되어 항상 신경쓰이기 때문에 변경하였습니다. (클러스터 갯수를 늘리고 리소스를 더 분배한다면 추가할 수 있지만 아직까진 계획이 없습니다.)

또한 이전 포스팅에서 설치한 MetalLB를 통해 ingress를 외부와 연결시키기 위해 service.type=LoadBalancer 를 추가해서 설치를 진행합니다.

설치가 완료되면 nginx-ingress를 다음과 같은 확인해볼 수 있고, MetalLB가 정상적으로 작동했다면, extrenal-ip에 이전 포스팅에서 설정한 아이피들 중 하나가 할당이 되는 것을 확인할 수 있습니다.

  1. 포트포워딩
💡
쿠버네티스에서 생성하는 pod의 PORT는 다를 수 있으니 내용을 참고하시기 바랍니다.

위의 스크린샷에서 controller의 PORT 도 확인을 해야하며, 80번 포트와 443번 포트는 공유기에서 확인 할 수 없는 192.168.0.251 이라는 아이피에 할당되어 있으며, (이전 포스팅에서 설정한 MetalLB와 공유기 설정으로 쿠버네티스 클러스터에서만 접근이 가능한 아이피입니다) 이를 현재 노드(192.168.0.100)의 31599포트 와 30585포트로 연결되어 있습니다.

이것을 공유기의 포트포워딩으로 연결해주면,

  1. 외부에서 80/443 포트로 접근
  2. 공유기의 포트포워딩으로 서버 (192.168.0.100)의 31599/30585 포트로 전달
  3. nginx-ingress 와 metalLB 를 통해 특정 pod의 서비스의 80/443 포트로 전달

하는 구조로 작동되게 됩니다.

이제 집에서 평범하게 사용하던 공유기와 구형 컴퓨터만으로 구성한 쿠버네티스를 구축하게 되었습니다. 이제 쿠버네티스에서 '웹'서비스를 자유롭게 운용할 수 있게 되었습니다.

예시 nginx 접속 화면

Read more

푸름이세요? 아니요 구름인데요

푸름이세요? 아니요 구름인데요

클라우드 컴퓨팅(Cloud Computing) 이란? 클라우드 컴퓨팅은 IT 인프라를 손쉽게 관리할 수 있도록 도와주며, 확장성과 유연성을 제공하는 기술입니다. 물리적인 서버를 직접 구매하지 않아도 되며, 필요한 만큼의 자원을 사용하고 비용을 절감할 수 있다는 점에서 많은 기업과 개인이 활용하고 있습니다. 클라우드 서비스의 유형을 크게 세 가지 모델로 나눌 수 있습니다. 인프라스트럭처 서비스(

By hyobin
빔슬람(Vimslam)이 되보자

빔슬람(Vimslam)이 되보자

Vim이란? Vim은 서버에서 작업하는 사람들 사이에서 유용한 텍스트 편집기입니다. UNIX 시스템에서 표준 편집기였던 VI의 개선판으로 Vi Improved의 약자입니다. 그래서 대부분의 유닉스기반(리눅스를 포함한) 운영체재에 설치되어있고 작동합니다. Vim은 다음과 같은 특징을 갖고 있습니다. * 모드 기반 편집 Vim은 입력 모드와 명령 모드로 구분됩니다. 사용자는 명령 모드에서 편집, 삭제, 검색 등을 빠르게 할

By hyobin