乐趣区

关于devops:k8s-容器启动时传递镜像运行时参数

背景

咱们应用 springboot 打成的 jar 构建 docker 镜像上传到 barbor 镜像库之后,如果镜像中的参数产生了变动(springboot application.properties 中的启动参数变更),比方 mysql 的地址变更了。不用批改配置文件,从新打包上传,批改 k8s 容器启动配置文件,重新启动容器即可

Docker file 如下:

FROM harbor.ht.com/micro-service/openjdk:8-jre
MAINTAINER xxx xxx@imooc.com
 
COPY target/course-dubbo-service-1.0-SNAPSHOT.jar /course-service.jar
 
ENTRYPOINT ["java", "-jar", "/course-service.jar"]

在 springboot 中 jar 启动时批改配置文件中的参数,通过 “–key=value” 这种模式,在 k8s 中通过 args 参数给容器增加运行时参数, 这样咱们就批改了容器中我的项目的 mysql 和 zookeeper 的地址。原来容器中的启动命令“java -jar /course-service.jar”就变成了“java -jar /course-service.jar –key1=value1 –key2=value2”这个样子

通过以下命令强制重启 pod

kubectl replace --force -f course-service.yaml

通过以上配置,咱们就实现了容器构建和启动参数拆散,这样在启动参数变更的时候就不须要从新构建镜像了,缩短了 CI/CD 工夫,进步了生产效率。

退出移动版