728x90
개요
Traefik은 Kubernetes에서 동적인 경로 기반 라우팅을 수행하는 경량의 Ingress Controller 및 Reverse Proxy입니다.
Ingress Controller 없이도 IngressRoute와 Middleware를 조합하여 강력한 트래픽 관리가 가능합니다.
Kubernetes에서 API Gateway 없이도 서비스별 라우팅을 간단하게 설정할 수 있는 점이 큰 장점입니다.
1. Traefik 설치
Traefik을 Kubernetes 클러스터에 설치하려면 Helm을 사용하는 것이 가장 간편합니다.
Helm을 이용한 Traefik 설치
helm repo add traefik https://traefik.github.io/charts
helm repo update
helm install traefik traefik/traefik \
--namespace kube-system \
--set ingressClass.enabled=true \
--set service.type=LoadBalancer
이제 Traefik이 Ingress Controller로 동작할 준비가 되었습니다.
2. Traefik Middleware 설정
Traefik을 이용하여 /keycloak 을 특정 서비스(keycloak-svc)로 연결하되, /keycloak 프리픽스를 제거해야 합니다.
Middleware 설정 (strip-keycloak-prefix.yaml)
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: strip-keycloak-prefix
namespace: default
spec:
stripPrefix:
prefixes:
- "/keycloak"
3. Traefik IngressRoute 설정
Traefik을 사용하여 특정 경로로 요청을 라우팅하는 설정을 추가해야 합니다.
IngressRoute 설정 (keycloak-route.yaml)
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: keycloak-route
namespace: default
spec:
entryPoints:
- web
routes:
- match: PathPrefix(`/keycloak`)
kind: Rule
services:
- name: keycloak-svc
port: 8080
middlewares:
- name: strip-keycloak-prefix
위 설정은 Traefik이 /keycloak/*로 들어오는 모든 요청을 keycloak-svc:8080/* 으로 전달하도록 구성합니다.
4. Kubernetes에 적용
이제 위에서 작성한 설정을 Kubernetes 클러스터에 배포합니다.
kubectl apply -f strip-keycloak-prefix.yaml
kubectl apply -f keycloak-route.yaml
배포 후 다음 명령어로 설정이 적용되었는지 확인합니다.
kubectl get ingressroute -n default
kubectl get middleware -n default
5. 테스트
Traefik을 통해 경로 기반 라우팅이 정상적으로 동작하는지 확인합니다.
curl -H "Host: example.com" http://<TRAFFIK_IP>/keycloak/auth
위 요청이 정상적으로 keycloak-svc:8080/auth로 전달되면 성공입니다.
728x90
'DevOps > K8S' 카테고리의 다른 글
[K8S] 클러스터 버전 업그레이드 (0) | 2024.10.16 |
---|---|
[K8S] 테인트와 톨러레이션 (0) | 2024.10.14 |
[K8S] StatefulSet (1) | 2024.10.10 |
[K8S] Metric Server (0) | 2024.10.10 |
[K8S] MetalLB (1) | 2024.10.10 |