第4章. コンフィギュレーション、シークレット、RBAC
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
コンテナのコンポーザブルな性質により、私たち演算子は実行時に設定データをコンテナに導入することができる。これにより、アプリケーションの機能を実行環境から切り離すことができる。コンテナ・ランタイムで認められている、実行時にコンテナに環境変数または外部ボリュームをマウントする規約によって、インスタンス化時にアプリケーションの設定を効果的に変更することができる。開発者としては、この振る舞いの動的な性質を考慮し、環境変数の使用や、アプリケーション・ランタイム・ユーザが利用可能な特定のパスからの設定データの読み取りを許可することが重要である。
シークレットなどの機密データをKubernetesのネイティブAPIオブジェクトに移動させる場合、KubernetesがAPIへのアクセスをどのようにセキュア化するかを理解することが重要だ。Kubernetesで使用されている最も一般的に実装されているセキュリティメソッドは、特定のユーザまたはグループによってAPIに対して実行可能なアクションに関するきめ細かな権限構造を実装するためのロールベースアクセスコントロール(RBAC)である。この章では、RBACに関するベストプラクティスをいくつか取り上げ、ちょっとした入門書も提供する。
コンフィグマップとシークレットによるコンフィギュレーション
Kubernetesでは、ConfigMapsやシークレットリソースを通じて、アプリケーションにネイティブに設定情報を提供することができる。この2つの主な違いは、Podが受信情報を保存する方法と、データがetcdデータストアに保存される方法だ。
コンフィグマップ
アプリケーションが、コマンドライン引数、環境変数、またはシステムで利用可能なファイルなど、何らかのメカニズムを通じて構成情報を消費することは非常に一般的である。コンテナによって、開発者はこの構成情報をアプリケーションから切り離すことができ、アプリケーションの真の移植性を実現できる。ConfigMap APIは、提供された設定情報を注入することができる。ConfigMapはアプリケーションの要件に非常に適応しやすく、キーと値のペアや、JSON、XML、独自の設定データなどの複雑なバルクデータを提供できる。
ConfigMapは、Podの設定情報を提供するだけでなく、コントローラ、CRD、演算子など、より複雑なシステムサービスのために消費される情報を提供することもできる。前述したように、ConfigMap APIは、あまり機密性の高くない文字列データを対象としている。アプリケーションに機密性の高いデータが必要な場合は、Secrets APIが適している。
アプリケーションでConfigMapデータを使用するには、Podにマウントされたボリュームとして、または環境変数として注入することができる。
秘密
コンフィグマップを使いたくなるような属性や理由の多くがシークレットにも当てはまる。主な違いはシークレットの基本的な性質にある。シークレットデータは、環境がそのように設定されている場合、簡単に隠すことができ、場合によっては静止時に暗号化できるような方法でストアされ、扱われるべきである。シークレットデータはbase64エンコードされた情報として表現され、暗号化されていないことを理解することが重要である。 ...