【エクスターナルシークレッツオペレーター】

External Secrets Operator とは?

公開:
💡 外の金庫番が、K8sの中に自動で鍵を届けてくれるお使い係。
📌 このページのポイント
External Secrets Operator の仕組み 外部シークレット 管理サービス AWS Secrets Manager HashiCorp Vault GCP Secret Manager External Secrets Operator ExternalSecret / SecretStore Kubernetes Secret リソース password: **** api-key: **** ①シークレット取得 ②Secret に同期
External Secrets Operator が外部サービスから K8s Secret に自動同期するフロー
ひよこ ひよこ
ペンギン先生、External Secrets Operatorって何なの?
ペンギン先生 ペンギン先生
K8sでアプリを動かすとき、DBのパスワードとかAPIキーをSecretリソースとして扱うんだけど、そのSecretを外部の専用サービスから自動で持ってくるツールだよ。
ひよこ ひよこ
外部の専用サービスってどんなものがあるの?
ペンギン先生 ペンギン先生
AWS Secrets ManagerやGCP Secret Manager、HashiCorp Vaultなどが代表例だよ。こういったサービスに秘密情報を集中管理して、ESO(External Secrets Operator)がK8sのSecretに同期してくれるんだ。
ひよこ ひよこ
同期ってどういうことなの?
ペンギン先生 ペンギン先生
外部サービス側でパスワードを更新したら、ESPがその変化を検知して自動的にK8sのSecretも書き換えてくれるんだよ。更新間隔はリソース定義で設定できるんだ。
ひよこ ひよこ
設定はどうやってするの?
ペンギン先生 ペンギン先生
SecretStoreという「どの外部サービスに繋ぐか」を定義するCRDと、ExternalSecretという「どのキーをどのSecretに入れるか」を定義するCRDの2種類を書くだけだよ。
ひよこ ひよこ
なんでわざわざ外部サービスに置く必要があるの?K8sのSecretだけじゃダメなの?
ペンギン先生 ペンギン先生
K8sのSecretはデフォルトBase64エンコードされているだけで暗号化されていないんだよ。GitにSecretのマニフェストをコミットしたら丸見えになるリスクがある。専用サービスに置けばアクセス制御・監査・自動ローテーションといった高度な機能が使えるんだ。
ひよこ ひよこ
なるほど、シークレット管理を外部に任せることでGitOpsも安全にできるんだね!
ペンギン先生 ペンギン先生
その通りだよ。ArgoCDやFluxなどのGitOpsツールと組み合わせると、コードはGitで管理しつつ秘密情報だけ外部サービスで安全に扱えるベストプラクティスになるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「External Secrets Operator」って出てきたら「外部の金庫からK8sに秘密情報を自動で運ぶツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「External Secrets Operator」 = 外部シークレット操作者
💬 外部(External)のシークレット管理サービスを、K8sのOperatorパターンで自動同期する仕組みという意味だよ。
← 用語集にもどる