Member-only story
Cloud でのKubernetesとSecrets Management(シークレットの管理)前半
15 min readOct 13, 2020
シークレットは多くのプロダクションシステムの運用に欠かせないものです。意図しないシークレットの暴露は、適切に対処すべきトップリスクの一つです。開発者は、アプリケーションのシークレットを守るために最善を尽くすべきです。
企業がマイクロサービス・アーキテクチャに移行し、複数のサービスが適切に動作するためには異なる秘密へのアクセスが必要になると、問題はさらに難しくなります。そして、これは新たな課題につながります。アプリケーションのシークレットをどのように分散、管理、監視、ローテーションし、意図しない暴露を避けるか、ということです。
Kubernetes Secrets
KubernetesはSecret(シークレット)と呼ばれるオブジェクトを提供しており、パスワード、SSHキー、APIキー、トークンなどのアプリケーションの機密データを保存するために使用できます。Kubernetes Secretは、環境変数としてPodコンテナに注入することも、ファイルとしてマウントすることもできます。Kubernetes Secretsを使用することで、アプリケーションのデプロイメントから機密データや設定を抽象化することができます。
例えば、Kubernetes secretは、 kubectl create secretというコマンドで作成することができます。
kubectl generic db-credentials -n default --from-literal=user=dbuser --from-literal=password=quick.fox.5312
もしくはKubernetes db-credentials.yamlファイルでも可能です。これは、同じシークレットを表しています。
<code>
apiVersion: v1kind: Secretmetadata:name: db-credentialstype: Opaquedata:password: cXVpY2suZm94LjUzMTI=user: ZGJ1c2Vykubectl create -f db-credentials.yaml