kubernetes - 使用 Jenkins 通过 EKS 部署应用程序
问题描述
谁能告诉我使用 Jenkins 在 Kubernetes 或 EKS 集群上部署应用程序的部署流程。部署文件如何根据 docker 镜像的变化进行更新。如果我们有多个部署文件并且我们更改其中任何一个的任何图像。是否全部重新部署?
解决方案
谁能告诉我使用 Jenkins 在 Kubernetes 或 EKS 集群上部署应用程序的部署流程。
确保您的 Jenkins 实例具有 IAM 角色并更新了 kubeconfig,以便它可以访问 Kubernetes 集群。如果您考虑在 Kubernetes 集群上运行管道,Jenkins X或Tekton Pipelines可能是更好的为 Kubernetes 设计的替代方案。
部署文件如何根据 docker 镜像的变化进行更新。
将部署清单保存在版本控制中也是一个很好的做法,例如 Git。这可以在同一个存储库中,也可以在单独的存储库中。要在构建新映像后更新映像,请考虑使用yq。更新部署清单中的图像的示例yq
命令(一行):
yq write --inplace deployment.yaml 'spec.template.spec.containers(name==<myapp>).image' \
<my-registy-host>/<my-image-repository>/<my-image-name>:<my-tag-name>
如果我们有多个部署文件并且我们更改其中任何一个的任何图像。是否全部重新部署?
不,Kubernetes Yaml 是声明性的,因此它“了解”发生了什么变化,并且仅将必要的部署“驱动”到其“期望状态”——因为其他部署已经处于其“期望状态”。