k8s自动化编排工作流

k8s自动化编排工作流

如何在每次推送时自动化Kubernetes版本?

技术开发 编程 技术框架 技术发展

 

k8s自动化编排工作流

如何在每次推送时自动化Kubernetes版本?

Kubernetes是用于部署,扩展和运行应用程序的基于容器的平台。Buddy使您可以通过一系列专用的K8s动作使Kubernetes交付工作流程自动化。

image.png

每次更改应用程序代码或Kubernetes配置时,都有两个选项来更新集群:kubectl apply或kubectl set image。

在这种情况下,您的工作流程通常如下所示:

  • 编辑代码或配置.YML

  • 将其推送到您的Git存储库

  • 构建一个新的Docker映像

  • 推送Docker映像

  • 登录到您的K8s集群

  • 运行kubectl apply或kubectl set image

使用Buddy,您可以通过简单地按一下Git来避免大多数这些步骤!:)

本指南中使用的操作:

  • 构建Docker映像

  • 推送Docker映像

  • 运行Kubernetes作业

  • 设置Kubernetes映像

  • 应用Kubernetes部署

如何在每次推送时自动化Kubernetes版本

Buddy是一个持续交付工具,可用于自动执行整个K8s发布工作流程,包括:

  • 管理K8s部署的配置更改

  • 部署代码更改

  • 管理Dockerfile更新

  • 构建Docker映像并将其推送到Docker注册表

  • 在您的K8s集群上应用新映像

如果您经常使用kubectl apply或kubectl set image,这是给您的!

配置交付管道

添加新管道,将触发模式设置为每次按下,然后选择将触发管道的分支

image.png

添加构建Docker映像操作。将选项卡切换到选项,然后从Docker注册表下的下拉列表中选择Docker Hub 。选择Dockerfile路径,Docker存储库以及您要推送的映像的名称。

image.png

根据您的方案,添加“设置K8s映像”或“应用K8s部署”操作

您可以将标签的修订版本号与环境变量一起使用。

方案1:如果您使用kubectl设置图像,请执行“设置K8s图像”操作:

选择应更换的容器以及要使用的图像。确保输入上面步骤2中的图像名称和标签。

Buddy将关闭正在运行的节点,并使用新的映像版本将它们重新打开。

如果您使用的标记在每次执行时都保持不变(例如branchName),但与“最新”标记不同,请确保将提取策略设置为“始终”。了解有关更新图像的更多信息。

image.png

方案2:如果您使用kubectl apply,请执行Apply K8s Deployment操作:

随着YAML配置或应用程序代码中的每一次更改,Buddy将应用部署,并且Kubernetes将开始将容器转换为所需状态。

该操作将等待部署状态,并检查其部署状态。如果发生任何错误,则管道将以“失败”的形式停止。

image.png

如何自动运行Kubernetes Pod或作业

如果您经常在容器中运行任务,例如:

  • 新版本部署期间的数据库迁移

  • 备份

  • 批处理作业,例如 为新版本的应用程序创建目录结构

您可以使用广告连播或工作。第一种启动带有任务的单个吊舱;第二种启动任务。第二个将启动一系列Pod,直到其中指定数量的Pod以成功状态结束。

用于运行Kubernetes Pod或作业的管道配置

假设您在K8s集群上有一个应用程序,并且存储库包含以下内容:

您的应用程序的源代码

  • Dockerfile,其中包含有关创建应用程序映像的说明

  • 数据库迁移脚本

  • Dockerfile,其中包含有关创建映像的说明,该映像将在部署期间运行迁移(数据库迁移运行程序)

在这种情况下,您可以配置管道,该管道将:

A.构建应用程序并迁移图像(第一个动作)

B.将它们推送到Docker Hub(第二步)

image.png

C.使用先前构建的映像触发数据库迁移(第三步)。您可以使用YAML文件定义映像,命令和部署:

image.png

推送后,管道将自动生成映像并将其推送到存储库并运行迁移脚本。多么酷啊?

作业动作将等待,直到命令执行完毕。如果退出状态不同于0,则该操作将被标记为“失败”

D.最后一个动作是使用“应用K8s部署”或“设置K8s映像”来更新K8s应用程序中的映像。添加动作后,整个管道将如下所示:

image.png

一切就绪后,再次推动,观察Buddy自动执行整个工作流程。

技术开发 编程 技术框架 技术发展