KubernetesSecretParameterProvider

文档中心 › 组件索引 › KubernetesSecretParameterProvider

KubernetesSecretParameterProvider Parameter Provider

类型全限定名:cn.org.acal.lynxus.parameter.KubernetesSecretParameterProvider

所属 Bundle:cn.org.acal.lynxus:lynxus-standard-nar:2.11.8

描述

从文件中获取参数,格式由 Kubernetes 挂载的密钥提供。参数组

标签

file

属性

下表中,加粗的属性为必填项;其余为可选项。表格同时标注默认值、是否支持表达式语言,以及是否为敏感属性(值会被加密)。

名称默认值可选值描述
参数组目录将映射到命名参数组的目录绝对路径的逗号分隔列表。每个包含文件的目录将映射到一个参数组,以路径中最内层目录命名。目录中的文件将映射到参数名称,其值为每个相应文件的内容。
参数值字节限制256 B参数值的最大字节大小。由于参数值是从文件内容中提取的,这是一种保护措施,可以防止包含大文件时出现内存问题。
参数值编码base64
  • Base64 — 文件内容经过 Base64 编码,在作为参数提供之前将被解码。
  • 纯文本 — 文件内容未经编码,将直接作为参数值提供。
指示参数值如何在参数文件内编码。

状态管理

该组件不存储状态。

受限 (Restricted)

该组件不受限。

详细说明

KubernetesSecretParameterProvider

从挂载的 Kubernetes Secret 文件派生参数

KubernetesSecretParameterProvider 将一个目录映射为一个以该目录命名的参数组,并把目录内的 文件映射为参数。每个文件的名称映射为一个参数名,文件的内容成为参数值。隐藏文件和嵌套目录会被忽略。

由于该 Provider 只是从本地文件读取参数值,它在很多场景下都有用,但与 Kubernetes 中挂载卷的 Secret 结构尤其契合。关于 Kubernetes Secret 的完整讨论超出了本文档的范围,不过简要的概述 足以说明这些 Secret 如何映射为参数组。

Kubernetes 挂载 Secret 示例

假设某个 Secret 配置如下:

data:
  admin_username: my-username (base64-encoded)
  admin_password: my-password (base64-encoded)
  access_key: my-key (base64-encoded)

假设某个 Deployment 的配置如下:

spec:
  volumes:
  - name: system-credentials
    secret:
    items:
      - key: admin_username
        path: sys.admin.username
      - key: admin_password
        path: sys.admin.password
      - key: access_key
        path: sys.access.key
        secretName: system-creds
        containers:
  - volumeMounts:
      - mountPath: /etc/secrets/system-credentials
        name: system-credentials
        readOnly: true

那么这个 Secret 在磁盘上会呈现如下形态:

$ ls /etc/secrets/system-credentials
sys.access.key sys.admin.password sys.admin.username

因此,要把这个 Secret 映射为填充名为 'system-credentials' 的参数上下文的参数组, 只需要为 KubernetesSecretParameterProvider 提供如下配置:

  • Parameter Group Directories - /etc/secrets/system-credentials

此时 'system-credentials' 参数上下文将包含以下参数:

  • sys.access.key - my-key
  • sys.admin.username - my-username
  • sys.admin.password - my-password