我应该将存储驱动程序 Secret 在我的集群中保留多长时间?

问题描述

我正在使用 helm 3.4.2 将我的图表升级到我的 AKS 集群,我看到每次部署新的东西时,它都会创建一个名为 sh.helm.v 的新机密......这是我第一次正在使用头盔。

我正在阅读文档,发现在 3.x 版 helm 使用秘密来存储驱动程序作为认值。很酷,但每次我部署它都会创建一个新的秘密,我现在确定这是否是将它全部保存在我的集群中的最佳方法

那么,我应该将所有这些都保留在我的集群中吗?就像,每次我部署一些东西时,它都会创建一个秘密并住在那里

我可以删除之前的最后一个吗?例如,现在部署 v5 并删除 v1、v2、v3,并出于某种原因保留 v4 和 v5。如果可以这样做,有没有人知道如何去做?使用 bash 或 kubectl?

非常感谢!

解决方法

是的,与 Helm2 相比,Helm3 几乎没有重大变化。

  1. Secrets are now used as the default storage driver

在 Helm 3 中,Secrets 现在用作默认存储驱动程序。 Helm 2 默认使用 ConfigMaps 来存储发布信息。在 Helm 2.7.0,一个新的存储后端,使用 Secrets 进行存储 发布信息已实施,现在是默认设置 从 Helm 3 开始。

还有

  1. Release Names are now scoped to the Namespace

在 Helm 3 中,有关特定版本的信息现在存储在 与发布本身相同的命名空间。有了这个更大的对齐 本机集群命名空间,helm list 命令不再列出所有 默认发布。相反,它只会列出 当前 kubernetes 上下文的命名空间(即显示的命名空间 当您运行 kubectl config view --minify 时)。这也意味着你必须 将 --all-namespaces 标志提供给 helm 列表以获得类似的行为 到掌舵 2。


那么,我应该将所有这些都保留在我的集群中吗?就像,每次我部署 有些东西,它创造了一个秘密并住在那里或 我可以删除之前的最后一个吗?

我不认为手动删除任何内容是一个好习惯。如果不是强制性的 - 最好不要碰它们。但是,如果您确定将来不需要旧版本,您可以删除未使用的版本。

#To check all secretes were created by helm:
kubectl get secret -l "owner=helm" --all-namespaces

#To delete revision you can simply remove appropriate secret..
kubectl delete secret -n <namespace> <secret-name>

顺便说一句(仅供参考),考虑到 Helm3 的范围仅限于命名空间这一事实 - 您可以简单地 delete deployment by deleting its corresponding namespace

最后一句,也许对以下情况有用:您可以将 --history-max 传递给 helm upgrade

限制每个版本保存的最大修订数量。使用 0 表示否 限制(默认 10)