spring-boot - Kubernetes 目录 configMap 和 java 系统属性

标签 spring-boot docker kubernetes

我正在尝试将目录配置映射用作运行 Spring Boot 应用程序的 Docker 容器内的已安装卷。我正在将一些已安装的路径传递给诸如 spring application.yaml 之类的东西,但由于找不到配置,因此安装似乎没有按预期工作。例如

像这样创建配置图

kubectl create configmap example-config-dir \
 --from-file=/example/config/

Kubernetes yaml
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: example
  labels:
   app: example
spec:
  replicas: 1
  selector:
   matchLabels:
     app: example
  template:
    metadata:
      labels:
        app: example
    spec:
     containers:
     - name: example
       image: example:latest
       ports:
         - containerPort: 8443
       volumeMounts:
          - name: config-vol
            mountPath: /config
     volumes:
       - name: config-vol
         configMap:
           name: example-config-dir

还有 Dockerfile(还有其他步骤可以复制我没有详细说明的 jar 文件)
VOLUME /tmp
RUN echo "java -Dspring.config.location=file:///config/ -jar myjarfile.jar" > ./start-spring-boot-app.sh"
CMD ["sh", "start-spring-boot-app.sh"]

最佳答案

Create ConfigMaps from Directories 中所述和 Create ConfigMaps from files , 当您使用 --from-file 创建 ConfigMap 时, 文件名成为存储在 ConfigMap 的数据部分中的键.文件内容成为键的值。

要按照您想要的方式进行,更好的方法是像这样创建 yml

apiVersion: v1
kind: ConfigMap
metadata:
  name: special-config
  namespace: default
data:
  SPECIAL_LEVEL: very
  SPECIAL_TYPE: charm

然后像这样申请:
kubectl create -f https://k8s.io/examples/configmap/configmap-multikeys.yaml

当 pod 运行时,命令 ls /config产生以下输出:
special.level
special.type

您所做的方式应该生成一个与原始文件同名的文件,其中包含文件的内容。

关于spring-boot - Kubernetes 目录 configMap 和 java 系统属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55223833/

相关文章:

kubernetes - 如何在每个月的第一个星期日运行 Kubernetes Cron Job?

spring-boot - 如何避免使用 Zuul 重定向到另一个主机?

java - 属性文件的spring boot外部配置

docker - 如何使用Rexster Docker镜像和灯泡在TinkerPop/Rextser中创建图形数据库?

docker - 如何在Mesos上使用Docker Swarm?

docker - 在我的kubernetes Pod中使用本地系统中的数据

java - 强制 Spring Boot @Scheduled 方法在失败时调用 "out of schedule"

java - ElasticSearch在Java中排序的条件

docker - 如何将命令行参数传递给 docker 镜像

docker - 在Pod中获取 “ErrImageNeverPull”