kubernetes运算符,如何在描述中隐藏属性值



我正在编写一个k8s运算符。在我的CR文件中,我想获得密码并将其秘密存储。一切都很好,除了当我描述我的对象kubectl describe myKind myObject时,这个密码会打印在屏幕上。有没有办法从规范中隐藏特定的属性,或者至少显示***而不是实际值?就像secret一样,它只显示字节而不是实际值。

在我的属性// +kubebuilder:validation:Format=password之前添加了行。这在CRD文件中添加了format:password,但当我描述myObject时,它仍然会在控制台上打印所有Spec值。

编辑:所以更多地关注这个:

我的**_types.go密码是:

// DB username
DbUser string `json:"dbUser,required"`
// DB password
// +kubebuilder:validation:Format=password
DbPassword string `json:"dbPassword,required"`

所以我用dbUserdbPassword对k8s保密我有另一个选项可以要求用户创建一个秘密作为pre-req,但我对这种方法不满意。

提前谢谢。

您不应将密码/令牌等以明文形式存储在CR中。任何有权读取CR的人都可以看到它(无论k describe是否显示它(。

我建议更改CRD规范,这样用户就可以通过名称引用他们的秘密。用户需要创建一个opaque类型的秘密,然后创建一个看起来像这样的CR:

apiVersion: "grp/v1"
kind: "mykind"
metadata:
name: "my-kind-cr"
namespace: "default"
spec:
secretName: mysecret

秘密会是这样的:

apiVersion: v1
kind: Secret
metadata:
name: dbpassword
namespace: default
type: Opaque
stringData:
dbPassword: "my password"

最新更新