MSA 트레이닝 센터

NGINX Service Mesh 시작하기

이 트레이닝 영상에서는 제품 관리자 Alan Murphy가 NGINX Service Mesh를 배포하고 구성하는 과정을 안내합니다. 기본 기능에 대한 간략한 개요를 살펴보고 클러스터에 NGINX Service Mesh를 배포하는 방법, NGINX Service Mesh로 애플리케이션 배포를 시작하는 데 필요한 모든 것을 배우게 됩니다.

NGINX Service Mesh 시작하기

이 가이드는 NGINX Service Mesh를 배포하고 구성하는 방법을 배우기 위한 첫걸음으로, 기본 기능 개요 및 클러스터 내 배포 절차를 단계별로 안내합니다. 이 문서를 통해 NGINX Service Mesh를 사용하여 애플리케이션 배포를 시작하는 데 필요한 모든 정보를 제공합니다.

NGINX Service Mesh란 무엇인가?

NGINX Service Mesh는 클라우드 네이티브 애플리케이션을 위한 서비스 메쉬 솔루션으로, 애플리케이션 간 통신을 관리하고 제어하기 위한 도구입니다. 주요 기능은 다음과 같습니다:

  • 트래픽 관찰 및 제어: 요청 라우팅, 로드 밸런싱, 트래픽 정책 설정.

  • 보안 강화: mTLS를 통한 서비스 간 통신 암호화.

  • 가시성 제공: 대시보드와 메트릭으로 애플리케이션 상태 및 성능 모니터링.

  • DevOps 친화성: CI/CD 파이프라인과의 손쉬운 통합.

배포 사전 요구사항

NGINX Service Mesh를 설치하기 전에 다음 요구사항을 충족해야 합니다.

시스템 요구사항

  • Kubernetes 클러스터: v1.19 이상.

  • kubectl: 설치 및 클러스터에 접근 가능.

  • Helm: v3.0 이상 설치.

네트워크 요구사항

  • 클러스터 내에서 서비스 간 통신이 가능해야 합니다.

  • 외부 인터넷에 대한 접근이 제한적인 경우, 필요한 이미지가 로컬 레지스트리에 있어야 합니다.

NGINX Service Mesh 배포 절차

Helm 차트를 사용한 설치

Helm 리포지토리 추가:

				
					helm repo add nginx-stable https://helm.nginx.com/stable
helm repo update
				
			
Namespace 생성:
				
					kubectl create namespace nginx-mesh
				
			
NGINX Serviceh Mesh 설치
				
					helm install nginx-mesh nginx-stable/nginx-service-mesh \
    --namespace nginx-mesh \
    --set controller.service.type=LoadBalancer
				
			
  • 설치가 완료되면 모든 필요한 컴포넌트가 클러스터에 배포됩니다.
  • nginx-mesh 네임스페이스에 컨트롤 플레인 및 mTLS 기능이 활성화된 프록시가 구성됩니다.
설치 확인
				
					kubectl get pods -n nginx-mesh
				
			

모든 Pod가 Running 상태인지 확인합니다.

클러스터 내 서비스 자동 등록

NGINX Service Mesh는 사이드카 프록시를 자동으로 주입하여 클러스터 내의 서비스와 통신을 관리합니다. 이를 활성화하려면, 다음과 같이 namespace에 레이블을 추가합니다

				
					kubectl label namespace default nginx.io/inject=enabled
				
			

애플리케이션 배포

Namspace 라벨 설정

NGINX Service Mesh는 특정 네임스페이스를 메쉬로 자동 관리합니다. 애플리케이션 네임스페이스에 라벨을 추가해야 합니다.

				
					kubectl label namespace <your-namespace> nginx-mesh.io/inject=enabled

				
			
애플리케이션 Manifest 업데이트

기존 Kubernetes 매니페스트에 특별한 변경이 필요하지 않습니다. 애플리케이션이 배포되면 NGINX Sidecar Proxy가 자동으로 주입됩니다.

애플리케이션 배포
				
					kubectl apply -f <application-deployment>.yaml

				
			

트래픽 관리

NGINX Service Mesh는 고급 트래픽 관리 기능을 제공합니다. 다음은 기본 라우팅 설정 예제입니다.

트래픽 정책 설정

TrafficSplit 리소스를 사용하여 트래픽을 다양한 서비스 버전으로 분배할 수 있습니다.

				
					apiVersion: split.smi-spec.io/v1alpha3
kind: TrafficSplit
metadata:
  name: example-split
  namespace: <your-namespace>
spec:
  service: frontend
  backends:
  - service: frontend-v1
    weight: 80
  - service: frontend-v2
    weight: 20

				
			

관찰 가능성

NGINX Service Mesh는 Prometheus와 Grafana를 기본적으로 지원하여 메트릭을 시각화할 수 있습니다.

  • Prometheus 설치:
    • 클러스터에 Prometheus를 설치하여 메트릭을 수집합니다.
  • Grafana 대시보드 설정:
    • NGINX Service Mesh의 Grafana 대시보드를 가져와 서비스 상태를 모니터링합니다.

결론

NGINX Service Mesh 시작하기

이 가이드를 통해 NGINX Service Mesh의 설치 및 기본 구성을 완료하고 애플리케이션을 성공적으로 배포할 수 있습니다. 다음 단계로는 트래픽 정책과 관찰 가능성 기능을 심화적으로 활용하여 운영 환경에서 효율성을 극대화할 수 있습니다.

이 가이드를 참고하여 클러스터에서 NGINX Service Mesh를 빠르게 배포하고 활용해보세요!

NGINX Service Mesh 사용 사례에 대해 알아보려면 NGINX STORE에 문의해 보세요.