🙆♀️
k8s の secret を sealed secret に載せ替える
Kubernetes における Secret は、機密情報を管理するために便利なリソースですが、平文のまま扱うとセキュリティ上のリスクが伴います。これを解決する方法のひとつとして Sealed Secrets があります。
今回は、既存の Secret リソースを Sealed Secret に載せ替える手順を紹介します。
1. 既存の Secret をクリップボードにコピー
まずは、既存の Secret を yaml
形式で取得し、クリップボードにコピーします。
k get secret [your-secret-name] -o yaml | pbcopy
manifests/secret.yaml
を作成
2. クリップボードの内容を新しく作成した 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