- Published on
9단계: Ingress로 도메인 연결
Ingress란?
- Kubernetes 클러스터 외부에서 내부 서비스로 HTTP/HTTPS 트래픽을 라우팅하는 리소스
- Service를 도메인 기반으로 접근 가능하게 만듦
- Nginx, Traefik 등의 Ingress Controller가 필요
Ingress Controller 설치 (minikube 기준)
# minikube에 nginx ingress controller 설치
minikube addons enable ingress
# 설치 확인
kubectl get pods -n kube-system | grep ingress
예시 서비스 배포
# app-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app
spec:
replicas: 2
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: web
image: nginx
ports:
- containerPort: 80
---
# app-service.yaml
apiVersion: v1
kind: Service
metadata:
name: web-svc
spec:
selector:
app: web
ports:
- port: 80
targetPort: 80
Ingress 리소스 작성
# ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: myapp.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web-svc
port:
number: 80
hosts 설정:
echo "$(minikube ip) myapp.local" | sudo tee -a /etc/hosts
브라우저 접속:
http://myapp.local
요약
- Ingress는 도메인 기반 HTTP 트래픽을 내부 서비스로 라우팅한다.
- Ingress Controller가 반드시 설치되어 있어야 동작한다.
/etc/hosts
에 도메인을 수동으로 등록하면 로컬 환경에서도 테스트 가능하다.
심화학습
Q1: Ingress와 NodePort의 차이점은 무엇인가?
A: NodePort는 클러스터 외부에서 접근할 수 있도록 특정 포트를 개방하는 방식이고, Ingress는 도메인 기반으로 여러 서비스에 정교하게 라우팅할 수 있다.
Q2: 여러 도메인 또는 경로를 한 Ingress 리소스에서 동시에 라우팅할 수 있을까?
A: 가능하다. Ingress의 rules
배열에 여러 host
와 path
를 설정하여 다양한 트래픽 라우팅을 구성할 수 있다.
Q3: Ingress 리소스가 동작하지 않는 경우 가장 먼저 확인해야 할 것은?
A: Ingress Controller가 정상적으로 설치되어 있는지(kubectl get pods -n kube-system
)를 확인하고, 외부 IP 또는 DNS 설정이 정확한지 확인해야 한다.