블로그 | CTO 사무실

F5 금요일: 유입 대 유입

로리 맥비티 썸네일
로리 맥비티
2018년 12월 28일 게시

DevOps와 NetOps의 세계가 충돌하고 컨테이너 환경이 네트워크에서 기존에 사용되던 정의를 포괄함에 따라 데이터 경로와 컨테이너 환경 측면에서 종종 혼동스러운 용어인 "ingress"를 사용하는 것을 고려해 보는 것이 현명해 보입니다.

유입 및 유출이라는 용어는 전통적으로 데이터 센터의 관점에서 네트워크의 트래픽 방향을 설명하는 데 사용되었습니다. 유입은 유입이고, 유출은 유출입니다.

컨테이너 환경이 발전함에 따라, "ingress"라는 용어는 매우 구체적이고 애플리케이션 중심의 정의를 갖는 데 적용되었습니다.

유입. 일반적으로 HTTP인 클러스터의 서비스에 대한 외부 액세스를 관리하는 API 객체입니다. Ingress는 부하 분산, SSL 종료 및 이름 기반 가상 호스팅을 제공할 수 있습니다.

Kubernetes 환경에 정의된 인그레스 리소스는 컨테이너 경계 자체 내에서 실행되는 것으로 가정되는 기능을 설명한다는 점을 잠시 멈추어 주의 깊게 살펴보는 것이 중요합니다. 

각 인그레스는 외부 요청을 수락하고 Kubernetes 인그레스 리소스에서 지정한 규칙에 따라 해당 요청을 올바른 Kubernetes 서비스로 전달하는 역방향 프록시입니다. 서비스는 일반적으로 기본 계층 4(TCP) 부하 분산 알고리즘을 통해 연관된 컨테이너 집합에 요청을 부하 분산합니다. 이는 통합 API가 외부 세계에 제공되는 방법 중 하나입니다. 인그레스는 API 호출(URI 경로)을 구문 분석하여 컨테이너 클러스터 내의 적절한 컨테이너 호스팅 마이크로서비스에 배포합니다.

F5는 기존 Kubernetes Ingress와 동일한 기능을 제공하지만 SNI 라우팅 및 계층 4(TCP) 부하 분산의 형태로 추가 기능을 추가합니다. SNI(서버 이름 표시기) 라우팅을 수행하는 기능은 메시지 교환의 종단 간 TLS 암호화를 원하는 사람들에게 이점이 됩니다. 이를 통해 F5는 실제 페이로드/메시지를 해독하지 않고도 헤더의 정보에 따라 요청을 적절하게 라우팅할 수 있습니다. 이는 요청에 적용할 수 있는 기능 범위를 제한합니다. 예를 들어, 악성 콘텐츠를 검색할 수는 없습니다. 그러나 규제 또는 운영상의 이유로 콘텐츠를 암호화해야 하는 아키텍처에 필요한 지원을 제공합니다. 계층 4(TCP) 부하 분산은 종종 컨테이너 환경 외부에서 사용되어 Kubernetes 스타일 수신 서비스를 확장합니다. 

F5는 일반적으로 컨테이너 환경 외부에 배포됩니다. 이는 클러스터를 외부에 노출시키는 로드 밸런싱 솔루션으로 자주 사용되어 컨테이너 클러스터로 구성된 서비스에 대한 공개 액세스를 제공합니다. CNCF 설문 조사에 따르면 응답자의 67%가 클러스터 서비스를 외부에 노출하기 위해 로드 밸런서 옵션을 선택하고, 33%는 수신(L7) 기능을 활용하는 것으로 나타났습니다.

Kubernetes Ingress와 동일한 기능을 제공하기 위해 컨테이너 기반 "커넥터"를 사용하여 트래픽 정책을 정의하는 정책을 업데이트할 수 있습니다. 이 커넥터는 컨테이너 오케스트레이터(일반적으로 Kubernetes이지만 Red Hat OpenShift도 많이 사용됨) 내부에 위치하며 이 오케스트레이터와 통합됩니다. F5 인그레스와의 통신은 API를 통해 이루어집니다. 업데이트에는 인그레스 리소스 정의(HTTP 라우팅 정책)에 대한 변경 사항과 현재 서비스 정의에 영향을 미치는 컨테이너 인스턴스의 시작 또는 제거와 같은 구성에 대한 변경 사항이 포함됩니다.

간단한 인그레스 서비스보다 F5를 사용하는 이점은 인바운드 및 아웃바운드 트래픽에 고급 기능을 적용할 수 있다는 것입니다. F5를 사용하면 컨테이너 환경이나 아키텍처 또는 애플리케이션 자체를 수정하지 않고도 보안, 헤더 강화 및 클라이언트별 성능 최적화를 적용할 수 있습니다.

추가 자료: