Operator パターン
Kubernetes のカスタムリソースとコントローラーで、アプリケーションの運用を自動化するパターン
Kubernetes自動化
Operator パターンとは
Operator パターンは、Kubernetes のカスタムリソース (CRD) とカスタムコントローラーを組み合わせ、アプリケーションの運用 (デプロイ、スケーリング、バックアップ、アップグレード) を自動化するパターンである。CoreOS (現 Red Hat) が 2016 年に提唱した。
なぜ必要か
Deployment や StatefulSet だけでは、DB のフェイルオーバー、バックアップ、スキーママイグレーションなどの運用タスクを自動化できない。Operator は「人間のオペレーターの知識をコードに落とし込む」。
仕組み
1. CRD (Custom Resource Definition) でカスタムリソースを定義
例: PostgresCluster
2. カスタムコントローラーが CRD を監視
「PostgresCluster が作成された → PostgreSQL をデプロイ」
「レプリカ数が変更された → スケーリング」
「バージョンが変更された → ローリングアップグレード」
3. Reconciliation Loop
現在の状態 → 望ましい状態 → 差分を検出 → アクションを実行
CRD の例
apiVersion: postgres-operator.crunchydata.com/v1beta1
kind: PostgresCluster
metadata:
name: my-db
spec:
postgresVersion: 16
instances:
- replicas: 3
dataVolumeClaimSpec:
accessModes: [ReadWriteOnce]
resources:
requests:
storage: 20Gi
backups:
pgbackrest:
repos:
- name: repo1
s3:
bucket: my-backups
region: ap-northeast-1
kubectl apply するだけで、3 ノードの PostgreSQL クラスター + S3 バックアップが自動構築される。
代表的な Operator
| Operator | 管理対象 |
|---|---|
| Prometheus Operator | Prometheus + Alertmanager |
| Cert-Manager | TLS 証明書の自動発行・更新 |
| Strimzi | Apache Kafka |
| Crunchy PGO | PostgreSQL |
| Redis Operator | Redis Cluster |
Helm との違い
| 観点 | Helm | Operator |
|---|---|---|
| 目的 | パッケージ管理 (インストール) | ライフサイクル管理 (運用) |
| Day 1 (初期構築) | ✅ | ✅ |
| Day 2 (運用) | ❌ | ✅ (バックアップ、アップグレード) |
| 自動修復 | ❌ | ✅ (Reconciliation Loop) |
EKS での Operator
EKS では AWS Load Balancer Controller、ExternalDNS、Karpenter (ノードオートスケーラー) が Operator パターンで実装されている。
全体像を把握するには関連書籍も有用。