MSA 트레이닝 센터
쿠버네티스 Ingress/Egress 트래픽 관리
이 트레이닝 영상에서는 NGINX 엔지니어 Kate는 NGINX Service Mesh와 함께 NGINX Plus Ingress Controller를 배포하여 쿠버네티스 클러스터에서 Ingress 및 Egress 트래픽을 모두 제어하는 방법을 보여줍니다.
NGINX Plus Ingress Controller는 NGINX Service Mesh의 인증 기관인 Spire와 직접 통합되어 Sidecar 주입 없이 mTLS를 통해 NGINX Service Mesh 워크로드(Workload)와 통신할 수 있습니다. Kate는 Ingress Control를 위해 Ingress 또는 VirtualServer 리소스를 사용하여 NGINX Service Mesh 내에서 예제 애플리케이션을 노출하는 방법을 보여줍니다.
Egress Control를 위해 그녀는 모든 Egress 트래픽(NGINX Service Mesh 외부 서비스에 대한 트래픽)을 NGINX Plus Ingress Controller로 라우팅하는 기본 Egress Route를 활성화합니다.
쿠버네티스 Ingress/Egress 트래픽 관리 가이드
이 가이드는 NGINX Service Mesh와 NGINX Plus Ingress Controller를 활용하여 쿠버네티스(Kubernetes) 클러스터에서 Ingress와 Egress 트래픽을 체계적이고 안전하게 관리하는 방법을 단계별로 설명합니다. Ingress 트래픽은 외부 요청을 클러스터 내부로 라우팅하는 데 중점을 두며, Egress 트래픽은 클러스터 내부에서 외부로 나가는 요청을 제어하고 모니터링하는 데 초점을 맞춥니다. 본 가이드는 NGINX 엔지니어 Kate의 트레이닝 자료를 바탕으로 작성되었으며, 클러스터 보안을 강화하고 효율적인 트래픽 처리를 가능하게 합니다.
쿠버네티스 Ingress/Egress 트래픽 관리 준비 사항
- Kubernetes 클러스터 (v1.22 이상 권장)
- NGINX Plus 라이선스
- Helm (v3.0 이상)
- kubectl 명령어 사용 가능
- NGINX Service Mesh 설치 파일
쿠버네티스 Ingress 트래픽 관리
Ingress 트래픽 관리는 클러스터 외부에서 오는 HTTP 또는 HTTPS 요청을 클러스터 내부의 특정 서비스로 라우팅하는 역할을 합니다. 이를 위해 NGINX Plus Ingress Controller를 설치하고 설정을 구성해야 합니다.
NGINX Plus Ingress Controller 설치
먼저 NGINX Plus Ingress Controller를 설치하기 위해 Helm 리포지토리를 추가합니다.
helm repo add nginx-stable https://helm.nginx.com/stable
helm repo update
helm install nginx-ingress nginx-stable/nginx-ingress \
--set controller.kind=deployment \
--set controller.service.type=LoadBalancer
Helm을 사용해 Ingress Controller를 배포합니다. 배포 시 사용자 지정 리소스를 활성화하고, 서비스 유형을 LoadBalancer로 설정해야 외부 접근이 가능합니다.
helm install my-nginx nginx-stable/nginx-ingress \
--set controller.enableCustomResources=true \
--set controller.image.repository=nginx/nginx-plus-ingress \
--set controller.service.type=LoadBalancer
배포가 정상적으로 완료되었는지 확인하기 위해 아래 명령어를 실행합니다. ingress-nginx 네임스페이스에 Pod 상태가 Running인지 확인합니다.
kubectl get pods -n ingress-nginx
Ingress 리소스 생성
Ingress 리소스를 생성하여 외부 요청을 클러스터 내부 서비스로 라우팅합니다. 다음은 기본적인 Ingress 리소스 구성 예제입니다.
예제: example-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
annotations:
nginx.org/rewrites: "serviceName=web-backend"
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web-backend
port:
number: 80
이 파일을 생성한 후, 다음 명령어를 통해 Kubernetes 클러스터에 적용합니다:
kubectl apply -f example-ingress.yaml
적용이 완료되면 외부 요청이 example.com 도메인을 통해 클러스터의 web-backend 서비스로 라우팅됩니다.
쿠버네티스 Egress 트래픽 관리
Egress 트래픽 관리는 클러스터 내부에서 외부로 나가는 요청을 제어하고 특정 도메인 또는 IP 블록에 대한 접근을 허용하거나 차단하는 것을 포함합니다.
NGINX Service Mesh 설치
Mesh 설치
NGINX Service Mesh를 설치하면 클러스터의 Pod 간 통신을 관리할 수 있습니다. 아래 명령어를 통해 설치를 진행합니다.
curl -LO https://downloads.nginx.com/nginx-service-mesh/nginx-meshctl-linux-amd64
chmod +x nginx-meshctl-linux-amd64
sudo mv nginx-meshctl-linux-amd64 /usr/local/bin/nginx-meshctl
nginx-meshctl deploy --nginx-plus
Namespace 태그 추가
NGINX Service Mesh는 네임스페이스를 태깅하여 적용됩니다. 이를 통해 네임스페이스 내 Pod에 트래픽 관리 규칙을 적용할 수 있습니다.
kubectl label namespace default istio-injection=enabled
Egress 규칙 생성
Egress 트래픽 관리를 위해 외부 접근을 허용하는 규칙을 생성합니다.
예제: egress-rule.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-egress
namespace: default
spec:
podSelector:
matchLabels: {}
policyTypes:
- Egress
egress:
- to:
- ipBlock:
cidr: 0.0.0.0/0
ports:
- protocol: TCP
port: 443
위 파일을 생성한 후 아래 명령어를 통해 적용합니다:
kubectl apply -f egress-rule.yaml
Ingress와 Egress 통합 테스트
Ingress 요청 확인
Ingress Controller를 통해 클러스터 내부로 요청이 올바르게 전달되는지 확인하려면 다음 명령어를 실행합니다.
curl -H "Host: example.com" http://
Egress 트래픽 확인
클러스터 내부에서 외부 도메인으로 나가는 요청이 정상적으로 처리되는지 확인하려면 아래 명령어를 사용합니다.
kubectl exec -it -- curl https://example.com
모니터링 및 로그 관리
NGINX Plus 대시보드 활용
NGINX Plus의 실시간 대시보드를 활용하여 트래픽 상태와 요청 정보를 시각적으로 확인할 수 있습니다. 아래 명령어를 실행하여 로컬에서 대시보드에 접속할 수 있습니다:
kubectl port-forward svc/nginx-ingress-controller 8080:8080 -n ingress-nginx
브라우저에서 http://localhost:8080/dashboard.html에 접속하면 대시보드를 확인할 수 있습니다.
Prometheus 및 Grafana 통합
Prometheus와 Grafana를 통해 Ingress 및 Egress 트래픽 통계를 수집하고 시각화하는 설정을 추가하면 전체 트래픽 상태를 효율적으로 모니터링할 수 있습니다.
결론
이 가이드를 통해 쿠버네티스 클러스터에서 NGINX Plus와 NGINX Service Mesh를 활용하여 Ingress와 Egress 트래픽을 안전하고 효율적으로 관리하는 방법을 학습했습니다. 이를 통해 클러스터의 보안, 안정성, 그리고 성능을 크게 개선할 수 있습니다. 추가적인 설정이나 문제 해결이 필요하면 언제든지 NGINX STORE를 통해 문의하세요!
댓글을 달려면 로그인해야 합니다.