当 AWS CodeBuild 生成新的容器映像时强制在 Rancher 上进行部署

当 AWS CodeBuild 生成新的容器映像时强制在 Rancher 上进行部署

我在 AWS EKS 上运行 Rancher 2.5 集群。我的 CI 是在 CodeBuild 中通过 Webhook 到 Github 存储库完成的。buildspec.yml 可以很好地运行构建、标记容器,然后将它们发送到我在 AWS ECR 上的私有注册表,但我还没有找到一种简单的方法来触发集群上的部署更新,让它知道有新的容器版本可用。我该怎么做?

答案1

为此,您必须从 Rancher 获取 kubeconfig 文件,并将其放在 CodeBuild 克隆的 github 存储库中的某个位置。接下来,修改 buildspec.yml 文件以添加一个或多个命令构建已成功完成,图像已被标记推送到注册表,将容器部署到集群。大多数情况下,这意味着这将发生在 buildspec.yml 文件的 post_build 部分的最后。如下所示:

- kubectl set image deployment <your_deployment> <your_deployment>=<docker_registry_or_your_private_registry>/<your_container>:<the_tag_you_just_created> --record=true --kubeconfig=<location_of_kubeconfig_in_the_repo>

这将触发更改,但请记住新标签必须与部署当前正在运行的标签不同否则,什么都不会发生,因为如果标签相同,K8S 认为不需要部署。这就是为什么使用:latest标签不会起作用,而且首先这是一个坏主意。

相关内容