Operator Pattern
Operator는 쿠버네티스에 대한 software extention으로서, custom resource를 application과 component로 관리하기 위해서 사용한다. Operator들은 쿠버네티스 원칙을 준수하며,대표적으로 control loop를 준수한다.
동기
Operator Pattern은 일련의 서비스들을 관리하는 human operator의 목표를 겨냥한다. 특정 어플리케이션이나 서비스들을 관리하는 human operator는 시스템이 어떻게 동작해야하고, 배포되어야 하고, 문제상황시 어떻게 해결하는지에 대한 깊은 지식을 갖고 있다.
쿠버네티스에서 작업을 실행하는 사람들은 반복적인 task를 자동화 시키고 싶어하며, Operator pattern은 쿠버네티스 자체가 제공하는 것을 넘어서는 task를 자동화 시킬수 있도록 한다.
Operator in Kubernetes
쿠버네티스는 자동화를 위해서 디자인 되었다. 쿠버네티스의 핵심기능으로부터, built-in 자동화기능을 많이 사용할 수 있다. 쿠버네티스를 사용해서 배포와 실행을 자동화 할수 있으며, 쿠버네티스가 어떻게 그일을 하는지 자동화 할수 있다.
쿠버네티스 컨트롤러 개념은 쿠버네티스 자체의 코드를 변경없이, 클러스터의 행동을 확장할 수 있도록 해준다는 것이다. Operator들은 Custom Resource에 대한 컨트롤러로써 역할하는 쿠버네티스 API의 클라이언트 역할을 한다.
Deploying Operators
operator를 배포하는 가장 흔한 방법은 Custom Resource Definition을 추가하고 그것의 연관된 컨트롤러를 클러스터에 추가하는 것이다. 컨트롤러는 어떤 containerized 어플리케이션을 실행할때와 같이, 보통 control plane 밖에서 동작한다.