操作员在自定义资源中接收秘密的最佳实践

Best Practice for Operators to Receive Secrets in custom resource

我在 Google 上找不到任何答案,但我可能只是不知道要搜索哪些术语。

在 CRD 中,有没有办法在规范中定义一个秘密字段(因此不应以纯文本形式存储)?例如,如果自定义资源需要包含一个 API 令牌,那么您如何在 CRD 中定义它?

我的一个想法是让用户在 CRD 之外创建一个秘密,然后在自定义资源字段中提供秘密的名称,以便操作员可以根据需要从 K8s API 查询它需要(并且显然需要配置关联的 RBAC,以便操作员具有对 Secret 的读取权限)。因此 CRD 中的字段将只是一个普通字符串,即目标 Secret 的名称。

但是有没有更好的方法呢?关于这方面的现有最佳实践吗?

您确实只是将值存储在实际的 Secret 中并引用它。你会在整个 k8s 中发现相同的模式。然后在你的控制器代码中你得到你的自定义对象,找到引用,得到那个秘密,然后你就有了你的数据。