10章設定と機密情報
秘密を守りたいなら、自分自身からも隠さなければならない。
――George Orwell、“1984”†1
[†1] 編注:引用は本書独自の翻訳です。“1984”の邦訳は『一九八四年』(早川書房)が出版されています。
Kubernetesアプリケーションのロジックと設定を分離できることは大きな利便性をもたらします。ここで設定とは、アプリケーションのライフサイクル全体を通じて変化する可能性がある値や設定を意味します。設定値には一般に、環境固有の設定、サードパーティが提供するサービスのDNSアドレス、認証用の資格情報といった重要データが含まれます。
こうした値は単純にコード内で直接記述することもできますが、これは柔軟性の高いアプローチではありません。理由の1つは、設定値を変更すると、アプリケーションのビルドとデプロイを最初から完全にやり直さなければならなくなることです。設定値はコードから分離して、ファイルや環境変数から読み込むようにするほうが、はるかに優れた方法です。
Kubernetesには設定を管理するために2種類の異なる手法が用意されています。その1つは、Podのスペックで定義される環境変数を通じて値をアプリケーションに引き渡す方法です(8章の「8.2.8 環境変数」を参照)。もう1つは、ConfigMapおよびSecretというオブジェクトを用いて、設定データをKubernetes内に直接保存する方法です。
この章では、ConfigMapとSecretの詳細を説明し、デモアプリケーションを例として、アプリケーションで設定および機密データを管理するための実践的な手法を見ていきます。
10.1 ConfigMap
ConfigMap(コンフィグマップ)は、Kubernetesで設定データを保存するための主要なオブジェクトです。これは設定データを保存するキーと値のペアの名前付きセットと考えることができます。ConfigMapを作成すれば、Pod内でファイルを作成するか、環境変数としてPodに注入することで、設定データをアプリケーションに供給できます。 ...
Get Kubernetesで実践するクラウドネイティブDevOps now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.