개요
쿠버네티스 오퍼레이터는 쿠버네티스 애플리케이션을 패키징, 배포 및 관리하는 방법입니다. 쿠버네티스 애플리케이션은 쿠버네티스에 배포되고 쿠버네티스 API(애플리케이션 프로그래밍 인터페이스) 및 kubectl 툴링을 사용해 관리됩니다.
쿠버네티스 오퍼레이터는 쿠버네티스 API의 기능을 확장하여 쿠버네티스 사용자를 대신해 복잡한 애플리케이션의 인스턴스를 생성, 설정 및 관리하는 애플리케이션별 컨트롤러입니다.
기본 쿠버네티스 리소스 및 컨트롤러 개념에 기반을 두어 구축되지만 오퍼레이터가 관리하는 소프트웨어의 전체 라이프사이클을 자동화하는 데 필요한 도메인 또는 애플리케이션별 정보가 담겨 있습니다.
쿠버네티스에서 컨트롤 플레인의 컨트롤러는 클러스터의 원하는 상태를 실제 상태와 반복적으로 비교하는 제어 루프를 구현합니다. 클러스터의 실제 상태가 원하는 상태와 일치하지 않으면 컨트롤러는 이 문제를 해결하기 위한 작업을 수행합니다.
오퍼레이터는 사용자 정의 리소스(CR)를 사용하여 애플리케이션과 그 구성 요소를 관리하는 사용자 정의 쿠버네티스 컨트롤러입니다. 대략적인 수준의 구성 및 설정은 CR 내 사용자가 제공합니다. 쿠버네티스 오퍼레이터는 대략적인 수준의 지시문을 오퍼레이터의 로직 안에 임베드된 모범 사례에 근거하여 상세 수준의 작업으로 변환합니다.
사용자 정의 리소스는 쿠버네티스 내의 API 확장 메커니즘입니다. 사용자 정의 리소스 정의(CRD)는 CR을 정의하고 오퍼레이터 사용자에게 제공되는 모든 설정 목록을 나열합니다.
쿠버네티스 오퍼레이터는 CR 유형을 감시하고 애플리케이션별 작업을 수행하여 현재 상태를 해당 리소스에서 원하는 상태와 일치시킵니다.
쿠버네티스 오퍼레이터는 사용자 정의 리소스 정의를 통해 새로운 개체 유형을 도입합니다. 사용자 정의 리소스 정의는 kubectl을 통한 상호 작용과 롤 기반 액세스 제어(RBAC) 정책 내 포함 사항 등의 빌트인 개체와 마찬가지로 쿠버네티스 API를 이용해 처리할 수 있습니다.
쿠버네티스 오퍼레이터는 애플리케이션이 실행되는 동안 이를 지속적으로 모니터링하고, 시간 경과에 따라 자동으로 데이터 백업, 장애 복구, 애플리케이션 업그레이드 작업을 할 수 있습니다.
쿠버네티스 오퍼레이터가 수행하는 작업에는 거의 모든 것이 포함될 수 있습니다. 즉, 복잡한 애플리케이션의 스케일을 조정하고 애플리케이션 버전을 업그레이드할 수 있을 뿐 아니라 특수 하드웨어로 연산 클러스터 내 노드의 커널 모듈을 관리할 수도 있습니다.
오퍼레이터가 쿠버네티스 애플리케이션을 관리하는 방법
쿠버네티스는 웹 애플리케이션, 모바일 백엔드, API 서비스와 같은 스테이트리스 애플리케이션의 작동 방식에 관한 부가적인 지식 없이도 이러한 애플리케이션을 관리하고 스케일을 조정할 수 있습니다. 쿠버네티스의 빌트인 기능은 이 태스크를 손쉽게 처리할 수 있도록 설계되었습니다.
그러나 데이터베이스 및 모니터링 시스템과 같은 스테이트풀 애플리케이션의 경우에는 쿠버네티스에 없는 부가적인 도메인별 지식이 필요합니다. 이러한 지식은 애플리케이션의 스케일 조정, 업그레이드 및 재설정에 필요합니다.
쿠버네티스 오퍼레이터는 이 특정한 도메인 지식을 쿠버네티스 확장 기능으로 인코딩하여 애플리케이션 라이프사이클을 자동화하고 관리합니다.
쿠버네티스 오퍼레이터는 애플리케이션 수동 관리라는 까다로운 태스크를 제거함으로써 이러한 프로세스를 확장 및 반복 가능하도록 만들고 표준화합니다.
애플리케이션 개발자는 오퍼레이터를 이용해 애플리케이션의 기반 서비스를 더 쉽게 배포하고 실행할 수 있습니다.
인프라 엔지니어와 벤더는 오퍼레이터를 이용해 애플리케이션의 문제점을 파악해 교정함으로써 쿠버네티스 클러스터에 소프트웨어를 일관된 방식으로 배포하고 지원 부담을 줄일 수 있습니다.
오퍼레이터를 사용하면 쿠버네티스에서 제공하는 기본적인 자동화 기능 외에도 코드 작성을 통해 태스크를 자동화할 수 있습니다. DevOps 또는 사이트 신뢰성 엔지니어링(SRE) 방식을 따르는 팀을 위해, 오퍼레이터는 SRE 사례를 쿠버네티스에 적용할 수 있게 개발되었습니다.
오퍼레이터 패턴의 기능은 인간 오퍼레이터가 의도하는 서비스 관리 방식을 파악하는 것입니다. 인간 오퍼레이터는 애플리케이션 또는 서비스의 작동 방식, 배포 방식, 잠재적 문제 해결 방식을 완벽히 이해하고 있어야 합니다.
사이트 신뢰성 엔지니어 또는 운영 팀은 일반적으로 애플리케이션을 관리하는 소프트웨어를 작성하지만, 오퍼레이터는 인간의 운영 지식을 인코딩하여 쿠버네티스 워크로드를 관리 및 배포하고 수작업을 제거하는 소프트웨어를 작성하도록 설계되었습니다.
오퍼레이터는 특정 애플리케이션을 설치, 실행 및 업그레이드하는 비즈니스 로직 전문가가 가장 잘 구축합니다.
오퍼레이터 생성은 애플리케이션 설치 및 셀프 서비스 프로비저닝을 자동화하는 것으로 시작하는 경우가 많고, 이어서 더 복잡한 자동화 기능이 따라옵니다.
자체 오퍼레이터를 개발하는 데 도움이 될 수 있는 쿠버네티스 오퍼레이터 소프트웨어 개발 키트(SDK)도 있습니다. SDK는 오퍼레이터를 빌드, 테스트, 패키징할 수 있는 툴과 함께, Helm 차트, Ansible 플레이북 또는 Golang을 사용해 오퍼레이터를 생성할 수 있는 옵션을 제공합니다.
Red Hat 리소스
오퍼레이터 프레임워크
오퍼레이터 프레임워크는 개발자 및 런타임 쿠버네티스 툴을 제공하여 오퍼레이터 개발 가속화를 지원하는 오픈소스 프로젝트입니다.
오퍼레이터 프레임워크에는 다음이 포함되어 있습니다.
- 오퍼레이터 SDK: 개발자가 쿠버네티스 API 복잡성에 관한 지식이 없어도 전문성을 바탕으로 오퍼레이터를 구축하도록 지원합니다.
- 오퍼레이터 라이프사이클 관리: 쿠버네티스 클러스터 전반에서 실행 중인 모든 오퍼레이터의 설치, 업데이트 및 라이프사이클 관리를 감독합니다.
- 오퍼레이터 미터링: 전문 서비스를 제공하는 오퍼레이터에 대한 사용량 보고를 지원합니다.
Red Hat OpenShift에서 오퍼레이터 사용하기
Red Hat® OpenShift®는 자동화된 풀스택 오퍼레이션을 통해 하이브리드 클라우드 및 멀티클라우드 배포를 관리하는 엔터프라이즈 레디 쿠버네티스 컨테이너 플랫폼입니다.
Red Hat OpenShift는 쿠버네티스 오퍼레이터를 사용해 전체 플랫폼을 자율적으로 실행하는 동시에 쿠버네티스 개체를 통해 기본적으로 설정을 노출하므로 빠른 설치와 빈번하고 강력한 업데이트가 가능합니다.
Red Hat OpenShift에는 소프트웨어 공급업체 및 오픈소스 프로젝트의 인증된 오퍼레이터 레지스트리인 임베디드 OperatorHub가 포함되어 있습니다. Red Hat OpenShift와 연동되는 것으로 검증되고 손쉽게 라이프사이클을 관리하도록 패키징된 오퍼레이터 라이브러리를 OperatorHub 내부에서 검색하고 설치할 수 있습니다.
레드햇 공식 블로그
레드햇 공식 블로그에서 고객, 파트너, 커뮤니티 에코시스템 등 현재 화제가 되는 최신 정보를 살펴 보세요.