Sobes.tech
Middle+

Čo sú operátori v Kubernetes a aký vzor používajú?

sobes.tech AI

Odpoveď od AI

Operátori sú metódy balenia, nasadenia a správy aplikácií na Kubernetes. Rozširujú funkčnosť API Kubernetes a fungujú ako kontroléry špecifické pre konkrétny softvér.

Hlavný vzor používaný operátormi je Controller (kontrolér). Kontrolér v Kubernetes neustále sleduje aktuálny stav klastru a porovnáva ho s požadovaným stavom. Ak sa stavy líšia, kontrolér vykoná potrebné kroky na uvedenie aktuálneho stavu do súladu s požadovaným.

V prípade operátorov automatizujú operačné úlohy, ktoré zvyčajne vykonávajú ľudia: zálohovanie, aktualizácie, škálovanie, správa životného cyklu špecifických aplikácií a ich závislostí. Robia to reakciou na udalosti v klastre a manipuláciou s používateľskými zdrojmi (Custom Resources - CR) a definíciami používateľských zdrojov (Custom Resource Definitions - CRD), ktoré rozširujú API Kubernetes.

Princíp fungovania:

  1. Definícia Custom Resource (CRD): Určuje sa nový typ zdroja na reprezentáciu aplikácie alebo služby.
  2. Vytvorenie Custom Resource (CR): Používateľ vytvorí inštanciu tohto nového zdroja, opisujúc požadovaný stav aplikácie.
  3. Operátor ako kontrolér: Operátor neustále sleduje vytváranie, aktualizácie a mazanie CR tohto typu.
  4. Porovnanie stavov: Operátor porovnáva aktuálny stav aplikácie (napríklad počet spustených podov, verziu softvéru, konfiguráciu) s požadovaným stavom opísaným v CR.
  5. Vykonanie akcií: Ak sa stavy líšia, operátor vykoná potrebné akcie cez štandardné API Kubernetes (vytvorenie/aktualizácia/mazanie Deployment, StatefulSet, Service, PVC a pod.) na uvedenie aktuálneho stavu do súladu s požadovaným.

Príklad: Operátor pre databázu PostgreSQL môže poskytovať CR PostgresqlDatabase. Používateľ vytvorí taký CR s požadovanou verziou, veľkosťou úložiska a nastaveniami replikácie. Operátor PostgreSQL, sledujúc tento CR, vytvorí potrebné StatefulSet, PersistentVolumeClaim, Service a nastaví replikáciu, zabezpečujúc dosiahnutie a udržiavanie požadovaného stavu.

# Príklad Custom Resource pre hypotetického PostgreSQL operátora
apiVersion: postgresql.database.example.com/v1
kind: PostgresqlDatabase
metadata:
  name: my-prod-db
spec:
  version: "14.5"
  storageSize: "100Gi"
  replicas: 3
  backup:
    enabled: true
    schedule: "0 2 * * *"

Týmto spôsobom operátori zakonzervujú hlboké operačné znalosti o konkrétnej aplikácii v kóde, ktorý beží na Kubernetes, automatizujú rutinné úlohy a zvyšujú spoľahlivosť a škálovateľnosť nasadení.