<aside>
<img src="/icons/fire_red.svg" alt="/icons/fire_red.svg" width="40px" />
[ 문제 정의 ]
- Ingress 쪽에서 외부 트래픽을 안뿌려줌
- kourier에 외부 트래픽 로그가 찍힘
- 이걸 내부에서 뿌려주기 위한 ingress 규칙을 생성했지만, kourier에 할당되지 않는 문제 발생
- 차선책으로 prometheus와 grafana는 NodePort 형식으로 ALB와 직접 연결
- ksvc에 대해서는 현재 정상 route가 처리되고 있으나, 추가적인 ingress (덮어쓰기)에서 문제 발생
- prometheus에서 knative 지표를 가지고 오지 않는 문제도 발생 중.
</aside>
Kourier Ingress가 외부 트래픽을 안 뿌려주는 문제 원인
✔️ 핵심 원인: k3s의 svclb + Kourier의 LoadBalancer가 AWS에서 동작 방식 불일치
k3s는 LoadBalancer 타입을 쓰면 svclb-* DaemonSet을 자동 생성해서 각 노드에 랜덤 NodePort 기반 LB를 생성함.
이게 AWS NLB / ALB와 달라서:
- ExternalTrafficPolicy: Local
- HealthCheckPort: 자동 할당
- NodePort 임의 값
- Kourier gateway port(8080, 8443) 매핑 충돌
등 문제가 발생하면서 IngressClass가 Kourier로 지정된 리소스를 제대로 가져가지 못함
→ 결과적으로 Knative 자체 route는 정상이나, 추가 Ingress가 제대로 attach되지 않음.
Knative + Kourier + ALB 조합은 기본적으로 작동 안 한다.
Knative의 공식 ingress controllers:
| Controller |
외부 LB |
| Kourier |
NLB 권장 (L4) |
| Istio |
ALB 가능 |
| Contour |
일부 가능 |
| Kong |
ALB 가능 |
적용되어야 하는 구조 !!
Public ALB → Private NodePort → Kourier → Knative