MLOPS/SERVING

Kubeflow

개발허재 2022. 8. 18. 18:06

구성 요소

cert-manager

Cert-manager는 Kubernetes 내부에서 HTTPS 통신을 위한 인증서를 생성하고, 또 인증서의 만료 기간이 되면 자동으로 인증서를 갱신해주는 역할을 하는 Certificate manager controller입니다. 쉽게 말해 Kubernetes 내에서 외부에 존재하는 Issuers를 활용하거나 selfsigned Issuer를 직접 생성해서 생성하여 Certificate를 생성하고, 이때 생성된 Certificate를 관리하며 인증서의 만료 시간이 가까워지면 인증서를 자동으로 갱신해줍니다.

Issuer 생성: 가장 먼저 할 일은 Self-signed Issuer를 만드는 일입니다. 조금 전에 이야기했듯이 Issuer는 Certificate를 만들 수 있는 주체인데, Issuer에는 그냥 Issuer와 ClusterIssuer가 있습니다.

여기서 Issuer는 Namespace의 리소스로 속해있는 Namespace 안에서만 사용할 수 있는 리소스입니다. 반면 ClusterIssuer는 Namespace를 가리지 않고 Cluster 전역에서 접근할 수 있는 리소스입니다.

 

Web-hook

그림1

Kubernetes는 Webhook 기반의 인증 기법을 제공한다. Webhook 기반의 인증 기법은 다양한 형태의 외부 인증 서버와 연동할 수 있다는 장점을 갖고 있다. [그림 1]은 Webhook 기반의 Kubernetes 인증 기법을 나타내고 있다. Kubernetes Client (kubectl)은 외부 인증 서버에게 인증과정을 통해서 Token을 얻어온다. Token을 얻은 Kubernetes Client는 Token을 Authorization: Bearer $TOKEN Header를 통해서 Kuberenetes API Server에 전달한다. Token을 전달받은 Kubernetes API Server는 외부의 인증 서버에게 Token 정보가 포함된 TokenReview Object를 전달하여 인증받는다.

Istio

모든 app의 로그를 쉽게 수집/시각화 가능

 

Istio는 Data Plane과 Control Plane으로 구성되어 있다.

Data Plane

  • 실제로 트래픽을 받아 처리해주는 파트다.
  • Service의 Sidecar 형태로 구성된 Proxy들을 가리킨다.
  • Data Plane은 Control Plane에 의해 통제된다.
  • Istio에서는 envoy를 sidecar proxy로 사용한다.

Envoy

  • 경량화된 L7 전용 Proxy다.
  • HTTP, TCP 등의 프로토콜을 지원한다.
  • Circuit Breaker, Retry, Timeout 등의 기능을 지원한다.

2. Control Plane

  • Data Plane을 컨트롤하는 구성 요소를 가리킨다.
  • Pilot, Mixer, Citadel, Galley 등으로 구성되어 있다.

Pilot

  • envoy에 대한 설정 관리를 하는 역할을 한다.
  • Traffic Management 기능을 제공한다.
    - Service Discovery (Envoy Endpoint를 알아내는 작업)
    • Traffic Retry
    • Circuit Breaker
    • Timeout

Mixer

  • Serice Mesh 전체 영역에서 Access 제어 및 정책을 관리한다.
  • 모니터링 지표를 수집한다.

Citadel

  • 보안에 관련된 기능을 담당하는 모듈이다.
  • 인증 기능 관리 (TLS Certification 등)

Galley

  • Istio configuration을 체크한다.
  • Kubernetes Yaml 파일을 istio가 이해할 수 있는 형태로 변환한다.

기능

트래픽 분할

  • 서로 다른 버전의 서비스를 배포해놓고, 버전별로 트래픽의 양을 조절할 수 있는 기능이다.
  • ex) 새 버전의 서비스를 배포할때, 기존 버전으로 95%의 트래픽을 보내고, 새 버전으로 5%의 트래픽만 보내서 테스트하는 것이 가능하다.

헬스체크 및 서비스 디스커버리

  • 파일럿은 대상 서비스가 여러개의 인스턴스로 구성이 되어 있으면 이를 로드 밸런싱하고, 이 서비스들에 대해서 주기적으로 상태 체크를 한다.
  • 만약에 장애가 난 서비스가 있으면 자동으로 서비스에서 제거한다.

Retry, Timeout, Circuit breaker

  • 서비스간의 호출 안정성을 위해서, 재시도 횟수를 통제할 수 있다.
  • 호출을 했을때 일정 시간 (Timeout)이상 응답이 오지 않으면 에러 처리를 할 수 있고, Mircro Service Architecture 패턴중 하나인 Circuit breaker 패턴을 지원한다.

보안

통신보안, 서비스 인증과 인가, 서비스간 인증, 서비스와 사용자간 인증, 권한 통제 등등

 

모니터링

Istio는 네트워크 트래픽을 모니터링함으로써, 서비스간에 호출 관계가 어떻게 되고, 서비스의 응답 시간, 처리량등의 다양한 지표를 수집하여 모니터링할 수 있다.

Mixer에서 서비스 관련 지표를 수집하는 구조