사용

0

배치 스트림 응용 프로그램에서 ENV var에 값을 설정 -cloud-dataflow-server-cloudfoundry와 함께 Spring Cloud Config 서버와의 바인딩을 가능하게하는 추가적인 의존성을 제공합니다. 예상대로 작동하는 것 같아 훌륭합니다.사용

내가 개발 한 사용자 정의 모듈로 스트림을 정의하려고 할 때 문제가 발생합니다. 모듈의 환경 변수 (특히 ENCRYPT_KEY)가 내 자식 repo의 매니페스트 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라는 부트 항아리에 파일이 있습니다. 그것은 다음과 같습니다 : 내 스트림을 배포 할 때

마지막으로
spring.application.name=customapp 

이, 나는이 같은 명령 줄 속성이 추가 제공 : 응용 프로그램의 배포의 로그를 미행

--properties app.customapp.SPRING_PROFILES_ACTIVE=dev 

을, 나는 볼 수 있습니다 설정 서버 인스턴스가 읽혀지고 앱 이름과 프로필이 올바르게 해석되고 있는지 확인하십시오. 설정 클라이언트는 YML 매니페스트와 나의 git repo의 프로퍼티 파일 모두를 매핑합니다.

그러나 오류는 자리 표시자인 customapp.password에 대한 암호 해독이 없음을 나타냅니다. 내가 명시 적으로 배포 된 (충돌) 응용 프로그램에 대한 ENCRYPT_KEY 환경 변수를 설정하고, 그것을 다시 진행하는 경우

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 

, 그것은 잘 시작하고 매력처럼 작동합니다.

내가 배포 할 때 스트림 응용 프로그램의 환경 변수를 지정하는 또 다른 방법이 있습니까?

답변

0

그래서 저는 RTFM하고 기존 문서에서 유용한 발췌문을 발견했습니다.

Spring Cloud Config Server

것이다 일 배포시 명령 줄 사양,하지만 잘못된 구문을 사용했다. 대신에 :

app.customapp.ENCRYPT_KEY=keyForEncryption

사용해야합니까 :

app.customapp.encrypt.key=keyForEncryption

0

매니페스트 (customapp-dev.yml)는 나머지 설정과 동일 할 필요는 없습니다 (실제로 해독 키가 포함되어 있으므로 더 좋지는 않습니다).

더 중요한 것은, 당신의 질문에서 당신이 어떻게 그것을 "사용"하는지 분명하지 않다는 것입니다. 자동으로 (구성 서버 덕분에) 계정에 자동으로 반영 되길 기대합니까 아니면 cf push 앱을 사용했을 때 실제로 사용합니까?

설명하는 증상은 설정 한 환경 변수가 (매니페스트를 통해) 고려되지 않았 음을 나타냅니다.

+0

내 기대가 자동으로 설정 서버에 의해로드 될 것이라고했다. 이것은 스트림을 배포 할 때 자동으로 배포되는 스트림 응용 프로그램이므로 'cf push'를 전혀 사용하지 않습니다. 환경 변수가 고려되지 않아 스트림 배포시 해독이 일어나지 않습니다. 아직 시도하지 않은 한 가지 점은 앱의 JAR에 매니페스트를 묶어서 배포 할 때 읽길 바란다는 것입니다. –

+0

응용 프로그램의 부트 jar 파일에 매니페스트를 번들링하려고 시도했지만 동일한 오류가 발생했습니다. 이 경우 배포 명령 행에서'app.customapp.ENCRYPT_KEY = key'를 사용하지 않는 이유는 무엇입니까? 그것은 "알려진"환경 변수가 아니기 때문입니까? –

+0

매니 페스트 스토리에 추가하려면 : 매니페스트는 적어도 현재로서는 cf (push) 명령 줄 앱에서만 사용됩니다. – ebottard