2

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

在我的财产之前添加了一行// +kubebuilder:validation:Format=password。此添加格式:CRD 文件中的密码,但当我描述 myObject 时,它仍会在控制台上打印所有 Spec 值。

编辑:所以更多地说明这一点:

我的 **_types.go 片段是:

    // DB username
    DbUser string `json:"dbUser,required"`

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

所以我正在制作 k8s 的秘密,dbUserdbPassword 还有另一个选择要求用户创建一个秘密作为 pre-req,但我对这种方法不满意。

提前致谢。

4

1 回答 1

0

您不应该在 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"
于 2021-11-29T19:19:05.710 回答