일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- operator
- CANARY
- keda
- Kubernetes 인증
- mlops
- tekton
- eBPF
- xdp
- MLflow
- CI/CD
- seldon core
- Kubeflow
- Argo
- Model Serving
- 카오스 엔지니어링
- Kubernetes
- Litmus
- nginx ingress
- opensearch
- blue/green
- opentelemetry
- gitops
- argocd
- serving
- kubernetes operator
- Pulumi
- Kopf
- Continuous Deployment
- 오퍼레이터
- knative
- Today
- Total
Kubernetes 이야기
Kubernetes Gateway API 본문
23년도 10월에 Kubernetes Gateway API v1.0이 GA release되었다. Kubernetes Gateway API 가 무엇인지 알아보자.
Gateway API란 무엇인가?
Gateway API는 SIG-NETWORK 커뮤니티 에서 관리하는 오픈 소스 프로젝트로 Kubernetes에서 서비스 네트워킹을 모델링하는 API(리소스 모음)이다.
기존에 Kubernetes에서는 Ingress라는 인바운드 트래픽 제어 기능이 있다. 우선 어떤 차이가 있는지 살펴보자.
Ingress
Ingress는 외부 트래픽을 클러스터 내부 서비스로 전달하는 방법을 정의하여 HTTP 및 HTTPS 트래픽의 진입점 역할을 한다.
Gateway API
Ingress에서 지원이 어려운 가중치 트래픽 라우팅, 역할 기반 액세스 제어, TCP/UDP 프로토콜 지원 등을 지원한다.
Ingress보다 유연하고, 다양한 백엔드(k8s Service, object bucket…)를 지원하는 것을 목표로 한다.
기능 | Ingress | Gateway API |
트랙픽 라우팅 | 기본적인 서비스 라우팅 | HTTP Header, 트래픽 가중치 등 다양한 유형의 라우팅 지원 |
확장성 | Ingress 공급 업체에서 지원하는 annotation 등을 통해 기능 확장 | CRD에 사용자 정의를 통해 확장 |
표준화 | Ingress 공급 업체별로 지원하는 기능 차이가 많이 발생 | 다양한 구현에서 지원되는 범용 사양 |
RBAC | 기본적으로 서로 다른 팀이 서로 다른 구성 섹션을 관리하도록 허용하지 않음 | 클러스터 운영자가 정책을 설정하는 동안 개별 팀이 트래픽을 관리할 수 있음 |
프로토콜 | 기본적은 HTTP/HTTPS | HTTP/HTTPS/TCP/gRPC 등 |
역할 중심 접근 방식
GatewayClass
인프라 제공자가 정의하는 클러스터 범 위의 오브젝트로서, Ingress에서의 IngressClass와 동일한 개념
Gateway
서비스와 같은 백엔드에 대한 필터링, 밸런싱, 분할 등 트래픽 처리에 사용할 수 있는 네트워크 엔드포인트
HTTPRoute
Gateway 트래픽을 백엔드 네트워크 엔 드포인트로 매핑하기 위한 HTTP 관련 규칙을 정의하는 오브젝트
Gateway API의 이런 특성으로 인해 일부 조직에서는 단순성 때문에 Ingress 사양을 선호할 수 있다. 반대로, 강화된 보안과 업무 분리 때문에 Gateway API를 선호하는 사람들도 있을 수 있다.
Gateway API 구현체
Ingress Class의 구현체가 여러 오픈소스 및 상용 솔루션이 있듯이 Gateway API도 여러 구현체가 있다.
Gateway API 구현체는 다음을 참고한다.
https://gateway-api.sigs.k8s.io/implementations/
이중 Nginx Gateway Fabric와 Apache APISIX, Emissary-Ingress를 살펴보자.
1) Nginx Gateway Fabric
NGINX 게이트웨이 패브릭은 고급 사용 사례, 역할 기반 API 모델 및 NGINX의 진정한 힘을 활용하는 확장성을 기본적으로 지원하여 Kubernetes 클러스터에서 앱과 서비스에 대한 미래 지향적 연결을 제공하도록 설계되었다. 현재 v1.0 GA 버전이 출시된 상태이다.
주요특징
- 데이터 플레인 : 세계에서 가장 널리 사용되는 데이터 플레인 중 하나를 기반으로 구축된 NGINX Gateway Fabric은 Kubernetes 앱에 빠르고 안정적이며 안전한 연결을 제공한다.
- 확장성 : Kubernetes Ingress 리소스와 달리 NGINX Gateway Fabric을 사용하면 블루-그린 및 카나리아 배포, A/B 테스트, 요청/응답 조작 등 다양한 고급 사용 사례를 "즉시" 사용할 수 있다. 또한 API 자체에서 지원하지 않는 고급 NGINX 데이터 플레인 기능을 잠금 해제하기 위해 확장 지점 및 정책 첨부가 포함된 주석 없는 확장성 모델을 정의할 수 있다.
- 상호 운용성 : NGINX Gateway Fabric은 게이트웨이 API의 전용 구현으로, 다양한 구현에서 쉽게 마이그레이션할 수 있도록 높은 수준의 구성 호환성과 이식성을 제공한다.
- 거버넌스 : NGINX Gateway Fabric은 셀프 서비스 거버넌스 기능을 통해 다중 테넌트 팀 간에 인프라를 공유할 수 있는 기본 역할 기반 API 모델을 제공한다. 오픈 소스 프로젝트로서 확립된 커뮤니티 거버넌스 절차를 준수하여 운영되며 개발 프로세스, 기능 로드맵 및 기여에 대한 완전한 투명성을 제공한다.
- 적합성 : NGINX Gateway Fabric은 표준화된 적합성 테스트에 따라 게이트웨이 API 사양을 준수하는지 테스트 및 검증되어 API 운영에 대한 일관된 경험을 보장한다.
2) Apache APISIX
Apache APISIX 는 동적 실시간 고성능 API 게이트웨로 로드 밸런싱, 동적 업스트림, 카나리아 릴리스, 회로 차단, 인증, 관찰 가능성 등과 같은 풍부한 트래픽 관리 기능을 제공한다.
주요특징
- 다양한 프로토콜 : TCP/UDP, MQTT, gRPC 등
- 다양한 변환 및 라우팅 지원 : Response Rewrite, Canary, A/B 테스트, Proxy Mirror 등 지원
- 보안 : JWT, basic-auth, key-auth, keycloak, wolf-rbac, CORS, CSRF, IP whitelist/blacklist 등 지원
- 강력한 UI 지원
3) Emissary-Ingress
Emissary-Ingress (이전의 Ambassador API Gateway)는 Envoy Proxy 를 기반으로 구축된 Kubernetes용 수신 컨트롤러 및 API 게이트웨이를 제공하는 오픈 소스 CNCF 프로젝트이다.
주요특징
- Envoy 기반의 API gateway
- Rate Limit, Circuit breaker 등 API Gateway에서 수행하는 기능 지원
- RR, Least Request, Ring hash 등 로드밸런싱 정책 설정 가능
- WebSocket, gRPC, HTTP/2, TCP 등 대부분의 프로토콜 지원
- Prometheus와의 통합으로 메트릭 모니터링 가능
참고
https://gateway-api.sigs.k8s.io/
https://kubernetes.io/blog/2023/10/31/gateway-api-ga/
https://gateway-api.sigs.k8s.io/concepts/api-overview/
https://www.haproxy.com/blog/kubernetes-gateway-api
https://www.nginx.com/blog/announcing-nginx-gateway-fabric-version-1-0/
'Kubernetes > 일반' 카테고리의 다른 글
kubernetes apiserver 를 통해 Cluster 정보 조회 (1) | 2023.12.25 |
---|---|
Strimzi로 Kubernetes에 Apache Kafka 설치 (1) | 2023.12.10 |
Dex와 OIDC 인증 (0) | 2023.02.13 |
OAuth2 Proxy와 Keycloak 연동 (0) | 2023.02.11 |
Chaos Mesh 에서 Physical Machines 카오스 엔지니어링 (0) | 2023.02.08 |