私はSpring Cloud Config Serverを使用してクライアントアプリケーションの設定を提供しています。秘密設定を容易にするために、私はHashCorp Vaultをバックエンドとして使用しています。残りの設定についてはGITリポジトリを使用しています。ですから、コンポジットモードで設定サーバを設定しました。以下の私の設定サーバーbootstrap.yml
を参照してください。 -Spring Cloud Config(Vaultバックエンド)が早すぎる
server:
port: 8888
spring:
profiles:
active: local, git, vault
application:
name: my-domain-configuration-server
cloud:
config:
server:
git:
uri: https://mygit/my-domain-configuration
order: 1
vault:
order: 2
host: vault.mydomain.com
port: 8200
scheme: https
backend: mymount/generic
これはすべて期待どおりです。しかし、私が使用しているトークンはVaultの認証ポリシーで保護されています。以下を参照してください: -
{
"rules": "path "mymount/generic/myapp-app,local" {
policy = "read"
}
path "mymount/generic/myapp-app,local/*" {
policy = "read"
}
path "mymount/generic/myapp-app" {
policy = "read"
}
path "mymount/generic/myapp-app/*" {
policy = "read"
}
path "mymount/generic/application,local" {
policy = "read"
}
path "mymount/generic/application,local/*" {
policy = "read"
}
path "mymount/generic/application" {
policy = "read"
}
path "mymount/generic/application/*" {
policy = "read"
}"
}
私の問題は、これらすべてのスコープに秘密を保存していないことです。 mymount/generic/myapp-app,local
から1つの秘密を読み取るためにトークンを認可できるように、これらのパスをすべて指定する必要があります。 VaultEnvironmentRepository.read()
メソッドが403 HTTPステータスコード(禁止されている)を返し、VaultExceptionをスローします。これにより、GITベースの設定を含むアプリケーションの設定を完全に取得できなくなります。これは、クライアントアプリケーションが複数のSpringプロファイルを持ち、設定項目を取得することとは関係がないため、非常に制限されています。問題は、configサーバーが、クライアントが提供するすべてのアクティブなプロファイルの構成を取得しようとすることです。
構成サーバーでフォールトトレランスまたは可用性を有効にする方法があるため、VaultEnvironmentRepositoryは中止せず、実際に返される構成を返します。
私の問題はVaultに設定されていないプロファイルを追加してもまだ問題があることを示しています。 Vaultで設定されていないプロファイルを使用できるようにするメカニズムが必要です。 「ローカル」プロファイルはここでの説明のためだけに使用されています。 – Codesnooper