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ドライバ・プロバイダのドキュメントを参照してください。
  • etcdに格納および管理されるKubernetesシークレット・オブジェクトとして。etcdは、Kubernetesがクラスタの調整および状態管理に使用する、オープン・ソースの分散キー-値ストアです。Kubernetes Engineによって作成されたKubernetesクラスタでは、etcdは、Oracle Cloud Infrastructure Block Volumeサービスのブロック・ストレージ・ボリュームとの間でデータの書込みと読取りを行います。デフォルトでは、Oracleは、etcdおよびKubernetesシークレットを含む、保存中のブロック・ボリュームのデータを暗号化します。Oracleは、このデフォルトの暗号化をマスター暗号化キーを使用して管理し、操作を必要としません。マスター暗号化キーをOracleで管理するのではなく、自分で管理する方法の詳細は、Etcdに格納されたKubernetesシークレットの暗号化を参照してください。