你正在查看的文档所针对的是 Kubernetes 版本: v1.31

Kubernetes v1.31 版本的文档已不再维护。你现在看到的版本来自于一份静态的快照。如需查阅最新文档,请点击 最新版本。

kube-apiserver 配置 (v1)

v1 包中包含 API 的 v1 版本。

资源类型

AdmissionConfiguration

AdmissionConfiguration 为准入控制器提供版本化的配置。

字段描述
apiVersion
string
apiserver.config.k8s.io/v1
kind
string
AdmissionConfiguration
plugins
[]AdmissionPluginConfiguration

plugins 字段允许为每个准入控制插件设置配置选项。

EncryptionConfiguration

EncryptionConfiguration 存储加密驱动的完整配置。它还允许使用通配符来指定应该被加密的资源。 使用 “*.<group>” 以加密组内的所有资源,或使用 “*.*” 以加密所有资源。 “*.” 可用于加密核心组中的所有资源。“*.*” 将加密所有资源,包括在 API 服务器启动后添加的自定义资源。 由于部分配置可能无效,所以不允许在同一资源列表中或跨多个条目使用重叠的通配符。 资源列表被按顺序处理,会优先处理较早的列表。

示例:

kind: EncryptionConfiguration
apiVersion: apiserver.config.k8s.io/v1
resources:
- resources:
  - events
  providers:
  - identity: {}  # 即使以下 *.* 被指定,也不会对事件加密
- resources:
  - secrets
  - configmaps
  - pandas.awesome.bears.example
  providers:
  - aescbc:
      keys:
      - name: key1
        secret: c2VjcmV0IGlzIHNlY3VyZQ==
- resources:
  - '*.apps'
  providers:
  - aescbc:
      keys:
      - name: key2
        secret: c2VjcmV0IGlzIHNlY3VyZSwgb3IgaXMgaXQ/Cg==
- resources:
  - '*.*'
  providers:
  - aescbc:
      keys:
      - name: key3
        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 字节。

AdmissionPluginConfiguration

出现在:

AdmissionPluginConfiguration 为某个插件提供配置信息。

字段描述
name [必需]
string

name 是准入控制器的名称。它必须与所注册的准入插件名称匹配。

path
string

path 是指向包含插件配置信息的配置文件的路径。

configuration
k8s.io/apimachinery/pkg/runtime.Unknown

configuration 是一个内嵌的配置对象,用来保存插件的配置信息。 如果存在,则使用这里的配置信息而不是指向配置文件的路径。

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

timeout 是 gRPC 调用到 KMS 插件的超时时间(例如 5s)。默认值为 3 秒。

Key

出现在:

Key 包含为转换器所提供的密钥的名称和 Secret。

字段描述
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 资源列表。 资源名称来源于组/版本/资源的 “resource” 或 “resource.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 字节。