spring-boot - Kubernetes自动生成的环境变量设置错误?

标签 spring-boot kubernetes environment-variables kubernetes-service application.properties

在 Pod 启动期间,Kubernetes 正在根据我创建的服务创建一些环境变量(通过向下的 API?)。问题是其中之一 MY_APPLICATION_PORT 似乎初始化不正确,如下所示:

MY_APPLICATION_PORT=tcp://192.168.0.5:7777

而我预计它只能保存 7777 值。问题是我有一个 Spring Boot 应用程序,它在 application.properties 中具有此属性:

my.application.port=7777

因此,当 spring 解析其属性时,它更喜欢环境变量中的值而不是 .properties 文件中的值,从而用不正确的值覆盖它。

我的问题是 - 你们知道如何控制 kubernetes 环境变量的创建吗?我可以在我的deployment.yaml中覆盖它,但我想知道是否还有其他方法。

编辑:

我发现这是我在网上看到的最接近我的问题的描述: https://github.com/kubernetes/kubernetes/issues/65130

最佳答案

此环境变量来自与非常旧的 Docker 功能的兼容性。您可以通过在 Container 上设置 enableServiceLinks: false 在 Kubernetes 中禁用它。 Pod 规范中可能出现的任何地方的对象。例如:

apiVersion: apps/v1
kind: Deployment
spec:
  template:
    spec:
      containers:
        - name: ...
          enableServiceLinks: false
          env: [...]

特别是,该语法旨在与第一代 Docker 网络中的容器链接生成的环境变量兼容。从那时起,Docker 还在其核心中引入了 DNS 系统,在纯 Docker 中使用链接现在被认为已经过时了。始终设置此 Kubernetes 属性应该是安全的,特别是当它导致像您在此处描述的那样的冲突时。

关于spring-boot - Kubernetes自动生成的环境变量设置错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75364184/

相关文章:

mysql - Spring Boot 应用程序无法连接到 Google Cloud SQL

java - Spring Boot 和 JUnit 5 之间的交互——必须使用整体工件而不是个体?

docker - 无法删除任何K8s资源

php - WAMP Laravel - 从一个本地站点向另一个本地站点发送 API 请求会混淆环境变量

java - 将 Spring Cloud 负载均衡与 KeycloakRestTemplate 集成

java - 如何使依赖注入(inject)对组件起作用

kubernetes - 部署入口后,无法创建节点端口错误

kubernetes - 没有 Google 云存储的 Kubeflow

logging - 有没有办法以编程方式更改日志箱的默认日志记录级别?

java - 无法从解压的源存档在 Windows 上运行 mvn 命令