kube-apiserver 配置 (v1)

包 v1 是 API 的 v1 版本。

资源类型

准入配置(AdmissionConfiguration)

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

字段描述
apiVersion
字符串
apiserver.config.k8s.io/v1
kind
字符串
准入配置(AdmissionConfiguration)
plugins
[]AdmissionPluginConfiguration

Plugins 允许为每个准入控制插件指定配置。

授权配置(AuthorizationConfiguration)

字段描述
apiVersion
字符串
apiserver.config.k8s.io/v1
kind
字符串
授权配置(AuthorizationConfiguration)
authorizers [必填]
[]AuthorizerConfiguration

Authorizers 是一个有序的授权器列表,用于授权针对请求的授权。这类似于 kube-apiserver 的 --authorization-modes 标志。必须至少有一个。

加密配置(EncryptionConfiguration)

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

示例

kind: EncryptionConfiguration
apiVersion: apiserver.config.k8s.io/v1
resources:
- resources:
  - events
  providers:
  - identity: {}  # do not encrypt events even though *.* is specified below
- 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
字符串
apiserver.config.k8s.io/v1
kind
字符串
加密配置(EncryptionConfiguration)
resources [必填]
[]ResourceConfiguration

resources 是一个包含资源及其相应加密提供程序的列表。

AESConfiguration

出现于

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

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

keys 是用于创建 AES 转换器的密钥列表。对于 AES-CBC,每个密钥必须为 32 字节长;对于 AES-GCM,每个密钥必须为 16、24 或 32 字节长。

AdmissionPluginConfiguration

出现于

AdmissionPluginConfiguration 提供单个插件的配置。

字段描述
name [必填]
字符串

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

path
字符串

Path 是包含插件配置的配置文件的路径。

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

Configuration 是一个嵌入式配置对象,用作插件的配置。如果存在,它将代替配置文件的路径使用。

AuthorizerConfiguration

出现于

字段描述
type [必填]
字符串

Type 指的是授权器的类型。“Webhook”在通用 API 服务器中受支持。其他 API 服务器可能支持其他授权器类型,如 Node、RBAC、ABAC 等。

name [必填]
字符串

用于描述 Webhook 的名称。这在监控机制中明确用于指标。注意:名称必须是 DNS1123 标签,例如 `myauthorizername` 或子域名,例如 `myauthorizer.example.domain`。必填,无默认值。

webhook [必填]
WebhookConfiguration

Webhook 定义 Webhook 授权器的配置。当 Type=Webhook 时必须定义。当 Type!=Webhook 时不得定义。

IdentityConfiguration

出现于

IdentityConfiguration 是一个空结构体,允许在提供程序配置中使用身份转换器。

KMSConfiguration

出现于

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

字段描述
apiVersion
字符串

KeyManagementService 的 apiVersion

name [必填]
字符串

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

cachesize
int32

cachesize 是在内存中缓存的密钥的最大数量。默认值为 1000。设置为负值以禁用缓存。此字段仅允许用于 KMS v1 提供程序。

endpoint [必填]
字符串

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

timeout
meta/v1.Duration

调用 kms-plugin 的 gRPC 超时时间(例如 5s)。默认为 3 秒。

Key

出现于

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

字段描述
name [必填]
字符串

name 是将数据存储到磁盘时要使用的密钥的名称。

secret [必填]
字符串

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。使用“*.*”加密所有资源,使用“*”加密特定组中的所有资源。例如:“*.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 字节长。

WebhookConfiguration

出现于

字段描述
authorizedTTL [必填]
meta/v1.Duration

缓存 Webhook 授权器“已授权”响应的持续时间。与设置 `--authorization-webhook-cache-authorized-ttl` 标志相同。默认值:5m0s

unauthorizedTTL [必填]
meta/v1.Duration

缓存 Webhook 授权器“未授权”响应的持续时间。与设置 `--authorization-webhook-cache-unauthorized-ttl` 标志相同。默认值:30s

timeout [必填]
meta/v1.Duration

Webhook 请求的超时时间。最大允许值为 30 秒。必填,无默认值。

subjectAccessReviewVersion [必填]
字符串

要发送到 Webhook 并期望从 Webhook 接收的 authorization.k8s.io SubjectAccessReview 的 API 版本。与设置 `--authorization-webhook-version` 标志相同。有效值:v1beta1、v1。必填,无默认值。

matchConditionSubjectAccessReviewVersion [必填]
字符串

matchConditionSubjectAccessReviewVersion 指定针对其评估 CEL 表达式的 SubjectAccessReview 版本。有效值:v1。必填,无默认值。

failurePolicy [必填]
字符串

控制当 Webhook 请求无法完成或返回格式错误的响应或评估 matchConditions 时出错时的授权决策。有效值:

  • NoOpinion:继续咨询后续授权器,以查看其中一个是否允许请求。
  • Deny:拒绝请求,而不咨询后续授权器。必填,无默认值。
connectionInfo [必填]
WebhookConnectionInfo

connectionInfo 定义了我们如何与 Webhook 通信。

matchConditions [必填]
[]WebhookMatchCondition

matchConditions 是必须满足才能将请求发送到此 Webhook 的条件列表。matchConditions 的空列表匹配所有请求。最多允许 64 个匹配条件。

确切的匹配逻辑是(按顺序):

  1. 如果至少一个 matchCondition 的计算结果为 FALSE,则跳过 Webhook。
  2. 如果所有 matchCondition 的计算结果为 TRUE,则调用 Webhook。
  3. 如果至少一个 matchCondition 的计算结果为错误(但没有一个是 FALSE):
    • 如果 failurePolicy=Deny,则 Webhook 拒绝请求。
    • 如果 failurePolicy=NoOpinion,则忽略错误并跳过 Webhook。

WebhookConnectionInfo

出现于

字段描述
type [必填]
字符串

控制 Webhook 应如何与服务器通信。有效值:

  • KubeConfigFile:使用 kubeConfigFile 中指定的文件来定位服务器。
  • InClusterConfig:使用集群内配置来调用 kube-apiserver 托管的 SubjectAccessReview API。kube-apiserver 不允许使用此模式。
kubeConfigFile [必填]
字符串

连接信息的 KubeConfigFile 路径。如果 connectionInfo.Type 为 KubeConfig,则必填。

WebhookMatchCondition

出现于

字段描述
expression [必填]
字符串

expression 表示将由 CEL 评估的表达式。必须计算结果为布尔值。CEL 表达式可以访问 v1 版本中 SubjectAccessReview 的内容。如果请求变量中 subjectAccessReviewVersion 指定的版本为 v1beta1,则在评估 CEL 表达式之前,内容将转换为 v1 版本。

  • “resourceAttributes”描述资源访问请求的信息,对于非资源请求,则未设置。例如,has(request.resourceAttributes) && request.resourceAttributes.namespace == 'default'。
  • “nonResourceAttributes”描述非资源访问请求的信息,对于资源请求,则未设置。例如,has(request.nonResourceAttributes) && request.nonResourceAttributes.path == '/healthz'。
  • “user”是要测试的用户。例如,request.user == 'alice'。
  • “groups”是要测试的组。例如,('group1' in request.groups)。
  • “extra”对应于身份验证器中的 user.Info.GetExtra() 方法。
  • “uid”是关于请求用户的信息。例如,request.uid == '1'。

CEL 文档:https://kubernetes.top/docs/reference/using-api/cel/

此页面自动生成。

如果您计划报告此页面的问题,请在问题描述中提及此页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。

上次修改时间:2024 年 12 月 12 日下午 5:37 PST:更新 v1.32 的配置 API (2914668152)