본문 바로가기
Chapter01/Kubernetes

[ Kubernetes ] MetalLB와 Ingress를 사용해 외부에서 접근 가능한 인프라 구축

by EmmaDev_v 2024. 9. 30.
반응형

▼ ▼ ▼ ▼ ▼ 배포 ▼ ▼ ▼ ▼

https://dev-emma-dev.tistory.com/233

 

[ Kubernetes ]MetalLB와 Ingress 사용해 배포하기

1. DeploymentDeployment는 애플리케이션의 배포와 관리를 위한 Kubernetes 리소스. 특정 수의 파드를 실행하고, 파드의 상태를 관리합.apiVersion: apps/v1 kind: Deployment metadata:   name: mailserver-deployment spec:  

dev-emma-dev.tistory.com



전체 과정

  1. Mailserver 도커 이미지 빌드: 먼저 Postfix와 같은 메일 서버 소프트웨어를 사용해 Docker 컨테이너로 실행될 메일 서버를 만듭니다. Dockerfile을 작성하고, 메일 서버 이미지를 빌드한 후 DockerHub와 같은 저장소에 업로드합니다.
  2. Kubernetes에 배포: 메일 서버 이미지를 Kubernetes 클러스터에 배포합니다. 이때 Deployment와 Service라는 설정 파일을 이용해 서버가 자동으로 여러 서버에 배치되도록 합니다.
  3. MetalLB 설정: MetalLB를 사용해 이 메일 서버에 외부에서 접속할 수 있도록 고정된 IP 주소를 할당합니다. 클러스터가 클라우드에 있는 경우와 다르게, MetalLB가 외부 네트워크와의 통신을 가능하게 해줍니다.
  4. Ingress 설정 (필요시): 만약 메일 서버 외에 웹 메일 같은 서비스도 같이 운영해야 한다면, Ingress를 사용해 mail.example.com이나 webmail.example.com과 같은 도메인으로 트래픽을 전달할 수 있습니다.
  5. Opentelemetry를 통한 모니터링: 마지막으로, 이 메일 서버가 어떻게 동작하는지 성능을 모니터링하는 도구인 Opentelemetry를 활용해 메일 서버의 성능 데이터를 수집하고, 서버가 제대로 작동하는지 모니터링할 수 있습니다.

 

 

LoadBalancer와 MetalLB

Kubernetes에서 외부 트래픽을 애플리케이션으로 전달하려면 LoadBalancer라는 기능을 사용함. 하지만 클라우드가 아닌 자체 서버에서 Kubernetes를 실행하는 경우에는 기본적으로 외부 IP 주소를 할당할 수 있는 기능이 없기 때문에  MetalLB라는 소프트웨어를 사용함. MetalLB는 클라우드 외부에 있는 Kubernetes 클러스터에 외부 IP 주소를 할당하는 네트워크 로드밸런서. 이 IP 주소를 통해 클러스터 내부에서 실행되는 서비스에 외부에서 접근할 수 있다.

Ingress

Ingress는 Kubernetes에서 외부 트래픽(HTTP, HTTPS)을 관리하는 시스템. 여러 애플리케이션에 대해 도메인 기반 트래픽 라우팅 설정한다.즉 여러 서비스가 있을 때, Ingress는 외부에서 들어오는 요청을 특정 서비스로 라우팅하는 역할을 하는 것임. 예를 들어, mail.example.com으로 들어오는 요청은 메일 서버로, web.example.com으로 들어오는 요청은 웹 서버로 보내도록 설정할 수 있다. 

Mailserver

이메일을 보내고 받는 서버임. 메일 서버는 이메일이 전송될 때 중간에서 발송하고, 수신할 때 메일을 받는 역할을 합니다. SMTP(Simple Mail Transfer Protocol), IMAP(Internet Message Access Protocol) 같은 프로토콜을 통해 이메일을 주고받는다. 여기서는 Postfix와 같은 소프트웨어로 메일 서버를 구현할 수 있음.

반응형