Ssoon

오퍼레이터 & MySQL 오퍼레이터 (3) - Operator 추가 본문

Database Operator In Kubernetes study

오퍼레이터 & MySQL 오퍼레이터 (3) - Operator 추가

구구달스 2022. 6. 2. 00:00
CloudNet@ 팀의 가시다님이 진행하는 Database Operator In Kubernetes study 스터디 중 Operator 내용에 대해 정리하였습니다.

 

Kubernetes Operators는 일반적으로 제한된 수의 리소스 유형에서 마스터 API에 연결하고 이벤트를 감시하는 프로세스입니다.
관련 이벤트가 발생하면 Operator 가 반응하여 특정 작업을 수행합니다. 
이 작업은 마스터 API와만 상호 작용하는 것으로 제한될 수 있지만, 종종 일부 다른 시스템(클러스터 내 또는 클러스터 외 리소스)에서 일부 작업을 수행해야 합니다.

Kubernetes가 Reconciler 패턴에서 작동하는 방식.

Kubernetes는 두 가지 주요 임무를 수행합니다.
etcd의 리소스를 주시하여 모든 변경 사항을 확인합니다. 그리고 만약 어떤 변화가 있다면, etcd에서 그 상태를 특정한 정의된 상태로 조정(reconcile) 하고 가져오려고 하면 됩니다.

What Is a Controller Loop?

Controller Loop 는 Controller 동작의 기본입니다.

이 프로세스는 desired 상태에 대한 정보를 포함하는 하나 이상의 Kubernetes 개체를 관찰합니다. 

  • Deployments,
  • Services,
  • Secrets,
  • Ingress,
  • Config Maps

JSON 또는 YAML의 Manifests 로 구성된 구성 파일에 의해 정의됩니다. 그런 다음 Controller 는 기본 제공 논리에 따라 current 상태가 desired 상태가 될 때까지 Kubernetes API를 통해 desired 상태를 모방하도록 연속적으로 조정합니다.

Kubernetes Operator 는 어떻게 작동합니까?

Operator 는 응용 프로그램별 컨트롤러입니다. Kubernetes API를 확장하여 인간을 대신하여 복잡한 애플리케이션을 생성, 구성 및 관리합니다.

지금까지는 Operator 가 Kubernetes 개체를 관찰하는 Controller 를 이용한다는 것을 알고 있습니다. 이러한 Controller 는 사용자 지정 개체를 추적하기 때문에 약간 다릅니다. 이 개체는 흔히 Custom Resource(CR)라고 합니다. CR은 Kubernetes API의 확장으로, 응용프로그램의 desired 상태인 구조화된 데이터를 저장하고 검색할 수 있는 장소를 제공합니다.

Operator 는 특정 유형의 Custom Resource 와 관련된 클러스터 이벤트를 지속적으로 추적합니다. 이러한 Custom Resource 에 대해 추적할 수 있는 이벤트 유형은 다음과 같습니다.

  • Add,
  • Update,
  • Delete.

Operator 가 정보를 수신하면 Custom Controller 에서 Reconciliation Loop의 일부로 Kubernetes 클러스터 또는 외부 시스템을 desired 상태로 조정하기 위한 조치를 취합니다.

Custom Resource 를 추가하는 방법

Custom Resource 는 애플리케이션에 새로운 종류의 개체를 추가하여 Kubernetes 기능을 확장합니다.Kubernetes는 클러스터에 Custom Resource를 추가하는 두 가지 방법을 제공합니다.

  • via API Aggregation : API 서버를 직접 구축해야 하지만 더 많은 제어 기능을 제공하는 고급 메서드입니다.
  • via Custom Resource Definitions (CRD) : 프로그래밍 지식 없이 원래 Kubernetes API 서버에 대한 확장으로 만들 수 있는 간단한 방법입니다.

Custom Resource Definitions

apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: application.stable.example.com
spec:
  group: stable.example.com
  version: v1
  scope: Namespaced
  names:
    plural: application
    singular: applications
    kind: Application
    shortNames:
      - app

이 Custom Resource Definitions 를 사용하면 Application이라는 Custom Resource 을 만들 수 있습니다

Custom Resource

위의 Custom Resource Definitions 를 사용하여 Custom Resource 의 다음 manifest 를 생성할 수 있습니다.

apiVersion: stable.example.com/v1
kind: Application
metadata:
  name: application-config
spec:
  image: container-registry-image:v1.0.0
  domain: teamx.yoursaas.io
  plan: premium

특정 사례에 대한 응용 프로그램을 실행하는 데 필요한 모든 정보를 여기에 포함할 수 있습니다.이 Custom Resource 는 Operator  에 의해 관찰됩니다.정확히 말하면 Operator 의  Custo Controller 에 의해 관찰됩니다.Controller 에 내장된 logic 에 따라 필요한 동작은 desired 상태를 모방합니다. Deployment, Service 및 애플리케이션에 필요한 ConfigMap을 작성할 수 있습니다.실행 후 특정 도메인에서 ingress 을 통해 노출합니다.

Operators 를 사용하여 Kubernetes 외부에 있는 리소스를 프로비저닝할 수도 있습니다.Kubernetes 플랫폼을 떠나지 않고 외부 라우터의 프로비저닝을 제어하거나 클라우드에 데이터베이스를 작성할 수 있습니다.

Kubernetes Operators : 사용 사례

Prometheus Operator 의 핵심 기능은 Kubernetes API 서버에서 특정 객체에 대한 변경을 감시하고 현재 Prometheus 배치와 이러한 객체가 일치하는지 확인하는 것입니다. Operator 는 다음 Custom Resource Definitions 에 대해 작업합니다.

  • Prometheus, 원하는 Prometheus 배치를 정의
  • Alertmanager, 원하는 Alert Manager 배포를 정의합니다.
  • ServiceMonitor, Kubernetes 서비스 그룹을 모니터링하는 방법을 선언적으로 지정합니다. Operator 는 API 서버에 있는 객체의 current 상태를 기반으로 Prometheus 스크래치 구성을 자동으로 생성합니다.
  • PodMonitor, Pod 그룹을 모니터링하는 방법을 선언적으로 지정합니다. Operator 는 API 서버에 있는 객체의 current  상태를 기반으로 Prometheus 스크래치 구성을 자동으로 생성합니다.
  • PrometheusRule, 원하는 Prometheus 알림 및/또는 기록 규칙 집합을 정의합니다. 운영자는 Prometheus 인스턴스에서 사용할 수 있는 규칙 파일을 생성합니다.

 

https://pperzyna.com/blog/kubernetes-operators-explained/

 

 
Comments