使用Github pull-request自动部署Kubernetes

58次阅读
没有评论

问题描述

希望找到一个类似于Heroku Review Apps的工具或服务,使用Google服务实现类似的功能。具体要求如下:
– 当在Github上创建一个新的pull-request时:
– 使用给定的模板配置为其创建一个新的Cloud Build触发器。
– 构建完成后,在Kubernetes Engine中使用给定的模板配置为其创建一个新的部署。
– 在Github的pull-request中提供公共URL。
– 当pull-request关闭时:
– 删除触发器、容器和部署。
– 从Github的pull-request中删除公共URL。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

目前没有一个特定的工具可以满足你的需求,但是我在OKD Kubernetes上设置了很多Webhook处理程序,用于进行基于Git的Kubernetes更新。所有的脚本都在GitHub上,名为OCD。我使用的工具有:
1. adnanh/webhook:一个Go二进制文件,你可以配置它来捕获Git Webhook并运行脚本。这是我的hooks.json配置文件,用于匹配GitHub的发布事件并在OpenShift Kubernetes上运行构建脚本。根据文档,你可以匹配PR事件,因此你应该能够设置Webhook在PR上触发并触发s2i构建。
2. hub:GitHub的官方命令行工具。我将它放在我的工具镜像中,用于运行我的Webhook。它有一些pull request命令,我还没有根据你的需求进行检查。Hub只是他们API的一个包装器,所以最坏的情况下,你需要使用curl来更新PR。
3. Helm:我用于创建应用程序的安装程序/模板引擎。Helmfile是一个很好的扩展。这是一个通用的“deployer”Helm chart,可以启动一个部署。因此,OCD对新的Helmfile声明性配置的GitHub事件做出响应,并部署或更新在git中修改的任何helm releases。

对于构建,我需要做很多工作,以使OKD容器构建使用GitHub发布标签标记最终的容器映像,这是一个通用的“ocd-release-build”Helm chart。我认为这是必要的,因为每个PR都需要在容器注册表中使用PR编号标记,以从特定的标签部署。我从未尝试过让OKD构建一个refs/pull,但如果它不能按预期工作,我会感到震惊。

虽然OCD目前还没有根据PR事件启动构建和部署,但它似乎可以扩展到实现这一点。我们已经将我们的应用程序从我们的内部脚本迁移到了OCD上。”PR预览”功能可能是一个非常酷的功能。欢迎提出功能请求。

方案2

我还没有亲自尝试过,但k8s-deploy看起来很有前途。其他潜在的产品我还没有尝试过:
argo-cd
gitkube
kubernetes-github-authn
我打算评估这些工具,希望你也能尝试一下,并回复这篇文章。一旦我找到一个好用的工具,我会告诉你。

以上是两种解决方案,你可以根据自己的需求选择适合的工具或方法来实现自动部署Kubernetes。

正文完