Operator パターン

Kubernetes のカスタムリソースとコントローラーで、アプリケーションの運用を自動化するパターン

Kubernetes自動化

Operator パターンとは

Operator パターンは、Kubernetes のカスタムリソース (CRD) とカスタムコントローラーを組み合わせ、アプリケーションの運用 (デプロイ、スケーリング、バックアップ、アップグレード) を自動化するパターンである。CoreOS (現 Red Hat) が 2016 年に提唱した。

なぜ必要か

Deployment や StatefulSet だけでは、DB のフェイルオーバー、バックアップ、スキーママイグレーションなどの運用タスクを自動化できない。Operator は「人間のオペレーターの知識をコードに落とし込む」。

仕組み

Operator は CRD (Custom Resource Definition) でカスタムリソースを定義し、カスタムコントローラーがそのリソースの状態を監視する。コントローラーは Reconciliation Loop で現在の状態と望ましい状態の差分を検出し、自動的にアクション (デプロイ、スケーリング、アップグレード) を実行する。

1. CRD (Custom Resource Definition) でカスタムリソースを定義
   例: PostgresCluster

2. カスタムコントローラーが CRD を監視
   「PostgresCluster が作成された → PostgreSQL をデプロイ」
   「レプリカ数が変更された → スケーリング」
   「バージョンが変更された → ローリングアップグレード」

3. Reconciliation Loop
   現在の状態 → 望ましい状態 → 差分を検出 → アクションを実行

CRD の例

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 を以下に示す。

Operator 管理対象
Prometheus Operator Prometheus + Alertmanager
Cert-Manager TLS 証明書の自動発行・更新
Strimzi Apache Kafka
Crunchy PGO PostgreSQL
Redis Operator Redis Cluster

Helm との違い

Helm との違いを以下にまとめる。

観点 Helm Operator
目的 パッケージ管理 (インストール) ライフサイクル管理 (運用)
Day 1 (初期構築)
Day 2 (運用) ✅ (バックアップ、アップグレード)
自動修復 ✅ (Reconciliation Loop)

EKS での Operator

EKS では AWS Load Balancer Controller、ExternalDNS、Karpenter (ノードオートスケーラー) が Operator パターンで実装されている。

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

この記事は役に立ちましたか?

関連用語

関連する記事