🙆‍♀️

k8s の secret を sealed secret に載せ替える

に公開

Kubernetes における Secret は、機密情報を管理するために便利なリソースですが、平文のまま扱うとセキュリティ上のリスクが伴います。これを解決する方法のひとつとして Sealed Secrets があります。

今回は、既存の Secret リソースを Sealed Secret に載せ替える手順を紹介します。


1. 既存の Secret をクリップボードにコピー

まずは、既存の Secret を yaml 形式で取得し、クリップボードにコピーします。

k get secret [your-secret-name] -o yaml | pbcopy

2. manifests/secret.yaml を作成

クリップボードの内容を新しく作成した manifests/secret.yaml に貼り付けます。

このファイルには機密情報が含まれるため、Git の管理対象から除外しておきましょう。

echo "manifests/secret.yaml" >> .gitignore

3. Sealed Secret を作成

以下のコマンドで secret.yaml をもとに Sealed Secret を作成します。

kubeseal \
  --controller-name=sealed-secrets \
  --controller-namespace=[your-namespace] \
  --format=yaml < secret.yaml > manifests/sealed-secret.yaml

4. 既存の Secret を削除

Sealed Secret に切り替えるため、元の Secret を削除します。

k delete secret [your-secret-name]

5. Sealed Secret を適用

作成した sealed-secret.yaml を適用します。

k apply -f manifests/sealed-secret.yaml

6. Sealed Secret の確認

以下のコマンドでリソースが作成されているか確認します。

k get sealedsecrets

7. Deployment 側の変更は不要

Sealed Secret は、Controller によって通常の Secret に復号化されて展開されるため、Deployment や Pod 側の設定はそのままで問題ありません


まとめ

これで、Secret を Sealed Secret に置き換える手順は完了です。
CI/CD パイプラインに安全に組み込むことができ、Git 管理も安心して行えるようになります。

Discussion