Knative 핵심 개념 소개: Build, Serving, Eventing 등 3대 핵심 구성 요소

Knative는 주로 Build, Serving, Eventing 등 3대 핵심 구성 요소로 구성되어 있다.Knative는 바로 이 세 개의 핵심 부품에 의존하여 Knative라는 Serverless 거선을 구동하여 앞으로 나아가고 있다.다음은 이 세 개의 핵심 구성 요소를 각각 소개할 것이다.
Build
Knative Build는 기존의 Kubernetes 능력을 바탕으로 표준화되고 이식 가능하며 재사용 가능한 용기 미러 구축 방식을 제공합니다.Kubernetes에서 복잡한 구축 작업을 실행함으로써 Knative Build는 이 이미지 구축 과정을 단독으로 개발하고 중복할 필요가 없으며, 체계화, 공정화 방식을 통해 이미지 구축 시간과 비용을 줄일 수 있습니다.
Build는 Kubernetes 사용자 정의 리소스 정의(CRD)를 통해 구현됩니다.Build를 통해 실행에서 끝까지의 구축 프로세스를 사용자 정의할 수 있습니다.예를 들어, Knative Build를 사용하여 코드를 가져오고, 구축하고, 패키지화할 수 있습니다.Build에는 다음과 같은 기능이 있습니다.
  • Source 소스 마운트가 지원됩니다. 현재 지원되는 Source 소스는 다음과 같습니다.
  • git 코드 창고
  • 모든 컨테이너 미러
  • BuildTemplate를 통해 구축을 반복할 수 있는 템플릿 만들기 지원
  • K8s ServiceAccount 인증 지원
  • 일반적인 Build 다이어그램:
    현재 Knative Build는 완전한 독립된 CI/CD 솔루션을 제공하지 않지만 사용자가 이 구축 모듈을 단독으로 사용하여 대형 시스템에서 통합하고 이용할 수 있는 밑바닥 구축 모듈을 제공한다.
    Serving
    Knative는 Severless 프레임워크로서 최종적으로 서비스를 제공하는 데 사용되기 때문에 Knative Serving은 이에 따라 생겨났다.
    Knative Serving은 Kubernetes와 Istio에 구축되어 Serverless 응용 프로그램에 배치와 서비스 지원을 제공합니다.특성은 다음과 같습니다.
  • Serverless 컨테이너 신속 배포
  • 자동 용량 확장 및 0 실례 지원
  • Istio 구성 요소 기반 라우팅 및 네트워크 프로그래밍 제공
  • 스냅샷 배포 지원
  • Knative Serving에는 다음과 같은 CRD 리소스가 정의되어 있습니다.
  • 서비스: 전체 라이프 사이클 워크로드를 자동으로 관리합니다.Route, Configuration 및 Revision 리소스의 작성을 담당합니다.서비스를 통해 라우팅 트래픽에 최신 Revision 또는 고정 Revision 사용 여부를 지정할 수 있습니다
  • .
  • Route: 네트워크 엔드포인트를 하나 이상의 Revision에 매핑합니다.다양한 방법으로 트래픽을 관리할 수 있습니다.그레이스케일 흐름 및 이름 바꾸기 라우팅 포함
  • Configuration:Deployment의 기대 상태를 유지하고 코드와 설정 사이의 뚜렷한 분리를 제공하며 응용 개발의 12 요소를 따른다.Configuration 수정 후 Revision 생성
  • Revision: Revision 리소스는 워크로드에서 수정된 각 코드와 구성의 시점 스냅샷입니다.Revision은 불변 객체로 장기간 보존 가능
  • 리소스 다이어그램:
    Eventing
    Knative Eventing은 클라우드 네이티브 개발에서 공통적으로 사용되는 요구를 충족시키기 위해 이벤트 소스와 이벤트 소비자를 조합할 수 있는 방식으로 귀속시킬 수 있도록 설계되었다.설계 목표:
  • Knative Eventing이 제공하는 서비스는 느슨한 결합으로 독립적으로 개발하고 배치할 수 있다.서비스는 여러 플랫폼에서 사용할 수 있습니다(예를 들어 Kubernetes, VMs, SaaS 또는 FaaS)
  • 사건의 생산자와 사건의 소비자는 서로 독립적이다.모든 사건의 생산자(사건원)는 사건의 소비자가 감청하기 전에 사건이 발생할 수 있고, 같은 사건의 소비자는 사건이 발생하기 전에 감청하는 사건
  • 보다 먼저 발생할 수 있다.
  • 타사 서비스 접속 지원 Eventing 시스템
  • 서비스 간 상호 운용성 보장
  • 이벤트 처리 다이어그램:
    위의 그림에서 보듯이 이벤트는 이벤트 소스(Event Source), 이벤트 처리(Flow) 및 이벤트 소비자(Event Consumer) 세 부분으로 구성됩니다.
    이벤트 소스(Event Source)
    현재 지원되는 이벤트 소스는 다음과 같습니다.
  • ApiserverSource: Kubernetes 자원을 만들거나 업데이트할 때마다 ApiserverSource가 새로운 이벤트를 터치합니다
  • GitHubSource: GitHub 작업 시 GitHubSource에서 새로운 이벤트가 발생
  • GcpPubSubSource: GCP 클라우드 플랫폼 Pub/Sub 서비스에서 새로운 이벤트가 발생
  • AwsSqsSource:Aws 클라우드 플랫폼 SQS 서비스가 새로운 이벤트를 터치합니다
  • ContainerSource: ContainerSource는 하나의 용기를 실례화하여 이 용기를 통해 이벤트를 발생
  • CronJobSource: CronJob을 통한 이벤트 발생
  • KafkaSource: Kafka 이벤트를 수신하고 새 이벤트를 트리거
  • CamelSource:Camel 관련 구성 요소 이벤트를 수신하고 새로운 이벤트를 터치합니다
  • 이벤트 수신/전달(Flow)
    현재 Knative는 다음 이벤트 수신 처리를 지원합니다.
  • 직접 이벤트 수신은 이벤트 원본을 통해 단일 이벤트 소비자에게 직접 전달된다.Knative Service나 Kubernetes Service를 직접 호출하여 소비 처리를 지원합니다.이러한 장면에서 호출된 서비스를 사용할 수 없으면 이벤트 원본은 재시도 메커니즘 처리를 책임진다.
  • 이벤트 채널(Channel) 및 이벤트 구독(Subscriptions)을 통해 이벤트 처리를 전송하는 경우 채널을 통해 이벤트가 분실되지 않고 버퍼 처리되며, Subscriptions를 통해 이벤트를 구독하여 여러 소비자의 처리를 만족시킬 수 있다.
  • brokers와 triggers를 통해 이벤트 소비 및 필터 메커니즘 지원
  • 에서5부터 Knative Eventing은 Broker와 Trigger 대상을 정의하여 이벤트에 대한 필터링을 실현했다(또한ingress와ingress controller를 통해 네트워크 데이터에 대한 필터링과 같다).
    Broker를 정의하여 채널을 만들고 Trigger를 통해 채널의 구독(subscription)을 만들고 이벤트 필터 규칙을 생성합니다.
    이벤트 소비자(Event Consumer)
    Knative Eventing은 다양한 유형의 서비스로 이벤트를 전송하여 소비할 수 있도록 여러 k8s 리소스를 통해 두 개의 공통 인터페이스를 정의합니다.
  • Addressable 인터페이스는 이벤트 수신 및 전송에 사용할 수 있는 HTTP 요청 주소를 제공하며 status.address.hostname 필드를 통해 정의합니다.특수한 상황에서 Kubernetes 서비스 대상도 Addressable 인터페이스를 실현할 수 있다
  • Callable 인터페이스는 HTTP를 통해 전달된 이벤트를 수신하고 이벤트를 변환합니다.외부 이벤트 원본 이벤트를 처리하는 것과 같은 방식으로 되돌아오는 이벤트를 진일보 처리할 수 있다
  • 현재 Knative는 Knative 서비스나 Kubernetes 서비스를 통해 소비 이벤트를 지원합니다.
    또한 사건 소비자를 대상으로 어떤 사건이 소비될 수 있는지 어떻게 미리 알 수 있습니까?Knative Eventing은 최신 0.6 버전에서 Registry 이벤트 등록 메커니즘을 제공하여 이벤트 소비자가 사전에 Registry를 통해 어떤 브로커의 이벤트 유형을 소비할 수 있는지 얻을 수 있도록 한다.
    총결산
    Knative는 Build를 사용하여 클라우드 네이티브'소스 코드에서 용기로'의 미러링 구축 능력을 제공하고, Serving을 통해 용기를 배치하고 유니버설 서비스 모델을 제공하며, 이벤트 전역 구독, 전달, 관리 능력을 Eventing으로 제공하여 이벤트 구동을 실현한다.이것이 바로 Knative가 우리에게 보여준 표준 Serverless 편성 프레임워크입니다.
    저자: 제시 소강
    원문을 읽다
    본고는 운서 지역사회의 오리지널 내용으로 허락 없이 전재할 수 없다.

    좋은 웹페이지 즐겨찾기