Č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:
- Definícia Custom Resource (CRD): Určuje sa nový typ zdroja na reprezentáciu aplikácie alebo služby.
- Vytvorenie Custom Resource (CR): Používateľ vytvorí inštanciu tohto nového zdroja, opisujúc požadovaný stav aplikácie.
- Operátor ako kontrolér: Operátor neustále sleduje vytváranie, aktualizácie a mazanie CR tohto typu.
- 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.
- 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í.