Maven 如何将应用程序增量部署到kubernetes

Maven 如何将应用程序增量部署到kubernetes,maven,jenkins,kubernetes,Maven,Jenkins,Kubernetes,我尝试使用jenkins为自己的microservice项目设置连续部署,该项目被组织为多模块maven项目(每个子模块代表一个micro服务)。我在jenkins中使用“增量构建-仅构建更改的模块”来避免不必要的构建,然后使用docker maven插件来构建docker映像。但是,如何将更改后的映像重新部署到kubernetes群集?您可以使用本地docker映像注册表。 docker run-d-p 5000:5000--restart=always--name注册表:2 然后,您可以将

我尝试使用jenkins为自己的microservice项目设置连续部署,该项目被组织为多模块maven项目(每个子模块代表一个micro服务)。我在jenkins中使用“增量构建-仅构建更改的模块”来避免不必要的构建,然后使用docker maven插件来构建docker映像。但是,如何将更改后的映像重新部署到kubernetes群集?

您可以使用本地docker映像注册表。
docker run-d-p 5000:5000--restart=always--name注册表:2
然后,您可以将开发映像作为构建步骤推送到该注册表,并使kubernetes容器使用该注册表

准备好后,将映像推送到生产映像注册表,并调整容器清单以使用正确的注册表


有关专用注册表服务器的详细信息:

您可以使用本地docker image注册表。
docker run-d-p 5000:5000--restart=always--name注册表:2
然后,您可以将开发映像作为构建步骤推送到该注册表,并使kubernetes容器使用该注册表

准备好后,将映像推送到生产映像注册表,并调整容器清单以使用正确的注册表


有关专用注册表服务器的详细信息:

目前Kubernetes没有为此提供适当的解决方案。但[这里]提到的解决办法很少:

我喜欢这个“通过更改图像以外的内容来假装对部署的更改”。我们可以这样做:


在部署清单中定义环境变量“TIMESTAMP”及其任何值。在CI\CD管道中,我们将该值设置为当前时间戳,然后将更新后的清单传递给“kubectl apply”。通过这种方式,我们假装进行了更改,kubernetes将提取最新映像并部署到集群。请确保设置了“imagePullPolicy:always”。

目前Kubernetes没有为此提供适当的解决方案。但[这里]提到的解决办法很少:

我喜欢这个“通过更改图像以外的内容来假装对部署的更改”。我们可以这样做:


在部署清单中定义环境变量“TIMESTAMP”及其任何值。在CI\CD管道中,我们将该值设置为当前时间戳,然后将更新后的清单传递给“kubectl apply”。通过这种方式,我们假装进行了更改,kubernetes将提取最新映像并部署到集群。请确保设置了“imagePullPolicy:always”。

谢谢您的回复。也许我没有清楚地描述我的问题。例如,我创建了一个maven项目a,它有两个子模块A1和A2。如果我在A1中提交更改,它将在jenkins中触发项目a的ci工作流,然后maven将执行增量构建并创建A1的新docker映像。注意,A2没有变化。但是,有没有一种简单的方法可以知道哪个docker映像已更改,需要重新部署到我的kubernetes群集?现在如何将这些映像部署到群集?在我的开发环境中,我可以手动执行comman“kubectl create”或“kubectl apply”来部署我的POD和服务。但在CI/CD工作流中,我需要根据提交到git存储库的更改自动部署或重新部署它们。但是也许你可以把以前的图片的散列存储在jenkins工件的某个地方,在自定义构建步骤中将其与最新图片进行比较,如果它们不匹配,则应用或创建pod?谢谢你的回复。也许我没有清楚地描述我的问题。例如,我创建了一个maven项目a,它有两个子模块A1和A2。如果我在A1中提交更改,它将在jenkins中触发项目a的ci工作流,然后maven将执行增量构建并创建A1的新docker映像。注意,A2没有变化。但是,有没有一种简单的方法可以知道哪个docker映像已更改,需要重新部署到我的kubernetes群集?现在如何将这些映像部署到群集?在我的开发环境中,我可以手动执行comman“kubectl create”或“kubectl apply”来部署我的POD和服务。但在CI/CD工作流中,我需要根据提交到git存储库的更改自动部署或重新部署它们。但是也许你可以把以前的图片的散列存储在jenkins工件的某个地方,在定制的构建步骤中将其与最新的图片进行比较,如果它们不匹配,应用或创建pod?