본문 바로가기
golang

[golang] kubernetes Operator 만들기 Kubebuilder Controller-runtime 2 - Overview

by weq155 2023. 11. 14.
반응형

[golang] kubernetes Operator 만들기 Controller-runtime 1 - Controller

[golang] kubernetes Operator 만들기 Controller-runtime 2 - Overview

[golang] kubernetes Operator 만들기 Controller-runtime 3 - Manager

[golang] kubernetes Operator 만들기 Controller-runtime 4 - Builder

Overview

이전 글에서는 간단한 controller-runtime을 이용해 example controller를 만들어 보았다.

이번엔 controller-runtime의 컴포넌트들에 대해 자세히 알아보자

 

 

 

Architecture

architecture in kubebuilder

 

Architecture - The Kubebuilder Book

The following diagram will help you get a better idea over the Kubebuilder concepts and architecture.

book.kubebuilder.io

 

kubebuilder 아키텍처의 메인 컴포넌트 들이다.

(kubebuilder는 내부적으로 controller-runtime을 사용함)

 

대부분의 컨트롤러는 이전 글의 example controller에서 사용된걸 알 수있다.

  1. Manager
  2. Controller
  3. Reconciler
  4. Client
  5. Cache
  6. Webhook

 

Flow of Kubernetes controller

위의 그림과는 다르게 이 그림을 통해 전체적인 flow를 이해하는데에 도움이 됨

 

그림에서는 Manager, Controller, Reconciler를 중심으로 controller-runtime이 쿠버네티스에서 동작하는 것을 설명해 준다.

  1. Reconciler는 코어 reconcil 로직을 구현하는 컴포넌트이다.
  2. Reconciler는 모든 controller를 실행하기 위한 컴포넌트인 매니저에 등록된다.
  3. Reconciler가 등록되었을 때, 우리는 Pod, Deploy, CR(custom resource) 등 대상 리소스를 지정할 수 있다.

또한 각 컴포넌트들은 내부적으로 몇개의 컴포넌트 등을 가지고 있음

  1. Controller가 Manager에 의해 실행 될때, 리소스들의 변경을 감지하고 그 정보를 WorkQueue에 보내는 Source 컴포넌트가 실행 된다.
  2. Client는 API 서버와 통신하며 Cluster라고 불리는 컴포넌트의 Manager로 초기화 된다. 초기화된 Client는 등록된 controller들에게 공유되며, Client는 Reconclier에게 로직에 따른 Kubernetes object가 변경됨

지금까지 controller-runtime의 컴포넌트들이 쿠버네티스에서 어떻게 동작 하는지 작동 방식에 대해 알아 보았다.

controller-runtime 없이 이러한 개발을 진행한다면 코드는 다르겠지만 flow는 거의 바뀌지 않으니 만들어 놓은걸 감사하게 사용하자

 

 

 

 

Reperence

* 본 글은  Masato Naka의 medium 게시글을 참조 & 번역함

https://nakamasato.medium.com/kubernetes-operator-series-2-overview-of-controller-runtime-f8454522a539

 

Kubernetes Operator series 2 — Overview of controller-runtime

Overview of Kubernetes Operator with controller-runtime

nakamasato.medium.com

반응형

 

반응형