개요
Kong Ingress Controller는 k8s 리소스를 kong 리소스로 변환시키는 역할을 합니다.
아래 그림처럼 K8S Ingress는 Kong Route로 매핑이 되는데, 이를 이용하여 Express 어플리케이션을 Kong API Gateway을 사용해서 외부로 노출 시키겠습니다.
참고: https://docs.konghq.com/kubernetes-ingress-controller/latest/concepts/design/#translation
pod, service 확인
Express 어플리케이션의 pod, service를 올렸습니다.
port-forward
어플리케이션 화면을 확인하기 위해 포트 포워딩을 하겠습니다.
$ kubectl port-forward svc/web 3000:3000
localhost:3000
localhost:3000/users
두개의 페이지를 만들었습니다.
위의 어플리케이션을 kong에 연결하겠습니다.
Kong 리소스 확인
Ingress 배포
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: kong-test
spec:
ingressClassName: kong
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web
port:
number: 3000
|
cs |
ingressClassName을 kong으로 지정합니다.
HTTP 요청 경로: / --> k8s service 요청 경로: /
Ingress 확인
kong_url
kong_url/users
kong gateway를 사용해서 어플리케이션에 접근했습니다!!
Rewrite 인그레스 옵션
실무에서 많이 사용할 rewrite 옵션을 정리하겠습니다.
ingress-nginx-controller에 nginx.ingress.kubernetes.io/rewrite-target 옵션과 동일합니다.
konghq.com/strip-path
- true로 설정하면 요청이 서비스로 전송되기 전에 수신 규칙에 지정된 경로 부분이 제거됩니다.
Ingress 배포
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: kong-test
annotations:
konghq.com/strip-path: "true" # 추가
spec:
ingressClassName: kong
rules:
- http:
paths:
- path: /somthing # 변경
pathType: Prefix
backend:
service:
name: web
port:
number: 3000
|
cs |
HTTP 요청 경로: /somthing --> k8s service 요청 경로: /
kong_url/somthing
kong_url/somthing/users
정상적으로 접속됩니다.
감사합니다^.^
참고
https://docs.konghq.com/kubernetes-ingress-controller/latest/concepts/design/#main
https://docs.konghq.com/gateway/3.0.x/get-started/services-and-routes/
https://docs.konghq.com/kubernetes-ingress-controller/latest/guides/using-rewrites/#rewriting-the-path
'DevOps > Kubernetes' 카테고리의 다른 글
[EKS] Karpenter + KEDA를 사용해서 특정 시간에 Auto Scaling 하는 방법 (0) | 2022.11.18 |
---|---|
[EKS] Karpenter - Groupless Node AutoScaling 사용법 (0) | 2022.11.17 |
K8S에 Kong API Gateway 설치 하는 방법 (Helm Charts) (0) | 2022.10.07 |
MAC M1에서 EKS 배포 에러 (CPU ARM/AMD 문제) (0) | 2022.09.22 |
Secret Manager를 사용해서 K8S Secret 관리하기 (0) | 2022.09.15 |