SOPS vs Sealed Secrets: どちらの GitOps シークレットを選ぶか
SOPS は任意のシークレットファイルを KMS/age/PGP で暗号化し、Sealed Secrets は SealedSecret CRD をクラスタ内で Secret に復号する Kubernetes コントローラです。
SOPS は汎用的です。任意の構造化ファイルを暗号化し、多くのバックエンドや CI ツールと統合し、鍵を持っている場所ならどこでも復号します。Sealed Secrets は Kubernetes 固有です。クラスタの公開鍵で SealedSecret に暗号化し、クラスタ内のコントローラだけが復号でき、plaintext を完全に Git の外に保ちます。SOPS は環境をまたぐ柔軟性で勝り、Sealed Secrets は緊密な Kubernetes ネイティブの GitOps モデルで勝ります。
| SOPS | Sealed Secrets | |
|---|---|---|
| スコープ | 任意のファイル | Kubernetes CRD |
| 復号 | 鍵があればどこでも | クラスタ内コントローラ |
| バックエンド | KMS、age、PGP | クラスタ鍵ペア |
| GitOps への適合 | 幅広い | K8s ネイティブ |
| 最適な用途 | 環境をまたぐシークレット | K8s の GitOps シークレット |
ユースケースとスコープ
SOPS は柔軟な鍵バックエンドで多くの環境やファイル種別にわたってシークレットを管理するチームに適しています。Sealed Secrets は、ターゲットクラスタだけが unseal できる暗号化された manifest を Git に置きたい、Kubernetes 専用の GitOps に適しています。
ops と CI への適合
SOPS は CI またはデプロイ時に鍵で復号し、Sealed Secrets はクラスタ内のコントローラに依存するため、CI は暗号化のために公開鍵だけを必要とします。より高速なマネージド runner が、どちらのフローでも暗号化/復号と manifest ビルドのステップを短縮します。
結論
柔軟で環境をまたぐ暗号化シークレットファイルが欲しいなら SOPS。クラスタだけが復号できる Kubernetes ネイティブなシーリングが欲しいなら Sealed Secrets。幅広さは SOPS を好み、K8s ネイティブの GitOps は Sealed Secrets を好みます。