メインコンテンツまでスキップ

設定

アプリケーションは、API エンドポイントのような環境固有の設定から、データベースパスワードのような機密性の高い認証情報まで、設定データを必要とすることがよくあります。Kubernetes は設定データを管理するための 2 つのコアリソースを提供しています。

ConfigMap - 機密性のない設定データ用 Secret - パスワード、トークン、証明書などの機密情報用

最近のアプリケーションは複数の環境で実行され、動的にスケールすることが多くなっています。

Kubernetes の設定リソースは、以下のことを可能にすることで、これを簡単にします。

  • 設定をコードから分離する — 同じコンテナをどこにでもデプロイできるようにする
  • 環境固有の設定を使用する アプリケーションイメージを変更せずに
  • 実行時に設定を更新する イメージを再起動または再構築せずに
  • セキュリティを強化する 機密性の高い値へのアクセスを制限することで
  • 移植性を向上させる クラスターやクラウドプロバイダー間で

ConfigMap と Secret の比較

カテゴリConfigMapSecret
目的機密性のない設定を保存機密データを保存
API エンドポイント、機能フラグ、設定ファイルパスワード、トークン、証明書
データ形式プレーンテキストBase64 エンコード
可視性アクセス権を持つすべてのユーザーが読み取り可能RBAC によりアクセスが制限される
セキュリティレベル

それぞれをいつ使用するか

ConfigMap の使用場面:

  • アプリケーション設定と機能フラグ
  • サービス URL と API エンドポイント
  • 設定ファイル(nginx.confapplication.yaml
  • 環境固有のパラメータ

Secret の使用場面:

  • データベース認証情報
  • API キーとトークン
  • TLS 証明書と秘密鍵
  • コンテナレジストリの認証情報

設定パターン

ConfigMap と Secret はどちらも、複数の方法で Pod から利用できます。

  • 環境変数: 環境変数として設定を注入
  • ボリュームマウント: コンテナファイルシステム内のファイルとして設定をマウント
  • コマンドライン引数: コンテナコマンドの引数として設定を渡す

設定管理を探る

両方のタイプの設定データを管理する方法を学びます。

  • ConfigMap - 機密性のない設定データの保存と管理
  • Secret - パスワードや証明書などの機密情報を安全に扱う

覚えておくべき重要なポイント

  • ConfigMap は機密性のない設定データを扱う
  • Secret は機密情報を安全に保存する
  • どちらも設定をアプリケーションコードから切り離す
  • データの機密性に基づいて適切なリソースを選択する
  • どちらも複数の利用パターン(環境変数、ファイル、引数)をサポートする