11.4. Secrets PropertySource の使用
Kubernetes には、パスワードや OAuth トークンなどの機密データを格納するための シークレット という概念があります。Spring Cloud Kubernetes プラグインは Secrets
とのインテグレーションを提供し、Spring Boot が Secret へアクセスできるようにします。
有効になっている Secrets
プロパティーソースは、以下のソースから Kubernetes の Secrets
を検索します。Secret が見つかった場合、アプリケーションはそのデータを利用できます。
- Secret マウントからの再帰的な読み取り
-
アプリケーションにちなんだ名前の付与 (
spring.application.name
を参照) - 一部のラベルとの一致
デフォルトでは、API 経由の Secret の消費 (上記の 2 および 3) は 有効になっていない ことに注意してください。
11.4.1. Secret の設定例 リンクのコピーリンクがクリップボードにコピーされました!
プロパティーを使用して ActiveMQ および PostreSQL 設定を読み取る demo
という名前の Spring Boot アプリケーションがあるとします。
amq.username amq.password pg.username pg.password
amq.username
amq.password
pg.username
pg.password
これらの Secret は YAML 形式で Secrets
に対して外部化できます。
- ActiveMQ の Secret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - PostreSQL の Secret
11.4.2. Secret の消費 リンクのコピーリンクがクリップボードにコピーされました!
消費する Secret を選択する方法は複数あります。
Secret がマップされたディレクトリーをリストする方法
-Dspring.cloud.kubernetes.secrets.paths=/etc/secrets/activemq,etc/secrets/postgres
-Dspring.cloud.kubernetes.secrets.paths=/etc/secrets/activemq,etc/secrets/postgres
Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべての Secret が共通のルートにマップされている場合は、以下のように設定できます。
-Dspring.cloud.kubernetes.secrets.paths=/etc/secrets
-Dspring.cloud.kubernetes.secrets.paths=/etc/secrets
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 名前付きの Secret を設定する方法
-Dspring.cloud.kubernetes.secrets.name=postgres-secrets
-Dspring.cloud.kubernetes.secrets.name=postgres-secrets
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ラベルのリストを定義する方法
-Dspring.cloud.kubernetes.secrets.labels.broker=activemq -Dspring.cloud.kubernetes.secrets.labels.db=postgres
-Dspring.cloud.kubernetes.secrets.labels.broker=activemq -Dspring.cloud.kubernetes.secrets.labels.db=postgres
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.4.3. Secrets PropertySource の設定プロパティー リンクのコピーリンクがクリップボードにコピーされました!
以下のプロパティーを使用して、Secrets プロパティーソースを設定できます。
- spring.cloud.kubernetes.secrets.enabled
-
Secrets プロパティーソースを有効にします。型は
Boolean
で、デフォルトはtrue
です。 - spring.cloud.kubernetes.secrets.name
-
検索する Secret の名前を設定します。型は
String
で、デフォルトは${spring.application.name}
です。 - spring.cloud.kubernetes.secrets.labels
-
Secret の検索に使用されるラベルを設定します。このプロパティーは マップベースのバインディング による定義どおりに動作します。型は
java.util.Map
で、デフォルトはnull
です。 - spring.cloud.kubernetes.secrets.paths
-
Secret がマウントされるパスを設定します。このプロパティーは コレクションベースのバインディング による定義どおりに動作します。型は
java.util.List
で、デフォルトはnull
です。 - spring.cloud.kubernetes.secrets.enableApi
-
API 経由で Secret の消費を有効または無効にします。型は
Boolean
で、デフォルトはfalse
です。
API 経由でシークレットにアクセスすることは、セキュリティー上の理由で制限されることがあります。シークレットを POD にマウントする方法が推奨されます。