2017-08-16 61 views
0

我正在使用minikube。我有一個名爲updatedaddress的服務。我使用自動注入kubernetes環境變量從updatecustomer服務調用updateaddress服務。Spring Boot無法自動裝入字段Kubernetes SERVICE_HOST

我的Java代碼看起來像這樣

@Value("${UPDATEADDRESS_SERVICE_HOST}") 
    private String updateAddressHost; 

    @Value("${UPDATEADDRESS_SERVICE_PORT}") 
    private String updateAddressPort; 
    ... 
    greeting= restTemplate.getForEntity("http://"+updateAddressHost+":"+updateAddressPort+"/updateaddress", Greeting.class).getBody(); 

當我執行以下命令

kubectl --namespace=default-staging exec updatecustomer-4023824433-r5r19 env 

我可以看到UPDATEADDRESS_SERVICE_HOST = 10.0.0.180和UPDATEADDRESS_SERVICE_PORT = 80很多其他變量中的環境變量。

當我嘗試建立春天啓動服務,我得到的錯誤

Error creating bean with name 'updateCustomerInfoResilient': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private java.lang.String com.amwater.UpdateCustomerInfoResilient.updateAddressHost; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'UPDATEADDRESS_SERVICE_HOST' in string value "${UPDATEADDRESS_SERVICE_HOST}" 

任何意見將是有益的。謝謝 。

回答

1

經常使用服務器IP和端口號,嘗試使用服務DNS名稱並測試應用程序。

這將是這樣的my-svc.my-namespace.svc.cluster.local替換您的servicename和命名空間。

這裏是文檔https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/

+0

謝謝你的迴應。我如何找到服務DNS名稱?我需要爲此設置一個DNS服務器嗎?我正在筆記本電腦上運行minikube。 –

+0

DNS運行kubernetes羣集的一部分。服務和pod名稱會自動註冊到DNS。編輯我的回覆。 – sfgroups

相關問題