Spring Boot Could not autowire field Kubernetes SERVICE_HOST

Spring Boot Could not autowire field Kubernetes SERVICE_HOST

我正在使用 minikube。我有一个名为 updatedaddress 的服务。我正在使用自动注入 kubernetes 环境变量从 updatecustomer 服务调用 updateaddress 服务。

我的 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 以及许多其他变量。

当我尝试构建 spring 引导服务时,出现错误

 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}"

任何建议都会有所帮助。谢谢。

已设置使用服务器IP和端口号,尝试使用服务DNS名称并测试应用程序。

它会像这样my-svc.my-namespace.svc.cluster.local替换你的服务名和命名空间。

这是文档https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/