Openshift의 네트워킹

Ryu·2022년 7월 24일
0

Openshift는 Red Hat이 만든 Kubernetes platform이다. Kubernetes의 수퍼셋인 만큼 얘만이 갖는 resource들이 있는데 그 중 Networking resource를 살펴보고자 한다.

Kubernetes의 Networking resources

Kubernetes 공식 문서: 서비스, 로드밸런싱, 네트워킹

쿠버네티스의 네트워크는 방대한 개념이지만 네트워크를 구성하는 가장 기본적인 리소스는 단연 serviceingress 일 것이다.
이 글을 읽는 사람은 당연히 두 리소스에 대해서 잘 알 것으로 생각한다. 잘 모르겠다면 공식 문서를 읽어보자.

tldr;

서비스(service): 파드의 IP는 동적인데, IP를 몰라도 해당 파드를 찾을 수 있도록 하는 리소스이다. 공식 문서

인그레스(ingress): 클러스터 내외부에서 도메인 네임을 이용해 서비스에 접근할 수 있도록 하는 리소스이다. 공식 문서

Openshift의 Networking resources

클러스터가 제공하는 마이크로 서비스들을 단번에 파악하는 방법의 하나는 이 클러스터가 갖고 있는 ingress들을 확인하는 것이다. 그런데 처음 오픈쉬프트 클러스터를 열어보았더니 ingress가 텅 비어있었다. 띠용?

Ingress Operator

쿠버네티스에서는 NGINX operator와 같은 인그레스 오퍼레이터를 설치하지만, 오픈쉬프트에는 Ingress Operator라는 이름으로 기본 오퍼레이터가 포함되어 있다.

Route

인그레스 오퍼레이터는 Route 라는 리소스에 정의된 인그레스 트래픽을 관리한다. Route란 놈은 Kubernetes의 Service와 Ingress를 합쳐 놓은 것처럼 생겼으며, Kubernetes의 Ingress Controller에서 기본으로 제공하지 않는 TLS 관련 기능을 제공한다. 즉, 클러스터가 서비스하는 도메인 네임들을 확인하려면 route를 보면 된다.

  • spec.host: 도메인 네임을 정의한다. 인그레스에 정의하는 host와 같다.
  • to: 어떤 서비스와 연결할지 정의한다. 인그레스에 정의하는 rules.http.paths.path.backend.service와 같다.

TLS

오픈쉬프트의 route에서 제공하는 TLS 기능을 정의한다.
여기서 TLS Termination이란 것을 처음 알게 되었다.

TLS Termination이란?

TLS를 통해 전달된 암호화된 트래픽을 '끝낸다', 즉 복호화하는 프로세스를 의미한다. 3가지 타입이 있다.


출처: Understanding OpenShift Route

  1. Re-encrypt: 라우터가 SSL 트래픽을 새로 encrypt한다. destination CA certificate를 지정하여 엔드포인트로의 트래픽을 검증한다.
  2. Edge: 라우터가 SSL 트래픽을 복호화하고 복호화된 트래픽을 전달한다. 클러스터 내에서는 해당 트래픽이 insecure하다.
  3. Passthrough: 라우터가 SSL 트래픽을 복호화하지 않고 그대로 전달한다. 어떤 경우에 필요할까?

SSL Offloading?
암호화된 트래픽을 애플리케이션 서비스가 복호화해야 한다면 부담이 클 것이다. 대신 Load balancer가 미리 트래픽을 복호화하여 (terminating TLS Traffic) 백엔드 서비스는 비즈니스 로직에 충실하도록 도와주는데, 이를 SSL Offloading이라고 한다.

0개의 댓글