如何在不创建新docker镜像的情况下禁用spring应用程序中GCP项目的stackdriver日志记录

xeufq47z  于 12个月前  发布在  Spring
关注(0)|答案(1)|浏览(121)

我有一个spring应用程序打包在docker镜像中,并在GKE pod中运行。我想禁用stackdriver日志记录,但仅限于gke中的这个应用程序。我可以在spring应用程序中更改任何env变量/属性来禁用它吗?我正在使用这两个jar-

<dependency>
            <groupId>com.google.cloud</groupId>
            <artifactId>spring-cloud-gcp-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.cloud</groupId>
            <artifactId>spring-cloud-gcp-starter-logging</artifactId>
        </dependency>

字符串
我发现了一个方法,即将application.properties改为

spring.cloud.gcp.logging.enabled=false
stackdriver.log.level=OFF


但是为此,我必须创建一个新的docker镜像并重新部署。有什么方法可以直接在我的kubernetes yaml/env变量中执行吗?

更新-application.properties中的这两个变量只工作过一次(停止记录到stackdriver),现在又记录到stackdriver。奇怪的行为。

tp5buhyn

tp5buhyn1#

不需要重新构建容器映像。Spring应用程序可以从环境变量中提取应用程序属性。可能出于某种非常好的原因,名称需要重新Map。所以

spring.cloud.gcp.logging.enabled变为SPRING_CLOUD_GCP_LOGGING_ENABLED

你的k8s pod定义允许将环境变量作为容器规范的一部分传递(就像docker compose一样):

spec:
      containers:
      - name: my-container
        image: myimage:latest
        env:
        - name: SPRING_CLOUD_GCP_LOGGING_ENABLED
          value: false

字符串
使用以下命令将更改应用到pod。您的pod将重新启动。

kubectl apply -f <pod-definition-file.yaml>


stackdriver.log.level是留给你的。我不能保证这些都能关闭日志记录,只能保证这会更新应用程序属性,而不需要你重新构建容器。

相关问题