k8s自动化编排工作流
如何在每次推送时自动化Kubernetes版本?
Kubernetes是用于部署,扩展和运行应用程序的基于容器的平台。Buddy使您可以通过一系列专用的K8s动作使Kubernetes交付工作流程自动化。
每次更改应用程序代码或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,这是给您的!
配置交付管道
添加新管道,将触发模式设置为每次按下,然后选择将触发管道的分支
添加构建Docker映像操作。将选项卡切换到选项,然后从Docker注册表下的下拉列表中选择Docker Hub 。选择Dockerfile路径,Docker存储库以及您要推送的映像的名称。
根据您的方案,添加“设置K8s映像”或“应用K8s部署”操作
您可以将标签的修订版本号与环境变量一起使用。
方案1:如果您使用kubectl设置图像,请执行“设置K8s图像”操作:
选择应更换的容器以及要使用的图像。确保输入上面步骤2中的图像名称和标签。
Buddy将关闭正在运行的节点,并使用新的映像版本将它们重新打开。
如果您使用的标记在每次执行时都保持不变(例如branchName),但与“最新”标记不同,请确保将提取策略设置为“始终”。了解有关更新图像的更多信息。
方案2:如果您使用kubectl apply,请执行Apply K8s Deployment操作:
随着YAML配置或应用程序代码中的每一次更改,Buddy将应用部署,并且Kubernetes将开始将容器转换为所需状态。
该操作将等待部署状态,并检查其部署状态。如果发生任何错误,则管道将以“失败”的形式停止。
如何自动运行Kubernetes Pod或作业
如果您经常在容器中运行任务,例如:
新版本部署期间的数据库迁移
备份
批处理作业,例如 为新版本的应用程序创建目录结构
您可以使用广告连播或工作。第一种启动带有任务的单个吊舱;第二种启动任务。第二个将启动一系列Pod,直到其中指定数量的Pod以成功状态结束。
用于运行Kubernetes Pod或作业的管道配置
假设您在K8s集群上有一个应用程序,并且存储库包含以下内容:
您的应用程序的源代码
Dockerfile,其中包含有关创建应用程序映像的说明
数据库迁移脚本
Dockerfile,其中包含有关创建映像的说明,该映像将在部署期间运行迁移(数据库迁移运行程序)
在这种情况下,您可以配置管道,该管道将:
A.构建应用程序并迁移图像(第一个动作)
B.将它们推送到Docker Hub(第二步)
C.使用先前构建的映像触发数据库迁移(第三步)。您可以使用YAML文件定义映像,命令和部署:
推送后,管道将自动生成映像并将其推送到存储库并运行迁移脚本。多么酷啊?
作业动作将等待,直到命令执行完毕。如果退出状态不同于0,则该操作将被标记为“失败”
D.最后一个动作是使用“应用K8s部署”或“设置K8s映像”来更新K8s应用程序中的映像。添加动作后,整个管道将如下所示:
一切就绪后,再次推动,观察Buddy自动执行整个工作流程。