nginx와 minikube ingress 연동
2024. 2. 3. 09:54ㆍWeb Server/nginx
DNS 등록
hosts 파일이나 DNS에 등록
------------------------------------
{minikube가 설치된 PC IP} pod.test.co.kr
{minikube가 설치된 PC IP} node.test.co.kr
------------------------------------
ingress 등록
# pod ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: pod-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- host: pod.test.co.kr
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: {대상 pod의 service}
port:
number: {대상 pod의 service port}
# node ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: node-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- host: node.test.co.kr
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: {대상 pod의 service}
port:
number: {대상 pod의 port}
# ingress 등록
kubectl apply -f {pod ingress yaml}
kubectl apply -f {node ingress yaml}
nginx 구성
# reverse-proxy.conf 파일
server {
listen {nginx port};
listen [::]:{nginx port};
location / {
proxy_pass http://{ingress ip};
proxy_set_header Host $host; # 없으면, ingress에 도메인 전달이 안됨
}
}
# nginx 재시작
sudo systemctl reload nginx
접속 테스트
도메인별로 해당 pod의 결과가 나와야 함
http://pod.test.co.kr
http://node.test.co.kr
Trouble Shooting
# nginx
# 404 에러
# Case1
브라우져에서 호출한 도메인 정보가 ingress까지 전달되지 않는 경우
nginx의 proxy_set_header 옵션 확인 필요
# Case2
ingress에 호출된 도메인에 해당하는 ingress가 없는 경우
# 502 에러
# proxy 대상 서비스가 없는 경우
# nginx 로그 보기
tail -f /var/log/nginx/error.log
---------------
failed (111: Unknown error) while connecting to upstream, client: {ip}, server: , request: "GET /favicon.ico HTTP/1.1", upstream: "http://{proxy ip}:{proxy port}/favicon.ico", host: "node.test.co.kr", referrer: "http://node.test.co.kr/"
---------------
# 503 Service Temporarily Unavailable
# minikube까지는 전송이 되었고, minikube에서 에러가 발생한 경우
# ingress 로그 보기
kubectl logs -f ingress-nginx-controllerxxxxxxxxx-n ingress-nginx --tail=200
-----------
# 실패 로그
# namespace: default, service: web, port: 80으로 호출
# 접속된 pod 정보 기록 안됨: - - - -
GET /favicon.ico HTTP/1.0" 503 592 "http://pod.test.co.kr/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36" 396 0.000 [default-web-80] [] - - - - 7404a2329254c762c62aff4dcf12c33c
# 성공 로그
# namespace: default, service: pod, port: 80으로 호출
# 접속된 pod 정보 기록: 10.244.0.23:8080
"GET /favicon.ico HTTP/1.0" 200 59 "http://pod.test.co.kr/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36" 396 0.001 [default-pod-80] [] 10.244.0.23:8080 59 0.001 200 55ca15afef51f67b40a33b9b6a82bc15
-----------
'Web Server > nginx' 카테고리의 다른 글
nginx 컴파일해서 설치하기: nginx tcp proxy 서버 구성 (0) | 2024.03.11 |
---|---|
nginx header 정보 제거 (0) | 2024.03.01 |
nginx 인증 설정 (0) | 2023.06.10 |
minikube proxy 설정 (0) | 2023.06.06 |
nginx Trouble Shooting (0) | 2023.05.27 |