使用

0

展開ストリームアプリでの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環境変数を設定した場合、それが正常に起動し、魔法のように動作します。

配備時にストリームアプリケーションの環境変数を指定する別の方法はありますか?

答えて

0

私はRTFMして、既存のドキュメントで有用な抜粋を見つけました。

Spring Cloud Config Server

ます作業デプロイ時にコマンドラインの指定が、私は間違った構文を使用していました。代わりに:

app.customapp.ENCRYPT_KEY=keyForEncryption

私が使用する必要があります。

app.customapp.encrypt.key=keyForEncryption

0

マニフェスト(customapp-dev.yml)は、残りの設定と同じ(同じ)git repoにする必要はありません(実際には、復号化キーが含まれているため、表示しない方が良いでしょう)。

さらに重要なことは、あなたがどのように「使用するか」という質問からは明らかではありません。あなたはそれが自動的に考慮されることを期待していますか(設定サーバーなどのおかげで)、またはcf pushあなたのアプリで本当にそれを使用しますか?

あなたが記述している症状は、そこに設定した環境変数が(マニフェストを介して)考慮されていないことを示しているようです。

+0

私の期待は、それが自動的にコンフィグサーバによってロードされるだろうということでした。これはストリームをデプロイするときに自動的にデプロイされるストリームアプリケーションなので、 'cf push 'はまったく使用していません。あなたが正しいです、環境変数は考慮されていないので、解読はストリーム展開時に起こっていません。 まだ試していないことの1つは、アプリケーションのJARにマニフェストをバンドルして、デプロイ時に読み込まれることを期待することです。 –

+0

アプリのブートjarファイルにマニフェストをバンドルしようとしましたが、同じエラーが発生しました。この場合、デプロイメントコマンドラインで 'app.customapp.ENCRYPT_KEY = key'を使わないのはなぜですか?それは「既知の」環境変数ではないからですか? –

+0

マニフェストストーリーに追加するには:マニフェストは少なくともcf(push)コマンドラインアプリケーションでのみ使用されます。 – ebottard