Ssoon
오퍼레이터 & MySQL 오퍼레이터 (1) - Operator 란? 본문
CloudNet@ 팀의 가시다님이 진행하는 Database Operator In Kubernetes study 스터디 중 Operator 내용에 대해 정리하였습니다.
쿠버네티스 오퍼레이터란?
Kubernetes Operator 개념은 2016년 CoreOS의 엔지니어들에 의해 개발되었습니다. 도메인별 지식이 필요한 Kubernetes 클러스터에서 모든 애플리케이션을 구축하고 구동하는 고급 네이티브 방식으로 개발되었습니다. 쿠버네티스 API와의 긴밀한 협력을 통해 사람의 반응 없이 모든 애플리케이션 운영 프로세스를 자동으로 처리할 수 있는 일관된 접근 방식을 제공한다. 즉, Operator 는 Kubernetes 응용 프로그램을 패키징, 실행 및 관리하는 방법입니다.
쿠버네티스 오퍼레이터는 쿠버네티스 애플리케이션을 패키징, 배포 및 관리하는 방법입니다.
쿠버네티스 오퍼레이터는 쿠버네티스 API의 기능을 확장하여 쿠버네티스 사용자를 대신해 복잡한 애플리케이션의 인스턴스를 생성, 설정 및 관리하는 애플리케이션별 컨트롤러입니다.
쿠버네티스에서 컨트롤 플레인의 컨트롤러는 클러스터의 원하는 상태를 실제 상태와 반복적으로 비교하는 제어 루프를 구현합니다.
클러스터의 실제 상태가 원하는 상태와 일치하지 않으면 컨트롤러는 이 문제를 해결하기 위한 작업을 수행합니다.
오퍼레이터는 Custom Resources 를 사용하여 애플리케이션과 그 구성 요소를 관리하는 사용자 정의 쿠버네티스 컨트롤러입니다.
Custom Resources 는 쿠버네티스 내의 API 확장 메커니즘입니다. Custom Resource Definitions 는 Custom Resources 을 정의하고 오퍼레이터 사용자에게 제공되는 모든 설정 목록을 나열합니다.
쿠버네티스 오퍼레이터는 Custom Resources 유형을 감시하고 애플리케이션별 작업을 수행하여 현재 상태를 해당 리소스에서 원하는 상태와 일치시킵니다.
쿠버네티스 오퍼레이터는 애플리케이션이 실행되는 동안 이를 지속적으로 모니터링하고, 시간 경과에 따라 자동으로 데이터 백업, 장애 복구, 애플리케이션 업그레이드 작업을 할 수 있습니다.
Operator 가 작업 자동화을 위해 Kubernetes를 확장합니다.
Operator 는 Custom Resources 를 사용하여 쿠버네티스 응용프로그램과 해당 구성요소를 관리하는 쿠버네티스의 확장입니다. 일반적으로 인간 운영자가 수행하는 소프트웨어 구성 및 유지 관리 작업을 자동화합니다.
Kubernetes는 Stateless 응용 프로그램을 잘 관리하지만 데이터베이스와 같은 Stateful 응용 프로그램에 대해 더 복잡한 구성 세부 정보가 필요할 때 Operator 가 유용합니다. Stateful 워크로드은 Stateless 워크로드보다 관리하기가 더 어렵습니다. 워크로드의 상태에 따라 워크로드가 다음과 같이 변경됩니다.
- 인스톨 할 필요가 있습니다.
- 새 버전으로 업그레이드합니다.
- 장애로부터 복구합니다.
- 모니터링이 필요합니다.
- Scales out 했다가 다시 축소합니다.
Operator 는 Service 가 성공적으로 실행되는지 확인하는 데 필요한 모든 작업을 처리합니다. Operator 는 Service 를 더 자체 관리하도록 하므로, 애플리케이션 팀은 Service 를 관리하는 데 드는 노력을 줄이고 서비스 사용에 더 많은 노력을 기울일 수 있습니다.
Operator에는 무엇이 있습니까?
Operator 는 특수 기능으로 쿠버네티스 Control Plane 을 확장하여 쿠버네티스 관리자를 대신하여 워크로드를 관리합니다.
Operator 는 다음을 포함합니다. :
- Custom Resource Definition (CRD) : 워크로드을 구성하는 데 사용할 수 있는 설정 스키마를 정의합니다. Operator 는 Custom Resource Definition 를 통해 새 개체 유형을 도입합니다.
쿠버네티스 API는 쿠버네티스 클라이언트 도구를 통한 상호 작용과 역할 기반 액세스 제어 정책(RBAC)의 포함을 포함하여 네이티브 쿠버네티스 개체와 같은 객체를 처리합니다. - Custom Resource (CR) : Custom Resource Definition 에 의해 생성되고 Kubernetes API의 확장입니다. Operator 가 Custom Resource 내에서 구성 설정을 제공한 다음 Operator 가 사용자 지정 컨트롤러 로직을 사용하여 구성을 낮은 수준의 작업으로 변환하여 변환을 구현합니다.
- Controller : 워크로드에 맞게 사용자 정의되고 Custom Resource 의 값으로 표시되는 desired 상태와 일치하도록 워크로드의 current 상태를 구성하는 컨트롤러입니다.
Kubernetes Operators reconcile state
Kubernetes 에서 Control Plane 의 Controller 는 클러스터의 desired 상태를 current 상태와 반복적으로 비교하는 Control Loop 에서 실행된다.
상태가 일치하지 않으면 Controller 가 current 상태를 desired 상태와 더 가깝게 조정하기 위한 작업을 수행합니다
마찬가지로 Operator 의 Controller 는 특정 Custom Resource 유형을 감시하고 응용 프로그램별 작업을 수행하여 작업량의 현재 상태가 Custom Resource 에 표현된 대로 desired 상태와 일치하도록 합니다.
다이어그램은 Control Plane 이 Controller 를 Loop 에서 어떻게 구동하는지 보여준다. 여기서 일부 Controller 는 Kubernetes 에 내장되어 있고 일부는 Operator 의 일부이다.
Control Plane 의 Controller 는 Stateless 워크로드에 최적화되어 있으며, 모든 Stateless 워크로드에 대해 모두 유사하므로 하나의 Controller 집합이 작동합니다. Operator 의 Controller 는 하나의 특정 Stateful 워크로드에 맞게 사용자 지정됩니다. 각 Stateful 워크로드에는 해당 워크로드를 관리하는 방법을 아는 자체 Controller 있는 Operator 가 있습니다
Kubernetes Operator technologies
Operator 는 일반적으로 세 가지 주요 기술 중 하나로 구현됩니다.
- Go : Go로 작성된 코드는 강력하며 Kubernetes 가 할 수 있는 거의 모든 것을 할 수 있다. 쿠버네티스 자체는 Go에서 구현되기 때문에 Go 에서 구현된 Operator 가 적합하다.
- Ansible : 이미 Ansible 모듈을 작성한 인프라 팀에 적합한 선택입니다. Ansible은 선언적(declarative) 이고 사람이 읽을 수 있으며 Go 와 거의 같은 기능을 표현한다.
- Helm : Helm Operator 는 구현이 간단하지만 기능은 Helm 기능으로 제한됩니다.
The Operator SDK
Operator SDK는 Operator 를 빌드, 테스트 및 패키징하기 위한 오픈 소스 도구 세트입니다. SDK CLI를 사용하여 프로젝트를 Scaffold 할 수 있으며 코드를 생성하기 위한 사전 빌드 명령도 제공합니다.
The Operator Lifecycle Manager
SDK를 사용하면 명령줄을 사용하여 OLM(Operator Lifecycle Manager)을 설치할 수도 있습니다. OLM은 Operator 의 수명 주기를 관리하는 클러스터 리소스 집합입니다. 설치되면 OLM의 상태를 확인하여 SDK가 클러스터의 OLM 구성 요소와 성공적으로 통신할 수 있는지 확인할 수 있습니다.
추가 Operator SDK 개념
- Operand : Operator 가 서비스로 제공하는 관리되는 워크로드입니다.
- Managed Resource : Operator 가 Operand (secondary resources라고도 함)를 구성하는 데 사용하는 큐버네티스 개체 또는 off-cluster 서비스입니다.
Operator capability levels
일부 Operator 는 다른 Operator 보다 Operand 의 수명 주기를 더 정교하게 관리합니다. Operator 능력 수준 모델은 5가지 수준의 정교함을 정의합니다.
이 모델은 사용자가 특정 Operator 에게 기대할 수 있는 기능을 안내합니다.
OperatorHub.io
OperatorHub.io은 개발자가 Operator 를 찾고, 설치하고, 게시하는 데 사용하는 웹 기반 응용 프로그램입니다.
오퍼레이터가 쿠버네티스 애플리케이션을 관리하는 방법
쿠버네티스 오퍼레이터는 애플리케이션 수동 관리라는 까다로운 태스크를 제거함으로써 이러한 프로세스를 확장 및 반복 가능하도록 만들고 표준화합니다.
애플리케이션 개발자는 오퍼레이터를 이용해 애플리케이션의 기반 서비스를 더 쉽게 배포하고 실행할 수 있습니다.
인프라 엔지니어와 벤더는 오퍼레이터를 이용해 애플리케이션의 문제점을 파악해 교정함으로써 쿠버네티스 클러스터에 소프트웨어를 일관된 방식으로 배포하고 지원 부담을 줄일 수 있습니다.
https://www.redhat.com/ko/topics/containers/what-is-a-kubernetes-operator
'Database Operator In Kubernetes study' 카테고리의 다른 글
오퍼레이터 & MySQL 오퍼레이터 (6) - MySQL Operator for Kubernetes 실습 - 1 (0) | 2022.06.06 |
---|---|
오퍼레이터 & MySQL 오퍼레이터 (5) - MinIO Operator 실습 (0) | 2022.06.02 |
오퍼레이터 & MySQL 오퍼레이터 (4) - CR & CRD 실습 (0) | 2022.06.02 |
오퍼레이터 & MySQL 오퍼레이터 (3) - Operator 추가 (0) | 2022.06.02 |
오퍼레이터 & MySQL 오퍼레이터 (2) - Operator 작동 방식 (0) | 2022.06.01 |