“쿠버네티스 Ingress, DNS, 그리고 나의 멘탈”
쿠버네티스 서비스에 도메인 붙이는 순간이 옵니다.
“외부에서 myapp.example.com으로 접속되게 해주세요~”
👉 여기서부터 실수 퍼레이드가 시작됩니다.
(실무자라면 누구나 한 번쯤 겪는 고통…)


kubectl get ingress → 리소스는 있음 host: myapp.example.com으로 해놨는데, 실제 DNS는 app.example.com으로 설정 curl apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myapp-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: myapp.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: myapp-service
port:
number: 80
annotations → 어떤 Ingress Controller를 쓸지 지정 (nginx, traefik 등)
host → 반드시 DNS와 똑같이 일치해야 함
backend → 연결할 Service와 포트
$ kubectl describe ingress myapp-ingress
Name: myapp-ingress
Namespace: default
Address: 203.0.113.25
Default backend: default-http-backend:80 (<none>)
Rules:
Host Path Backends
---- ---- --------
myapp.example.com
/ myapp-service:80 (10.244.1.12:8080)
Annotations: kubernetes.io/ingress.class: nginx
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Sync 1m nginx-ingress-controller Scheduled for sync
👉 여기서 꼭 확인해야 할 포인트:
Address → 외부 LB IP가 제대로 잡혔는지
Host → DNS와 정확히 일치하는지
Backends → 올바른 Service/Pod IP에 연결됐는지
도메인 붙이기 전에 최소한 이건 확인하자:
👉 주소 틀리면 택배 못 감.
👉 경비실 없으면 택배 못 들어감.
👉 호수 틀리면 다른 집으로 감.
외부 DNS + Ingress 붙이는 작업은 단순해 보이지만 함정 카드가 잔뜩 숨어 있습니다.
👉 이젠 이렇게 기억하세요:
“Ingress는 DNS와 Hostname이 맞아야 진짜 열린다.”
“HTTPS는 cert-manager로 자동 발급하자.” 😎