每天晚上我们都会运行一个夜间构建。部署一个“docker-compose”堆栈,一个测试docker容器运行测试。工作正常。
我们开始使用ArgoCD迁移到Kubernetes。
我们如何使用ArgoCD部署一组临时Kubernetes资源?因此,在Git配置文件中进行任何更改时,ArgoCD将在运行环境中更新一系列(例如20个)Kubernetes资源。
部署的临时性很重要,因为它降低了云环境中的资源成本(按使用付费)。
尝试1:在this Stackoverflow post中,建议将可部署资源的示例数设置为0。好的,这适用于有限的资源集。使用Helm图表可能会有所帮助。
尝试2:我们可以动态创建一个ArgoCD应用程序,这样它就会立即开始在运行时环境中创建Kubernetes资源集。一段时间后,这个ArgoCD应用程序应该被删除。可能,但这是一个好的方法吗?这是公司运行夜间构建的方式吗?应该有更好的方法。
尝试3:我们可以使用pull requests吗?可以使用tagging items吗?
我希望你能提出一个更好的解决方案!许多公司都会面临同样的挑战。
2条答案
按热度按时间n3schb8v1#
为了扩展Gaël J的评论,在ArgoCD中使用ApplicationSet controller和PR (Pull Request) generator是管理夜间构建的临时Kubernetes资源的实用方法。
ApplicationSet
允许您通过模板化定义一组应用程序。这允许基于模板创建多个应用程序。这意味着:
字符串
这样,每个PR都可以获得自己的一组资源,确保测试隔离。创建和删除临时资源的过程是基于PR操作自动化的。该方法可以很好地扩展多个PR和夜间构建。
但是.你需要确保你的Kubernetes集群有能力处理由PR创建的多个临时环境。你需要配置资源限制以防止过度消耗资源,以及监控应用程序的生命周期以确保及时完成清理。
例如,你可以在你的项目Git仓库中添加:
型
applicationset-nightly-builds.yaml
:型
jhkqcmku2#
建议使用sync window。由阻止或允许同步的时间段表示。它由类型(可以允许或拒绝)、cron格式的计划和持续时间以及一个或多个应用程序、命名空间和集群沿着定义。
argocd app get APP
检查。例如:的数据
字符串