首页 文章

我应该如何使用kubernetes管理部署

提问于
浏览
13

我希望找到一种很好的方法来自动化从kubernetes集群上的代码到已部署应用程序的过程 .

为了构建和部署我的应用程序,我需要首先构建docker镜像,标记它,然后将其推送到ECR . 然后,我需要使用docker镜像的新标签更新我的deployment.yaml,并使用kubectl apply -f deployment.yaml运行部署 .

这将在kubernetes集群上执行滚动部署,将pod更新为容器映像的新版本,一旦此部署完成,我可能需要执行其他特定于应用程序的操作,例如运行数据库迁移或缓存清除/升温可能需要也可能不需要为给定部署运行 .

我想我可以编写一个运行所有这些命令的shell脚本,并在我想要启动新部署时运行它,但我希望有一个更好/行业标准的方法来解决我错过的这些问题 .

当我写这个问题时,我注意到stackoverflow推荐这个问题:Kubernetes Deployments . 其中一个答案似乎暗示至少一些我正在寻找的东西即将推出kubernetes,但我想确保如果有一个更好的解决方案我现在可以使用,至少我知道它 .

3 回答

  • 0

    我的同事有一篇关于这个主题的好博文:

    http://blog.jonparrott.com/building-a-paas-on-kubernetes/

    基本上,Kubernetes不是一个平台即服务,它是一个工具包,您可以在其上构建自己的平台即服务 . 设计并不是很自以为是,而是专注于解决调度,网络和协调容器等一些棘手的问题,并让您在其上层出您的意见 .

    自动化您正在描述的工作流的最简单方法之一是使用Makefile .

    从此开始,您可以设计自己的微型PaaS,这是第一篇博文的作者在这里做的:

    https://github.com/jonparrott/noel

    或者,您可以参与更复杂的工作,在Kubernetes上构建开源PaaS,例如OpenShift:

    https://www.openshift.com/

    或Deis,它正在Kubernetes上 Build 类似Heroku的平台:

    https://deis.com/

    或Redspread,正在构建“Git for Kubernetes集群”:

    https://redspread.com/

    还有许多其他人在Kubernetes之上构建PaaS的例子 . 但我认为,如果有一个“行业标准”方式部署到Kubernetes将是一段很长的时间,因为一半的目的是为不同的用例启用多个部署工作流程 .

    我想要注意的是,就构建容器映像而言,Google Cloud Container Builder可以是一个有用的工具,因为您可以在任何时候推送到可以部署的存储库时使用它来自动构建映像 . 或者,詹金斯是automate CI/CD flows with Kubernetes的热门方式 .

  • 20

    我想我可以编写一个运行所有这些命令的shell脚本,并在我想要启动新部署时运行它,但我希望有更好的/行业标准方法来解决我错过的这些问题 .

    我为(Weaveworks)工作的公司以及该领域的其他人一直在倡导我们称之为GitOps的方法,请查看我们关于该主题的一系列博客文章:

    它的要点是你从CI推送图像,你检查的YAML清单在git中(通常是来自app代码的不同repo) . 然后,通过对帐运算符将具有清单的此回购应用于您的每个集群(dev / prod) . 你可以很容易地自动完成它,但也要看看we have built .


    免责声明:我是Kubernetes的贡献者和Weaveworks员工 . 我们构建开源和商业工具,帮助人们更快地使用Kubernetes进行 生产环境 .

  • 2

    我们正在开发一个名为Jenkins X的开源项目,该项目是Jenkins基金会的一个拟议子项目,旨在使用Jenkins和GitOps进行促销,在Kubernetes上自动化CI / CD .

    当您将更改合并到主分支时,Jenkins X会为您的应用创建一个新的语义版本分发(pom.xml,jar,docker image,helm chart) . 然后,管道自动生成Pull请求,以通过GitOps在所有环境中推广您的应用程序 .

    这里是a demo of how to automate CI/CD with multiple environments on Kubernetes using GitOps用于环境和Pull请求预览环境之间的促销 - 使用Spring Boot和nodejs应用程序(但我们支持许多语言框架) .

相关问题