Ответ
Работал с несколькими операторами, которые решают конкретные задачи управления stateful-приложениями и платформенными сервисами:
1. Prometheus Operator — наиболее часто используемый
# Пример мониторинга кастомного приложения
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: myapp-monitor
spec:
selector:
matchLabels:
app: myapp
endpoints:
- port: web
interval: 30s
path: /metrics
Оператор автоматически создает Prometheus configuration, ServiceMonitors, PodMonitors и Alertmanager конфигурации.
2. Cert-Manager — для автоматического управления TLS-сертификатами
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: example-com
spec:
secretName: example-com-tls
issuerRef:
name: letsencrypt-prod
kind: ClusterIssuer
commonName: example.com
dnsNames:
- example.com
- www.example.com
3. Elasticsearch Operator (ECK) — развертывание и управление Elastic Stack
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
name: logging-cluster
spec:
version: 8.6.0
nodeSets:
- name: default
count: 3
config:
node.store.allow_mmap: false
4. Postgres Operator — использовал Crunchy Data Operator
apiVersion: postgres-operator.crunchydata.com/v1beta1
kind: PostgresCluster
metadata:
name: hippo
spec:
image: registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-14.5-0
postgresVersion: 14
instances:
- name: instance1
replicas: 2
dataVolumeClaimSpec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: 1Gi
backups:
pgbackrest:
repos:
- name: repo1
volume:
volumeClaimSpec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: 1Gi
5. ArgoCD Operator — для управления самим ArgoCD в GitOps-стиле
6. Istio Operator — установка и управление service mesh
7. Custom Operators — писал простые операторы на Kubebuilder для управления внутренними сервисами компании. Например, оператор для автоматического создания test environments на каждый Pull Request.
Почему операторы важны: Они инкапсулируют операционные знания (как безопасно обновить, как делать backup, как масштабировать) и позволяют управлять сложными приложениями декларативно, как нативными Kubernetes-ресурсами.