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 パターンで実装されている。

全体像を把握するには関連書籍も有用。

関連用語