问题
最近在 k8s 中发布项目的时候出现了这样一个问题,当时我在项目(要发布的项目)对应的 YAML 文件中增加了几个环境变量(项目中需要用到的),通过对该项目对应的 Deployment 资源的环境变量 DEPLOY_TAG 的修改,达到重新部署项目的目的。由于项目启动的时候,有一段逻辑是要对新增加的环境变量进行处理,结果这段逻辑报错,提示信息为环境变量的值为空。
原因
我修改的是 Deployment 对应的 YAML 文件(加入新增的环境变量),而重新发布的时候是通过直接修改 k8s 中的 Deployment 资源的环境变量(kubectl set env deploy …),k8s 中的 Deployment 资源并不知道我在YAML 文件中做的修改,所以即便重启,也不会有任何效果。
解决
最简单、直接、暴力的方案,就是删除正在运行的 Deployment,然后依据已修改的 YAML 文件建立一个新的Deployment。