在Kubernetes中使用完整的声明式方法

时间:2018-10-15 19:11:44

标签: kubernetes infrastructure-as-a-code

我们可以使用声明性的方法来使用kubectl apply -f创建和更新kubernetes资源,我们如何才能做到这一点来回收不再需要的资源。

我使用过kubectl delete,但这看起来很必要,有时我们需要按正确的顺序删除内容。

是否有一种始终使用kubectl apply的方法,它可以自行确定要保留哪些资源和删除哪些资源。就像在Terraform中一样。

或者我们应该得出结论,目前声明式方法仅适用于资源创建和更新。

用例:

例如,我们决定不向最终用户提供K8S API,而是为他们提供一个存储库,供他们保存和更新yaml文件,合并合并请求后,bot可以在每次更新时将其应用到群集。因此,我们也需要此声明性删除,以便我们不必在用户之后清理内容。 Terraform提供者也许是解决方案,但是在那种情况下,事情将锁定在地形上,用户将需要学习另外一种工具,而不是使用本机k8s格式。

1 个答案:

答案 0 :(得分:1)

结果表明,他们添加了一种声明性方法来修剪yaml清单中不再存在的资源:

kubectl apply -f <directory/> --prune -l your=label

尽管有太多注意事项。

  

作为kubectl删除的替代方法,您可以使用kubectl应用于   在配置文件包含后,标识要删除的对象   已从目录中删除。与--prune一起应用查询API   服务器,用于匹配一组标签的所有对象,并尝试进行匹配   针对该对象返回的活动对象配置   配置文件。如果对象与查询匹配,则不匹配   在目录中有一个配置文件,并且有一个   最后应用的配置注释,将其删除。