展開ストリームアプリでのenv VaRの値を設定します-cloud-dataflow-server-cloudfoundryを追加することで、Spring Cloud Config Serverとのバインドを指示通りに可能にします。それは期待どおりに働いているようですので、それは素晴らしいです。使用
モジュールの環境変数(特にENCRYPT_KEY)がgitリポジトリのマニフェストのYMLファイルにあるカスタムモジュールでストリームを定義しようとすると、問題が発生しています。
マニフェストファイルの名前はcustomapp-dev.yml
です。
applications:
- name: customapp
env:
ENCRYPT_KEY: keyForEncryption
プロパティファイルの名前はcustomapp-dev.properties
です:マニフェストは次のようになります。プロパティファイルには、次のようになります。
customapp.initial.context.factory=com.sun.jndi.ldap.LdapCtxFactory
customapp.ldap.provider.url=ldap://directory.xyz.com:389/dc=xyz,dc=com
customapp.username=ldap_user
customapp.password={cipher}958f87532ebba83cd81b7b0e9a0a0cc
アプリケーションは性質がapplication.properties
と呼ばれるブートジャーにファイルを持っています。私は私のストリームを展開するとき
は最後に、私はこのようなコマンドラインで一つの追加のプロパティを提供します:それはこのようになり、アプリケーションの展開のログをテーリング
--properties app.customapp.SPRING_PROFILES_ACTIVE=dev
、私が見ることができますconfigサーバーインスタンスが読み取られていること、およびアプリケーション名とプロファイルが正しく解決されていることを確認します。設定クライアントは、私のgitリポジトリからYMLマニフェストとプロパティファイルの両方をマッピングしています。
ただし、このエラーは、プレースホルダーcustomapp.password
の復号化の可能性がないことを示しています。
2016-08-26T13:40:46.62-0600 [APP/0] OUT . ____ _ __ _ _
2016-08-26T13:40:46.62-0600 [APP/0] OUT /\\/___'_ __ _ _(_)_ __ __ _ \ \ \ \
2016-08-26T13:40:46.62-0600 [APP/0] OUT (()\___ | '_ | '_| | '_ \/ _` | \ \ \ \
2016-08-26T13:40:46.62-0600 [APP/0] OUT \\/ ___)| |_)| | | | | || (_| | ))))
2016-08-26T13:40:46.62-0600 [APP/0] OUT ' |____| .__|_| |_|_| |_\__, |////
2016-08-26T13:40:46.62-0600 [APP/0] OUT =========|_|==============|___/=/_/_/_/
2016-08-26T13:40:46.63-0600 [APP/0] OUT :: Spring Boot :: (v1.3.5.RELEASE)
2016-08-26T13:40:46.65-0600 [APP/0] OUT Fetching config from server at: https://config-dfcc3100-7514-47e6-b30e-a0eefcf4929d.dev.xyz.com
2016-08-26T13:40:48.13-0600 [APP/0] OUT Located environment: name=customapp, profiles=[dev, cloud], label=master, version=null
2016-08-26T13:40:48.13-0600 [APP/0] OUT Located property source: CompositePropertySource [name='configService', propertySources=[MapPropertySource [name='https://[email protected]/scm/project/app-config.git/dev/customapp-dev.yml'], MapPropertySource [name='https://[email protected]/scm/project/app-config.git/dev/customapp-dev.properties']]]
2016-08-26T13:40:48.16-0600 [APP/0] OUT Application startup failed
2016-08-26T13:40:48.16-0600 [APP/0] OUT java.lang.IllegalStateException: Cannot decrypt: key=customapp.password
私は明示的に配備されたアプリケーション(クラッシュした)を、そしてそれをrestageためENCRYPT_KEY環境変数を設定した場合、それが正常に起動し、魔法のように動作します。
配備時にストリームアプリケーションの環境変数を指定する別の方法はありますか?
私の期待は、それが自動的にコンフィグサーバによってロードされるだろうということでした。これはストリームをデプロイするときに自動的にデプロイされるストリームアプリケーションなので、 'cf push 'はまったく使用していません。あなたが正しいです、環境変数は考慮されていないので、解読はストリーム展開時に起こっていません。 まだ試していないことの1つは、アプリケーションのJARにマニフェストをバンドルして、デプロイ時に読み込まれることを期待することです。 –
アプリのブートjarファイルにマニフェストをバンドルしようとしましたが、同じエラーが発生しました。この場合、デプロイメントコマンドラインで 'app.customapp.ENCRYPT_KEY = key'を使わないのはなぜですか?それは「既知の」環境変数ではないからですか? –
マニフェストストーリーに追加するには:マニフェストは少なくともcf(push)コマンドラインアプリケーションでのみ使用されます。 – ebottard