쿠버네티스 Ingress를 구성하다보면 어노테이션을 자주 설정하게 되는데요. 그 중에서 가장 많이 사용하는 어노테이션이 rewrite-target이 아닌가 싶습니다. 자주 사용은 하지만 그 의미를 완벽하게는 모르고 쓰는 경우가 대부분인데 오늘은 rewrite-target에 대해 정확히 짚고 넘어가보려 합니다.
Ingress란
일단 간단하게 쿠버네티스의 ingress에 대해 알아보겠습니다. ingress와 service는 요청을 특정 경로로 보내주는 역할을 합니다. 그 중 ingress는 클러스터 외부에서 접근하는 요청들을 어떻게 처리할 지 정의해둔 규칙들의 모음입니다. ingress는 말 그대로 규칙들의 모음이고, 이러한 요청을 실제로 처리하는 친구가 ingress controller입니다.
예를 들어 ingress에 아래와 같이 규칙을 정의해둔다고 하겠습니다. 해당 규칙을 해석해보자면 xxx.com/hello로 접속하였을 때 3000번 포트의 hello라는 service로 리다이렉션 됩니다. ingress는 외부에서 온 요청을 어떤 service로 보낼지를 정의해놓은 규칙 명세서입니다.
spec:
rules:
- http:
paths:
- backend:
service:
port:
number: 3000
name: hello
path: /hello
pathType: Prefix
host: xxx.com
그리고 annotation은 이러한 ingress에 사용자가 원하는 특정한 행동을 하도록 만들기 위해 사용합니다. pod에서 사용하는 label과 비슷하지만 역할은 완전히 다릅니다. label은 말그대로 특정 파드를 검색하기 위해 사용하는 라벨링 용도이지만, annotation은 실제 쿠버네티스 시스템이 이를 인식하여 활용합니다.
nginx-ingress에서는 annotation을 이용해서 nginx에서 필요한 설정들을 사용자가 지정할 수 있는 것입니다.
rewrite-target
rewrite-target은 nginx의 여러 annotation 중에 하나입니다. 이름을 통해 역할을 유추해보면 뭔가 요청이 갖는 타겟을 바꿔주는 것으로 보이죠? rewrite-target은 인그레스에 정의된 경로로 들어오는 요청을 설정된 경로로 전달합니다. 예시를 보며 이해해보도록 하죠.
아래 ingress는 xxx.com/something으로 온 요청을 service-two로 보냅니다. 만약 하위 경로를 내부 서비스의 다른 경로로 보내려면 rewrite-target을 사용하면 됩니다. 아래의 rewrite-target: /$2의 의미는 /something으로 요청되었을 때 regex의 두번째 그룹으로 요청을 보내겠다는 의미입니다. 만약 /something/color로 요청한다면 /color로, something/color/red라면 color/red로 요청이 전달됩니다.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-example
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: service-one
port:
number: 80
- path: /something(/|$)(.*)
pathType: Prefix
backend:
service:
name: service-two
port:
number: 80
참고자료
AWS EKS에서 NGINX Ingress rewrite annotation 사용하기
이 글은 AWS EKS에서 NGINX-Ingress Controller를 설치하고 nginx.ingress.kubernetes.io/rewrite-target annotations를 사용해 여러 애플리케이션을 여러 경로로 라우팅 하는 예제입니다.해결하려는 문제 EKS에서 ALB와 ing
nauco.tistory.com
https://kubernetes.github.io/ingress-nginx/examples/rewrite/#rewrite
Rewrite - Ingress-Nginx Controller
Rewrite This example demonstrates how to use Rewrite annotations. Prerequisites You will need to make sure your Ingress targets exactly one Ingress controller by specifying the ingress.class annotation, and that you have an ingress controller running in yo
kubernetes.github.io
https://gruuuuu.github.io/cloud/ingress-annotations/
Nginx Ingress Controller Annotations - Rewirte
Overview 여러 annotation을 통해 Nginx Ingress Controller의 설정값들을 변경할 수 있습니다. -> 전체 Annotation 이번문서에서는 여러 Annotation 중 url rewrite에 관련된 annotation에 대해서 알아보겠습니다. -> Annotat
gruuuuu.github.io
'데이터 엔지니어링 > Kubernetes' 카테고리의 다른 글
가볍게 읽는 쿠버네티스 안내서 (0) | 2024.04.29 |
---|---|
kubeadm으로 쿠버네티스 클러스터 구축하기 (feat. 오라클 클라우드, ARM64) (3) | 2024.01.05 |
쿠버네티스 Ingress를 구성하다보면 어노테이션을 자주 설정하게 되는데요. 그 중에서 가장 많이 사용하는 어노테이션이 rewrite-target이 아닌가 싶습니다. 자주 사용은 하지만 그 의미를 완벽하게는 모르고 쓰는 경우가 대부분인데 오늘은 rewrite-target에 대해 정확히 짚고 넘어가보려 합니다.
Ingress란
일단 간단하게 쿠버네티스의 ingress에 대해 알아보겠습니다. ingress와 service는 요청을 특정 경로로 보내주는 역할을 합니다. 그 중 ingress는 클러스터 외부에서 접근하는 요청들을 어떻게 처리할 지 정의해둔 규칙들의 모음입니다. ingress는 말 그대로 규칙들의 모음이고, 이러한 요청을 실제로 처리하는 친구가 ingress controller입니다.
예를 들어 ingress에 아래와 같이 규칙을 정의해둔다고 하겠습니다. 해당 규칙을 해석해보자면 xxx.com/hello로 접속하였을 때 3000번 포트의 hello라는 service로 리다이렉션 됩니다. ingress는 외부에서 온 요청을 어떤 service로 보낼지를 정의해놓은 규칙 명세서입니다.
spec:
rules:
- http:
paths:
- backend:
service:
port:
number: 3000
name: hello
path: /hello
pathType: Prefix
host: xxx.com
그리고 annotation은 이러한 ingress에 사용자가 원하는 특정한 행동을 하도록 만들기 위해 사용합니다. pod에서 사용하는 label과 비슷하지만 역할은 완전히 다릅니다. label은 말그대로 특정 파드를 검색하기 위해 사용하는 라벨링 용도이지만, annotation은 실제 쿠버네티스 시스템이 이를 인식하여 활용합니다.
nginx-ingress에서는 annotation을 이용해서 nginx에서 필요한 설정들을 사용자가 지정할 수 있는 것입니다.
rewrite-target
rewrite-target은 nginx의 여러 annotation 중에 하나입니다. 이름을 통해 역할을 유추해보면 뭔가 요청이 갖는 타겟을 바꿔주는 것으로 보이죠? rewrite-target은 인그레스에 정의된 경로로 들어오는 요청을 설정된 경로로 전달합니다. 예시를 보며 이해해보도록 하죠.
아래 ingress는 xxx.com/something으로 온 요청을 service-two로 보냅니다. 만약 하위 경로를 내부 서비스의 다른 경로로 보내려면 rewrite-target을 사용하면 됩니다. 아래의 rewrite-target: /$2의 의미는 /something으로 요청되었을 때 regex의 두번째 그룹으로 요청을 보내겠다는 의미입니다. 만약 /something/color로 요청한다면 /color로, something/color/red라면 color/red로 요청이 전달됩니다.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-example
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: service-one
port:
number: 80
- path: /something(/|$)(.*)
pathType: Prefix
backend:
service:
name: service-two
port:
number: 80
참고자료
AWS EKS에서 NGINX Ingress rewrite annotation 사용하기
이 글은 AWS EKS에서 NGINX-Ingress Controller를 설치하고 nginx.ingress.kubernetes.io/rewrite-target annotations를 사용해 여러 애플리케이션을 여러 경로로 라우팅 하는 예제입니다.해결하려는 문제 EKS에서 ALB와 ing
nauco.tistory.com
https://kubernetes.github.io/ingress-nginx/examples/rewrite/#rewrite
Rewrite - Ingress-Nginx Controller
Rewrite This example demonstrates how to use Rewrite annotations. Prerequisites You will need to make sure your Ingress targets exactly one Ingress controller by specifying the ingress.class annotation, and that you have an ingress controller running in yo
kubernetes.github.io
https://gruuuuu.github.io/cloud/ingress-annotations/
Nginx Ingress Controller Annotations - Rewirte
Overview 여러 annotation을 통해 Nginx Ingress Controller의 설정값들을 변경할 수 있습니다. -> 전체 Annotation 이번문서에서는 여러 Annotation 중 url rewrite에 관련된 annotation에 대해서 알아보겠습니다. -> Annotat
gruuuuu.github.io
'데이터 엔지니어링 > Kubernetes' 카테고리의 다른 글
가볍게 읽는 쿠버네티스 안내서 (0) | 2024.04.29 |
---|---|
kubeadm으로 쿠버네티스 클러스터 구축하기 (feat. 오라클 클라우드, ARM64) (3) | 2024.01.05 |