Kubernetesクラスタのシークレットの管理
Kubernetes Engine (OKE)を使用して作成したKubernetesクラスタで実行されているアプリケーションのシークレットを格納するためのオプションについて学習します。
Kubernetes Engineを使用して作成するKubernetesクラスタで実行されるコンテナ化されたアプリケーションでは、通常、シークレット(認証トークン、証明書、資格情報など)を安全に格納してアクセスする必要があります。
Kubernetes Engineを使用してKubernetesクラスタを作成する場合、アプリケーション・シークレットを次の2つの方法で格納することを選択できます:
- Kubernetesシークレット・ストアCSIドライバ(secrets-store.csi.k8s.io)を使用してアクセスされる、外部シークレット・ストアに格納および管理されるシークレットとして。 シークレット・ストアCSIドライバは、シークレット・ストアをコンテナ・ストレージ・インタフェース(CSI)ボリュームとしてKubernetesクラスタと統合します。シークレット・ストアCSIドライバを使用すると、Kubernetesクラスタは、外部シークレット・ストアに格納されている複数のシークレット、キーおよび証明書をボリュームとしてポッドにマウントできます。ボリュームがアタッチされると、ボリューム内のデータはアプリケーション・コンテナのファイル・システムにマウントされます。OCI Vaultはそのような外部シークレット・ストアの1つで、Oracleはオープン・ソースのOCIシークレット・ストアCSIドライバ・プロバイダを提供し、KubernetesクラスタがVault内のシークレットにアクセスできるようにします。詳細は、GitHubのOCIシークレット・ストアCSIドライバ・プロバイダのドキュメントを参照してください。
- Kubernetesシークレット・オブジェクトとして、etcdに格納および管理されます。 etcdは、Kubernetesがクラスタの調整および状態管理に使用する、オープン・ソースの分散キー-値ストアです。Kubernetes Engineによって作成されたKubernetesクラスタでは、etcdは、Oracle Cloud Infrastructure Block Volumeサービスのブロック・ストレージ・ボリュームとの間のデータの書込みと読取りを実行します。デフォルトでは、Oracleは、etcdおよびKubernetesシークレットを含む保存中のブロック・ボリュームのデータを暗号化します。Oracleでは、マスター暗号化キーを使用してこのデフォルトの暗号化を管理し、操作を行う必要はありません。Oracleがマスター暗号化キーを管理するのではなく、マスター暗号化キーを自分で管理する方法の詳細は、Etcdに保存されているKubernetesシークレットの暗号化を参照してください。