Kubernetes部署-外部化日志文件 [英] Kubernetes deployment - Externalizing log file

查看:24
本文介绍了Kubernetes部署-外部化日志文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有以下docker文件的Spring启动应用程序。

FROM docker.com/base/jdk1.8:latest

MAINTAINER Application Engineering [ https://docker.com/ ]

RUN mkdir -p /opt/docker/svc

COPY application/weather-service.war /opt/docker/svc/

CMD java -jar /opt/docker/svc/weather-service.war --spring.config.location=file:/conf/application.properties -Dlogging.config=/conf/logback.xml

我可以将Kubernetes configMap或Secrets用于应用程序.Properties,并使用卷装载选项,如下所示。

"spec": {
        "volumes": [
          {
            "name": "svc-prop",
            "configMap": {
              "name": "svc-app-config",
              "items": [
                {
                  "key": "application.properties",
                  "path": "application.properties"
                }
              ]
            }
          }
         ],
        "containers": [
          "volumeMounts": [
              {
                "name": "svc-prop",
                "mountPath": "/conf"
              }
         ]

我如何才能实现与logback.xml相同的功能。在这种情况下,我需要将机密用作文件吗?

我不想将logback.xml文件与映像捆绑在一起,因为我们可能会在运行时更改日志级别。

有没有其他更好的方法来在Kubernetes中保留Spring Boot应用的logback.xml?

推荐答案

您已经完成...当需要更新logback.xml时,使用ConfigMap,并使用kubectl EDIT更新ConfigMap。

当ConfigMap或Secret更新时,它最终会反映在容器内,如果进行了这样的配置,如通过scan,则应用程序最终会获取更改。如果不是,则需要重新启动Pod以获取更新的logback.xml。

为登录创建配置映射。

apiVersion: v1
kind: ConfigMap
metadata:
  name: logback-configmap
data:
  logback.xml: |+
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
      <include resource="org/springframework/boot/logging/logback/base.xml"/>
      <logger name="org.springframework.web" level="DEBUG"/>
    </configuration>

将配置映射指定为部署中的卷。

  volumes:
  - configMap:
      name: logback-configmap
    name: logback

在容器中装入配置映射卷。

    volumeMounts:
    - mountPath: /path/to/logback.xml
      name: logback

这篇关于Kubernetes部署-外部化日志文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆