원문 : [호롤리한하루/Nginx Ingress Controller Annotations - Rewirte]
Overview
여러 annotation을 통해 Nginx Ingress Controller의 설정값들을 변경할 수 있습니다.
이번문서에서는 여러 Annotation 중 url rewrite에 관련된 annotation에 대해서 알아보겠습니다.
Rewrite Target
Ingress규칙을 작성하다보면 path에 따라 서비스를 나누게 되는데요,
경우에 따라 해당 서비스 안에서도 하위 path를 이용해야하는 경우가 있을 수도 있습니다.
예를 들어, Ingress규칙이 다음과 같을 때
http:
paths:
- path: /something
backend:
serviceName: http-svc
servicePort: 80xxx.com/something 으로 접속했을시 http-svc 서비스로 리다이렉트 되게 됩니다.
그런데 내부 서비스에서 하위 주소를 입력하여 서비스 내에서도 다른페이지를 보여주어야 하는 경우 (예를 들어 xxx.com/something/home.html또는 xxx.com/something/login.html)
404에러가 발생하게 됩니다.
이유는 request하는 헤더에 /something까지 같이 포함되기 때문입니다.
ex)
Ingress로의 요청 : /something/home.html -> 실제 서비스로의 요청 : /something/home.html
서비스를 구분하는 path는 그대로두되, 하위 path만을 요청하고 싶은 경우 Rewrite annotation을 사용합니다.
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /rewrite-target을 사용하게 되면 구분 path는 사라지고 rewrite-target에 적은 url path로 대체되게 됩니다.
ex)
위의 annotation대로 요청했을 시:
Ingress로의 요청 : /something -> 실제 서비스로의 요청 : /
이걸 이용해서 하위 path까지 포함하게 하는 방법은 다음과 같습니다.
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
name: rewrite
namespace: default
spec:
rules:
- host: rewrite.bar.com
http:
paths:
- backend:
serviceName: http-svc
servicePort: 80
path: /something(/|$)(.*)정규식과 비슷하게 적용하시면 됩니다. 다 같은데 capture group을 하는 방법이 다릅니다.
(정규식 : /1, nginx ingress에서 사용하는 방법 : $1)
주요 식 정리:(/|$) : /로끝나거나 something으로 끝나거나$2 : 두번째 그룹
그래서 위와 같이 적용하면 아래와 같이 원하는 서비스에 하위 path를 그대로 요청할 수 있습니다.
/something -> /
/something/ddd -> /ddd
App Root
app-root는 default경로를 정하는 annotation입니다.
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/app-root: /app1
name: approot
namespace: default
spec:
rules:
- host: approot.bar.com
http:
paths:
- backend:
serviceName: http-svc
servicePort: 80
path: /위와 같이 경로가 설정되어있다면
default("/")경로로 접근하였을 때, http-svc의 /app1경로로 리다이렉트되게 됩니다.
'IT Note > Cloud' 카테고리의 다른 글
| Tekton이란? (0) | 2021.06.09 |
|---|---|
| Kubernetes Cluster Upgrade (0) | 2021.05.24 |
| Openshift4.3 Baremetal 설치 - Restricted Network (0) | 2020.10.05 |
| Openshift Network를 위한 몇가지 설정 (0) | 2020.09.23 |
| Kubernetes Monitoring with Sysdig (0) | 2020.08.10 |