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