我尝试使用jenkins为自己的微服务项目设置持续部署,该项目被组织为多模块maven项目(每个子模块代表一个微服务)。我使用"增量构建 - 仅构建已更改的模块"在jenkins中避免使用unnessary构建,然后使用docker-maven-plugin构建docker镜像。但是,我怎么能只将已更改的映像重新部署到kubernetes集群?
答案 0 :(得分:0)
您可以使用本地docker镜像注册表。
docker run -d -p 5000:5000 --restart=always --name registry registry:2
然后,您可以将开发映像作为构建步骤推送到此注册表,并使您的kubernetes容器使用此注册表。
准备好后,将图像推送到生产图像注册表并调整容器清单以使用正确的注册表。
有关私人注册服务器的更多信息:https://docs.docker.com/registry/deploying/
答案 1 :(得分:0)
当前,Kubernetes没有为此提供适当的解决方案。但是[here]提到的解决方法很少:https://github.com/kubernetes/kubernetes/issues/33664
我喜欢这样的“通过更改映像以外的内容来对部署进行更改”。我们可以这样:
定义环境变量说“ TIMESTAMP”及其在部署清单中的任何值。在CI \ CD管道中,我们将该值设置为当前时间戳,然后将此更新的清单传递给“ kubectl apply”。这样,我们伪造了一个更改,而kubernetes将提取最新的映像并部署到集群。请确保已设置“ imagePullPolicy:始终”。