kube-apiserver 加密配置(v1)

包 v1 是 API 的 v1 版本。

资源类型

EncryptionConfiguration

EncryptionConfiguration 为加密驱动保存完整的配置信息。 它还允许使用通配符指定应加密的资源。 使用 *.<group> 加密组内的所有资源,或使用 *.* 加密所有资源。 *. 可用于加密核心组内的所有资源。 *.* 将加密所有资源,甚至是 API 服务器启动后添加的自定义资源。 不允许在同一资源列表内或跨多个条目中使用重叠的通配符,因为部分配置将无效。 按顺序处理资源列表,列在前面的被优先处理。

例如:

  1. kind: EncryptionConfiguration
  2. apiVersion: apiserver.config.k8s.io/v1
  3. resources:
  4. - resources:
  5. - events
  6. providers:
  7. - identity: {} # do not encrypt events even though *.* is specified below
  8. - resources:
  9. - secrets
  10. - configmaps
  11. - pandas.awesome.bears.example
  12. providers:
  13. - aescbc:
  14. keys:
  15. - name: key1
  16. secret: c2VjcmV0IGlzIHNlY3VyZQ==
  17. - resources:
  18. - '*.apps'
  19. providers:
  20. - aescbc:
  21. keys:
  22. - name: key2
  23. secret: c2VjcmV0IGlzIHNlY3VyZSwgb3IgaXMgaXQ/Cg==
  24. - resources:
  25. - '*.*'
  26. providers:
  27. - aescbc:
  28. keys:
  29. - name: key3
  30. secret: c2VjcmV0IGlzIHNlY3VyZSwgSSB0aGluaw==
字段描述
apiVersion
string
apiserver.config.k8s.io/v1
kind
string
EncryptionConfiguration
resources [必需]
[]ResourceConfiguration

resources 是一个包含资源及其对应的加密驱动的列表。

AESConfiguration

出现在:

AESConfiguration 包含 AES 转换器的 API 配置信息。

字段描述
keys [必需]
[]Key

keys 是一组用于创建 AES 转换器的密钥。 对于 AES-CBC,每个密钥必须是 32 字节长;对于 AES-GCM,每个密钥可以是 16、24、32 字节长。

IdentityConfiguration

出现在:

IdentityConfiguration 是一个空的结构,用来支持在驱动配置中支持标识转换器。

KMSConfiguration

出现在:

KMSConfiguration 包含基于 KMS 的封套转换器的名称、缓存大小以及配置文件路径信息。

字段描述
apiVersion
string

KeyManagementService 的 apiVersion

name [必需]
string

name 是要使用的 KMS 插件名称。

cachesize
int32

cachesize 是可在内存中缓存的 Secret 数量上限。默认值是 1000。 将此字段设置为负值会禁用缓存。此字段仅允许用于 KMS v1 驱动。

endpoint [必需]
string

endpoint 是 gRPC 服务器的监听地址,例如 “unix:///var/run/kms-provider.sock”。

timeout
meta/v1.Duration

对 KMS 插件执行 gRPC 调用的超时时长(例如:’5s’)。默认值为 3 秒。

Key

出现在:

Key 中包含为某转换器所提供的键名和对应的私密数据。

字段描述
name [必需]
string

name 是在向磁盘中存储数据时使用的键名。

secret [必需]
string

secret 是实际的密钥,用 base64 编码。

ProviderConfiguration

出现在:

ProviderConfiguration 为加密驱动存储配置信息。

字段描述
aesgcm [必需]
AESConfiguration

aesgcm 是用于 AES-GCM 转换器的配置。

aescbc [必需]
AESConfiguration

aescbc 是用于 AES-CBC 转换器的配置。

secretbox [必需]
SecretboxConfiguration

secretbox 是用于基于 Secretbox 的转换器的配置。

identity [必需]
IdentityConfiguration

identity 是用于标识转换器的配置(空)。

kms [必需]
KMSConfiguration

kms 中包含用于基于 KMS 的封套转换器的名称、缓存大小以及配置文件路径信息。

ResourceConfiguration

出现在:

ResourceConfiguration 中保存资源配置。

字段描述
resources [必需]
[]string

resources 是必须要加密的 Kubernetes 资源的列表。 资源名称来自于组/版本/资源的 resourceresource.group。 例如:pandas.awesome.bears.example 是一个自定义资源, 具有 ‘group’: awesome.bears.example、’resource’: pandas。 使用 . 加密所有资源,使用 .<group> 加密特定组中的所有资源。 例如:.awesome.bears.example 将加密组 awesome.bears.example 中的所有资源。 例如:*. 将加密核心组中的所有资源(如 Pod、ConfigMap 等)。

providers [必需]
[]ProviderConfiguration

providers 是一个转换器列表,用来将资源写入到磁盘或从磁盘上读出。 例如:’aesgcm’、’aescbc’、’secretbox’、’identity’、’kms’。

SecretboxConfiguration

出现在:

SecretboxConfiguration 包含用于某 Secretbox 转换器的 API 配置。

字段描述
keys [必需]
[]Key

keys 是一个密钥列表,用来创建 Secretbox 转换器。每个密钥长度必须是 32 字节。