Kubernetes Operators
Bazy danych i Kafka na Kubernetes bez manualnej operacji. Operator enkapsuluje wiedzę eksperta w kodzie — automatyczny failover, backup, rolling upgrades i monitoring.
5 poziomów dojrzałości Operatora
OperatorHub definiuje 5 poziomów — od prostej instalacji po w pełni autonomiczny auto-pilot.
Level 1 — Basic Install
Automatyczna instalacja i konfiguracja aplikacji przez CRD
Zainstaluj Kafka z N brokerami przez kubectl apply
Level 2 — Seamless Upgrades
Bezpieczne rolling upgrades i rollbacks bez downtime
kubectl patch KafkaCluster version → Operator robi rolling upgrade
Level 3 — Full Lifecycle
Backup, restore, failover, scale-out — kompletny lifecycle management
Automatic failover PostgreSQL, scheduled backup do S3, PITR restore
Level 4 — Deep Insights
Metryki, alerty, dashboardy, status conditions — pełna obserwabilność
ServiceMonitor, Grafana dashboards, custom alerts per CRD
Level 5 — Auto Pilot
Automatyczne skalowanie, self-healing, tuning na podstawie metryki
Auto-tune PostgreSQL shared_buffers, auto-scale Kafka partitions
6 produkcyjnych Operatorów — co warto znać?
Ekosystem Operatorów obejmuje wszystko od baz danych przez monitoring po backup — większość dostępna przez OperatorHub.
CloudNativePG (CNPG)
ProdukcyjnaPostgreSQL
Automated failover, WAL backup do S3, PITR, PgBouncer pooling
Strimzi Kafka Operator
ProdukcyjnaKafka
KafkaCluster, KafkaTopic, KafkaUser CRDs, rolling upgrades, monitoring
Redis Enterprise Operator
Produkcyjna (Enterprise)Redis
Auto-sharding, geo-replication, persistent memory, TLS
Prometheus Operator
Standard branżowyMonitoring
ServiceMonitor, PrometheusRule CRDs, Grafana, Alertmanager — cały stack
cert-manager
Standard branżowySSL/TLS
Automatyczne certyfikaty Let's Encrypt, wewnętrzna CA, renewal
Velero
ProdukcyjnaBackup
Backup cluster resources + persistent volumes do S3/GCS/Azure
Często zadawane pytania
Co to jest Kubernetes Operator i jak działa?
Kubernetes Operator to wzorzec rozszerzający Kubernetes API o obsługę złożonych, stateful aplikacji. Operator 'wie' jak zainstalować, konfigurować, skalować, aktualizować i naprawić konkretną aplikację — enkapsuluje wiedzę eksperta operacyjnego (operatora) w kodzie. Problem który rozwiązuje: Kubernetes świetnie zarządza bezstanowymi aplikacjami (Deployment, ReplicaSet). Ale bazy danych, kolejki, systemy klaster-aware (Elasticsearch, Kafka, PostgreSQL) mają złożoną logikę operacyjną — backupy, failover, rolling upgrades, reshard. Bez Operatora: te operacje wymagają manualnej interwencji lub skomplikowanych skryptów. Architektura Operatora: CRD (Custom Resource Definition) — rozszerza Kubernetes API. Definiujesz nowy typ zasobu (np. PostgresCluster, KafkaCluster). Controller (Operator logic) — watch loop który obserwuje zasoby CRD. Gdy stan desired != actual → reconcile (doprowadź do stanu pożądanego). Reconcile loop: List/Watch CRD resources → compare desired vs current → take action → update status. Operator Capability Levels (OperatorHub): Level 1: Basic Install — automatyczna instalacja/konfiguracja. Level 2: Seamless Upgrades — bezpieczne aktualizacje i rollbacks. Level 3: Full Lifecycle — backup, restore, failover. Level 4: Deep Insights — metryki, alerty, logi. Level 5: Auto Pilot — automatyczna skalowanie, self-healing, tuning.
Operator SDK i Kubebuilder — jak napisać własny Operator?
Frameworki do budowania Operatorów: Kubebuilder: oficjalny framework (Kubernetes SIG). Go jako język. Generuje scaffolding (CRD, Controller, RBAC, Webhooks). Używany przez większość oficjalnych Operatorów. Operator SDK (Red Hat): nakładka na Kubebuilder + wsparcie dla Ansible i Helm Operators. Ansible Operator — wyzwalaj Ansible playbooks jako kontroler. Helm Operator — wyzwalaj Helm chart install/upgrade jako kontroler. Kopf (Python): framework do Operatorów w Pythonie. Prostszy niż Go, ale mniejszy ekosystem. Cykle życia CRD i Controller w Go (Kubebuilder): kubebuilder init → kubebuilder create api (scaffold CRD). Definiujesz Spec (desired state) i Status (current state) w Go structs. Implement Reconcile() — core logika kontrolera. Reconcile dostaje name/namespace, zwraca Result (requeue? after how long?). Best practices: idempotentność — Reconcile może być wywołany wielokrotnie. Owner references — powiąż zasoby (Pod, Service) z parent CRD. Status conditions — raportuj stan przez .status.conditions. Webhooks: Defaulting Webhook — ustaw defaults na CRD. Validating Webhook — waliduj CRD przed zapisem. Conversion Webhook — konwertuj między wersjami CRD (v1alpha1 → v1). RBAC: Operator potrzebuje uprawnień do tworzenia/edycji zasobów. Zasada least privilege — tylko to co niezbędne. Testowanie: envtest — uruchom fake Kubernetes API dla unit testów. controller-runtime/fake — mockowanie klienta. Integration tests z Kind lub k3s.
OperatorHub i gotowe Operatory — co jest dostępne?
OperatorHub.io: centralny katalog Operatorów (500+). Podzielone na kategorie: bazy danych, monitoring, networking, security. Certified Operators — certyfikowane przez Red Hat dla OpenShift. Community Operators — community-maintained. Popularne Operatory produkcyjne: Bazy danych: CloudNativePG — PostgreSQL Operator (najlepszy do PostgreSQL na K8s). Zalando Postgres Operator — alternative. CrunchyData PGO — enterprise PostgreSQL. MySQL Operator (Oracle). Redis Operator (OT-Container-Kit). MongoDB Community Operator. Kolejki i streaming: Strimzi Kafka Operator — Kafka na Kubernetes. RabbitMQ Cluster Operator. Monitoring: Prometheus Operator (kube-prometheus-stack) — Prometheus + Grafana + Alertmanager. Wprowadza CRDs: ServiceMonitor, PrometheusRule, Grafana. Victoria Metrics Operator. Security: Cert-Manager — automatyczne SSL certyfikaty (Let's Encrypt). Vault Secrets Operator (HashiCorp). External Secrets Operator. Networking: Istio Operator. Cilium Operator. Storage: Rook — Ceph distributed storage na Kubernetes. Velero — backup i restore. Installs Operatorów: Operator Lifecycle Manager (OLM) — zarządza instalacją i aktualizacją Operatorów. Helm chart — alternatywny install (np. kube-prometheus-stack jako Helm). kubectl apply — dla prostszych Operatorów.
CloudNativePG i PostgreSQL na Kubernetes — jak zarządzać bazą przez Operator?
CloudNativePG (CNPG): najlepszy production-grade PostgreSQL Operator. Zarządza pełnym cyklem życia klastra PostgreSQL. Deklaratywna konfiguracja przez CRD 'Cluster'. Funkcje CNPG: Automated failover — primary fail → replica awansuje automatycznie. Streaming replication — synchronous/asynchronous replicas. Continuous backup — WAL archiving do S3/GCS/Azure Blob. Point-in-time Recovery (PITR) — odtwarzanie bazy do dowolnego momentu. Connection pooling — PgBouncer zintegrowany. TLS — automatyczne certyfikaty (cert-manager integration). Rolling upgrades — aktualizacja PostgreSQL bez downtime. Prometheus metrics — automatyczny eksport przez ServiceMonitor. Przykład CRD: apiVersion: postgresql.cnpg.io/v1, kind: Cluster, spec.instances: 3 (primary + 2 replicas). Backup do S3: spec.backup.barmanObjectStore.destinationPath. ScheduledBackup CRD — automatyczne backupy na cron schedule. Strimzi (Kafka Operator): podobny poziom dojrzałości dla Kafka. KafkaCluster, KafkaTopic, KafkaUser — wszystko jako CRD. Rolling upgrades Kafka, ZooKeeper lub KRaft mode. Schema Registry Operator. Kafka Connect Operator. Prometheus monitoring out-of-the-box. Redis Enterprise Operator: Redis Inc. oferuje enterprise Operator. Automatyczny sharding, geo-replication, persistent memory support.
Operator Lifecycle Manager (OLM) — jak zarządzać Operatorami w produkcji?
OLM (Operator Lifecycle Manager): framework do instalacji, aktualizacji i zarządzania Operatorami w Kubernetes. Rozwiązuje: dependency management (Operator A wymaga Operator B). Automatic upgrades Operatorów. RBAC dla Operatorów. CatalogSources: źródła katalogu dostępnych Operatorów. OperatorHub.io community catalog. Red Hat certified catalog (dla OpenShift). Custom internal catalogs (własne Operatory organizacji). SubscriptionStatus: subskrybuj Operator z kanału (stable, alpha, beta). OLM automatycznie aktualizuje gdy nowa wersja dostępna. Approval: Manual (musisz zatwierdzić) lub Automatic. Namespace vs. Cluster scope: Operator może zarządzać zasobami w jednym namespace lub cały klaster. Cluster-wide Operators muszą mieć ClusterRole. InstallPlan: OLM tworzy InstallPlan gdy instaluje/aktualizuje Operator. Zawiera wszystkie zasoby do stworzenia (CRD, RBAC, Deployment). Najlepsze praktyki dla Operatorów w produkcji: Oddzielny namespace dla Operatorów (np. operators). Monitoring Operatora samego w sobie — czy Controller jest healthy. Resource limits dla Operator Deployment. RBAC audit — Operator nie powinien mieć ClusterAdmin. Versioning CRD — zachowaj backward compatibility. GitOps + Operatory: Argo CD / Flux zarządza instalacją Operatorów i ich CRD resources. ApplicationSet dla instancji per namespace.
Powiązane artykuły
Skontaktuj się z nami
Porozmawiajmy o Twoim projekcie. Bezpłatna wycena w ciągu 24 godzin.
Wyślij zapytanie
Telefon
+48 790 814 814
Pon-Pt: 9:00 - 18:00
adam@fotz.pl
Odpowiadamy w ciągu 24h
Adres rejestrowy
Poznańska 117/11
62-023 Kamionki · obsługa zdalna

